mirror of https://github.com/jumpserver/jumpserver
feat: 支持LDAP用户组变更时,JS同步变更
parent
6017f804a6
commit
73db1bf50c
|
@ -426,7 +426,21 @@ class LDAPImportUtil(object):
|
|||
return errors
|
||||
|
||||
@staticmethod
|
||||
def bind_org(org, users, group_users_mapper):
|
||||
def exit_user_group(user_groups_mapper):
|
||||
# 通过对比查询本次导入用户需要移除的用户组
|
||||
group_remove_users_mapper = defaultdict(set)
|
||||
for user, current_groups in user_groups_mapper.items():
|
||||
old_groups = set(user.groups.all())
|
||||
exit_groups = old_groups - current_groups
|
||||
logger.debug(f'Ldap user {user} exits user groups {exit_groups}')
|
||||
for g in exit_groups:
|
||||
group_remove_users_mapper[g].add(user)
|
||||
|
||||
# 根据用户组统一移除用户
|
||||
for g, rm_users in group_remove_users_mapper.items():
|
||||
g.users.remove(*rm_users)
|
||||
|
||||
def bind_org(self, org, users, group_users_mapper):
|
||||
if not org:
|
||||
return
|
||||
if org.is_root():
|
||||
|
@ -436,11 +450,15 @@ class LDAPImportUtil(object):
|
|||
org.add_member(user)
|
||||
# add user to group
|
||||
with tmp_to_org(org):
|
||||
user_groups_mapper = defaultdict(set)
|
||||
for group_name, users in group_users_mapper.items():
|
||||
group, created = UserGroup.objects.get_or_create(
|
||||
name=group_name, defaults={'name': group_name}
|
||||
)
|
||||
for user in users:
|
||||
user_groups_mapper[user].add(group)
|
||||
group.users.add(*users)
|
||||
self.exit_user_group(user_groups_mapper)
|
||||
|
||||
|
||||
class LDAPTestUtil(object):
|
||||
|
|
Loading…
Reference in New Issue