Skip to content
Snippets Groups Projects
Verified Commit e8d89354 authored by nd's avatar nd
Browse files

add support to edit roles and recalculate members groups

parent 8e73775e
No related branches found
No related tags found
No related merge requests found
...@@ -23,6 +23,11 @@ class Role(db.Model): ...@@ -23,6 +23,11 @@ class Role(db.Model):
def get_for_user(cls, user): def get_for_user(cls, user):
return Role.query.join(Role.members, aliased=True).filter_by(dn=user.dn) return Role.query.join(Role.members, aliased=True).filter_by(dn=user.dn)
def member_ldap(self):
result = []
for dn in self.member_dns():
result.append(User.from_ldap_dn(dn))
return result
def member_dns(self): def member_dns(self):
return list(map(attrgetter('dn'), self.members)) return list(map(attrgetter('dn'), self.members))
def add_member(self, member): def add_member(self, member):
......
...@@ -57,10 +57,14 @@ def update(roleid=False): ...@@ -57,10 +57,14 @@ def update(roleid=False):
elif group.dn in role_group_dns: elif group.dn in role_group_dns:
role.del_group(group) role.del_group(group)
# usergroups = set() members = role.member_ldap()
# for role in Role.get_for_user(user).all(): for user in members:
# usergroups.update(role.group_dns()) usergroups = set()
# user.replace_group_dns(usergroups) for role in Role.get_for_user(user).all():
usergroups.update(role.group_dns())
user.replace_group_dns(usergroups)
if not user.to_ldap():
flash('updating group membership for user {} failed'.format(user.loginname))
session.commit() session.commit()
return redirect(url_for('role.index')) return redirect(url_for('role.index'))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment