Skip to content

Commit d655aa2

Browse files
authored
Merge pull request #180 from mekanix/user-register
Fix user registration
2 parents 1a0a81c + 54a0a54 commit d655aa2

File tree

2 files changed

+18
-19
lines changed

2 files changed

+18
-19
lines changed

freenit/api/auth/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ async def register_sql(credentials: LoginInput) -> User:
8383

8484
async def register_ldap(credentials: LoginInput) -> User:
8585
user = await User.register(credentials)
86-
await user.save()
86+
await user.save(credentials.password)
8787
return user
8888

8989

freenit/models/ldap/user.py

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ async def _login(cls, credentials) -> dict:
4848
return data
4949

5050
async def _fill_groups(self):
51-
_, domain = self.email.split('@')
51+
_, domain = self.email.split("@")
5252
classes = class2filter(config.ldap.groupClasses)
5353
dn = f"{config.ldap.domainDN.format(domain)},{config.ldap.roleBase}"
5454
client = get_client()
@@ -223,12 +223,12 @@ async def get_by_email(cls, email):
223223
class User(UserSafe):
224224
password: str = Field("", description=("Password"))
225225

226-
async def save(self):
226+
async def save(self, password):
227227
try:
228228
uidNext = await next_uid()
229229
gidNext = await next_gid()
230230
_, domain = self.email.split("@")
231-
data = LDAPEntry(config.ldap.roleDN.format(self.uid, domain))
231+
data = LDAPEntry(config.ldap.groupDN.format(self.uid, domain))
232232
data["objectClass"] = config.ldap.groupClasses
233233
data["cn"] = self.uid
234234
data["gidNumber"] = gidNext
@@ -247,9 +247,8 @@ async def save(self):
247247
data["sn"] = self.uid
248248
data["uidNumber"] = uidNext
249249
data["gidNumber"] = gidNext
250-
data["userClass"] = self.userClass
250+
data["userClass"] = userClass
251251
data["homeDirectory"] = f"/var/mail/domains/{domain}/{self.uid}"
252-
data.change_attribute("userPassword", LDAPModOp.REPLACE, (self.password,))
253252
data["mail"] = self.email
254253
await save_data(data)
255254

@@ -259,7 +258,7 @@ async def save(self):
259258
raise HTTPException(status_code=403, detail="Failed to login")
260259
client = get_client()
261260
async with client.connect(is_async=True) as conn:
262-
await conn.modify_password(self.dn, self.password)
261+
await conn.modify_password(self.dn, password)
263262

264263
async def update(
265264
self,
@@ -275,39 +274,39 @@ async def update(
275274
res = await conn.search(self.dn, LDAPSearchScope.BASE)
276275
data = res[0]
277276
for field in kwargs:
278-
if field == 'uidNumber' or field == 'gidNumber':
277+
if field == "uidNumber" or field == "gidNumber":
279278
if kwargs[field] == 0:
280279
continue
281280
data[field] = kwargs[field]
282281
uclass = self.userClass.copy()
283282
if self.active:
284-
uclass.append('active')
283+
uclass.append("active")
285284
if self.admin:
286-
uclass.append('admin')
285+
uclass.append("admin")
287286
if active is not None:
288287
if active:
289-
if 'active' not in uclass:
290-
uclass.append('active')
288+
if "active" not in uclass:
289+
uclass.append("active")
291290
self.active = True
292291
else:
293-
if 'active' in uclass:
294-
uclass.remove('active')
292+
if "active" in uclass:
293+
uclass.remove("active")
295294
self.active = False
296295
if admin is not None:
297296
if admin:
298-
if 'admin' not in uclass:
299-
uclass.append('admin')
297+
if "admin" not in uclass:
298+
uclass.append("admin")
300299
self.admin = True
301300
else:
302-
if 'admin' in uclass:
303-
uclass.remove('admin')
301+
if "admin" in uclass:
302+
uclass.remove("admin")
304303
self.admin = False
305304
data["userClass"] = uclass
306305
await data.modify()
307306
if password is not None:
308307
await conn.modify_password(self.dn, password)
309308
for field in kwargs:
310-
if field == 'uidNumber' or field == 'gidNumber':
309+
if field == "uidNumber" or field == "gidNumber":
311310
if kwargs[field] == 0:
312311
continue
313312
setattr(self, field, kwargs[field])

0 commit comments

Comments
 (0)