[LDAP] User können erstellt werden.

* erstelle neuen user im ldap (ohne rollen)
This commit is contained in:
Tim Gröger 2020-11-12 19:29:24 +01:00
parent c524f2a7db
commit 130774e665
1 changed files with 39 additions and 8 deletions

View File

@ -62,20 +62,51 @@ class AuthLDAP(AuthPlugin):
user.display_name = r["displayName"][0] user.display_name = r["displayName"][0]
userController.set_roles(user, self._get_groups(user.userid), create=True) userController.set_roles(user, self._get_groups(user.userid), create=True)
def create_user(self, user, password):
try:
ldap_conn = self.ldap.connect(self.admin_dn, self.admin_secret)
self.ldap.connection.search(
"ou=user,{}".format(self.dn), "(uidNumber=*)", SUBTREE, attributes=["uidNumber"]
)
uidNumbers = sorted(self.ldap.response(), key = lambda i: i['attributes']['uidNumber'], reverse=True)
uidNumber = uidNumbers[0]['attributes']['uidNumber'] + 1
dn = f'cn={user.firstname} {user.lastname},ou=user,{self.dn}'
object_class = ['inetOrgPerson', 'posixAccount', 'person', 'organizationalPerson']
attributes = {
'sn': user.firstname,
'givenName': user.lastname,
'gidNumber': 15000,
'homeDirectory': f'/home/{user.userid}',
'loginShell': '/bin/bash',
'uid': user.userid,
'userPassword': hashed(HASHED_SALTED_MD5, password),
'uidNumber': uidNumber
}
test = ldap_conn.add(dn, object_class, attributes)
print(test)
except (LDAPPasswordIsMandatoryError, LDAPBindError):
raise BadRequest
except Exception as e:
pass
def _get_groups(self, uid): def _get_groups(self, uid):
groups = [] groups = []
self.ldap.connection.search( self.ldap.connection.search(
"ou=user,{}".format(self.dn), "(uid={})".format(uid), SUBTREE, attributes=["gidNumber"] "ou=user,{}".format(self.dn), "(uid={})".format(uid), SUBTREE, attributes=["gidNumber"]
) )
main_group_number = self.ldap.connection.response[0]["attributes"]["gidNumber"]
if main_group_number: # Maingroup ist uninteressant
if type(main_group_number) is list:
main_group_number = main_group_number[0] #main_group_number = self.ldap.connection.response[0]["attributes"]["gidNumber"]
self.ldap.connection.search( #if main_group_number:
"ou=group,{}".format(self.dn), "(gidNumber={})".format(main_group_number), attributes=["cn"] # if type(main_group_number) is list:
) # main_group_number = main_group_number[0]
groups.append(self.ldap.connection.response[0]["attributes"]["cn"][0]) # self.ldap.connection.search(
# "ou=group,{}".format(self.dn), "(gidNumber={})".format(main_group_number), attributes=["cn"]
# )
# groups.append(self.ldap.connection.response[0]["attributes"]["cn"][0])
self.ldap.connection.search( self.ldap.connection.search(
"ou=group,{}".format(self.dn), "(memberUID={})".format(uid), SUBTREE, attributes=["cn"] "ou=group,{}".format(self.dn), "(memberUID={})".format(uid), SUBTREE, attributes=["cn"]