Beispiel #1
0
    def listUserGroups(self, req, u):
        member_of_names = list(u.member_of())
        session_user = req.session['user']
        if session_user['is_admin']:
            asking_user = user.User(session_user['name'])
            nonmember_of = []
            groupnames = group.list(asking_user)
            for groupname in groupnames:
                if groupname not in member_of_names:
                    nonmember_of.append(groupname)

            return XMLTemplateResponse(
                "ajax/usermemberof.xml", {
                    "memberof": member_of_names,
                    "nonmemberof": nonmember_of,
                    "user": u.name
                })

        if session_user['name'] != u.name:
            return XMLStatusResponse(
                'listUserGroups', False, "You do not have permission to "
                "view this user.")

        return XMLTemplateResponse("ajax/usermemberof.xml", {
            "memberof": member_of_names,
            "nonmemberof": [],
            "user": u.name
        })
 def testRemoveGroup(self):
     group.add("foo")
     foo = group.Group("foo")
     fake_admin = Mock()
     fake_admin.is_admin = True
     foo.remove()
     self.assert_("foo" not in [x.name for x in group.list(fake_admin)])
Beispiel #3
0
    def getpermissions(self, req, repos):
        session_user = req.session['user']
        asking_user = user.User(session_user['name'])
        path = req.post.get('getPermissions')
        branch_or_path = Path(path)
        if not repos.has_path_permissions:
            branch_or_path = branch_or_path.lstrip('/')

        perms = permissions.list_by_path(repos.name, repos.vcs_type, path)

        usernames = []
        if 'userlist' in req.post:
            usernames = user.list(asking_user)

        groupnames = []
        if 'grouplist' in req.post:
            groupnames = group.list(asking_user)

        templatevars = {
            'perms': perms,
            'repository': repos.name,
            'path': branch_or_path,
            'usernames': usernames,
            'groupnames': groupnames
        }
        return XMLTemplateResponse('ajax/repositoryperms.xml', templatevars)
def export_authz(**kwargs):
    """Export authorization/authentication info"""
    # XXX the import here is to prevent a circular import :( design problem!
    from .repository import list as list_repos

    authz_filename = options.env_path("svn_authz_file")
    authz = codecs.open(str(authz_filename), "w+", "utf-8")

    # Write all groups
    authz.write("[groups]\n")
    for groupname in group.list(FakeAdminUser()):
        g = group.Group(groupname)
        authz.write("%s = %s\n" % (groupname, ', '.join(g.members())))
    authz.write("\n")

    # Write all repositories and their permissions
    for repository in list_repos():
        if repository["status"] != "ok":
            continue

        for path in permissions.list_paths(repository["name"], "svn"):
            authz.write("[%s:%s]\n" % (repository["name"], path))

            for perm in permissions.list_by_path(repository["name"], "svn",
                                                 path):
                if perm["type"] == "group":
                    authz.write("@")
                authz.write("%s = %s\n" % (perm["name"], perm["permission"]))
            authz.write("\n")

    authz.close()
Beispiel #5
0
	def listGroups(self, req):
		try:
			groupnames = group.list(user.User(req.session['user']['name']))
			return XMLTemplateResponse("ajax/listgroups.xml", {'groupnames': groupnames})
		except Exception as e:
			raise
			return XMLStatusResponse('listGroups', False, 'Failed to get a list: %s' % e)
Beispiel #6
0
	def testRemoveGroup(self):
		group.add("foo")
		foo = group.Group("foo")
		fake_admin = Mock()
		fake_admin.is_admin = True
		foo.remove()
		self.assert_("foo" not in [x.name for x in group.list(fake_admin)])
Beispiel #7
0
def export_authz(**kwargs):
	"""Export authorization/authentication info"""
	# XXX the import here is to prevent a circular import :( design problem!
	from .repository import list as list_repos

	authz_filename = options.env_path("svn_authz_file")
	authz = codecs.open(str(authz_filename), "w+", "utf-8")

	# Write all groups
	authz.write("[groups]\n")
	for groupname in group.list(FakeAdminUser()):
		g = group.Group(groupname)
		authz.write("%s = %s\n" % (groupname, ', '.join(g.members())))
	authz.write("\n")

	# Write all repositories and their permissions
	for repository in list_repos():
		if repository["status"] != "ok":
			continue

		for path in permissions.list_paths(repository["name"], "svn"):
			authz.write("[%s:%s]\n" % (repository["name"], path))

			for perm in permissions.list_by_path(repository["name"], "svn", path):
				if perm["type"] == "group":
					authz.write("@")
				authz.write("%s = %s\n" % (perm["name"], perm["permission"]))
			authz.write("\n")

	authz.close()
Beispiel #8
0
	def listUserGroups(self, req, u):
		member_of_names = list(u.member_of())
		session_user = req.session['user']
		if session_user['is_admin']:
			asking_user = user.User(session_user['name'])
			nonmember_of = []
			groupnames = group.list(asking_user)
			for groupname in groupnames:
				if groupname not in member_of_names:
					nonmember_of.append(groupname)
			
			return XMLTemplateResponse("ajax/usermemberof.xml",
					{"memberof": member_of_names,
						"nonmemberof": nonmember_of, "user": u.name})

		if session_user['name'] != u.name:
			return XMLStatusResponse('listUserGroups', False, "You do not have permission to "
					"view this user.")

		return XMLTemplateResponse("ajax/usermemberof.xml",
				{"memberof": member_of_names, "nonmemberof": [],
					"user": u.name})
Beispiel #9
0
	def getpermissions(self, req, repos):
		session_user = req.session['user']
		asking_user = user.User(session_user['name'])
		path = req.post.get('getPermissions')
		branch_or_path = Path(path)
		if not repos.has_path_permissions:
			branch_or_path = branch_or_path.lstrip('/')

		perms = permissions.list_by_path(repos.name,
				repos.vcs_type, path)

		usernames = []
		if 'userlist' in req.post:
			usernames = user.list(asking_user)

		groupnames = []
		if 'grouplist' in req.post:
			groupnames = group.list(asking_user)

		templatevars = {'perms': perms, 'repository': repos.name,
			'path': branch_or_path, 'usernames': usernames,
			'groupnames': groupnames}
		return XMLTemplateResponse('ajax/repositoryperms.xml', templatevars)
Beispiel #10
0
    u"Ч": "CH",
    u"Ш": "SH",
    u"Щ": "SHCH",
    u"Ы": "Y",
    u"Э": "E",
    u"Ю": "IU",
    u"Я": "IA"
}

not_allowed_characters = re.compile('[^a-zA-Z0-9\-\/]')
permission_to_name = {'rw': 'rw', 'r': 'ro', '': 'no'}
report = len(sys.argv) > 0 and 'report' in sys.argv
verbose = len(sys.argv) > 0 and 'verbose' in sys.argv
verboseprint = print if verbose else lambda *a, **k: None

groups = group.list(user.FakeAdminUser())


def get_correct_groupname(permission_by_group):
    """Returns correct groupname"""
    permission = permission_to_name[permission_by_group['permission']]
    path = '%s%s' % (permission_by_group['repository'],
                     permission_by_group['path']
                     if permission_by_group['path'] != '/' else '')
    path = path.lower()

    for key in ru_lat:
        path = path.replace(key, ru_lat[key])

    path = re.sub(not_allowed_characters, '', path)
    path = re.sub('/', '_', path)
Beispiel #11
0
 def testNonEmptyList(self):
     group.add("test")
     fake_admin = Mock()
     fake_admin.is_admin = True
     self.assertEquals([g for g in group.list(fake_admin)], ["test"])
Beispiel #12
0
 def testEmptyList(self):
     fake_admin = Mock()
     fake_admin.is_admin = True
     self.assertEquals(group.list(fake_admin), [])
Beispiel #13
0
	def testNonEmptyList(self):
		group.add("test")
		fake_admin = Mock()
		fake_admin.is_admin = True
		self.assertEquals([g for g in group.list(fake_admin)], ["test"])
Beispiel #14
0
	def testEmptyList(self):
		fake_admin = Mock()
		fake_admin.is_admin = True
		self.assertEquals(group.list(fake_admin), [])