Session vars are always lists

This commit is contained in:
Éloi Rivard 2022-12-10 20:47:47 +01:00
parent 8932b390ba
commit 6875d0c15e
2 changed files with 8 additions and 21 deletions

View file

@ -12,26 +12,14 @@ from flask_babel import gettext as _
def current_user(): def current_user():
if not session.get("user_dn"): for dn in session.get("user_dn", [])[::-1]:
return None
if not isinstance(session.get("user_dn"), list):
del session["user_dn"]
return None
dn = session["user_dn"][-1]
try:
user = User.get(dn=dn) user = User.get(dn=dn)
except ldap.LDAPError: if user:
return None return user
if not user: session["user_dn"].remove(dn)
try:
session["user_dn"] = session["user_dn"][:-1]
except IndexError:
del session["user_dn"]
return user return None
def user_needed(): def user_needed():

View file

@ -71,11 +71,10 @@ class User(LDAPObject):
@classmethod @classmethod
def logout(self): def logout(self):
try: try:
if isinstance(session["user_dn"], list): session["user_dn"].pop()
session["user_dn"].pop() if not session["user_dn"]:
else:
del session["user_dn"] del session["user_dn"]
except (IndexError, KeyError): except KeyError:
pass pass
def has_password(self): def has_password(self):