User user id, not user name, for all user operations
This commit is contained in:
parent
2efc5c4fdb
commit
7021b9fe89
2 changed files with 24 additions and 22 deletions
|
|
@ -82,7 +82,7 @@ def on_identity_loaded(sender, identity):
|
||||||
if user is None:
|
if user is None:
|
||||||
return
|
return
|
||||||
|
|
||||||
identity.provides.add(UserNeed(user.get_name()))
|
identity.provides.add(UserNeed(user.get_id()))
|
||||||
if user.is_user():
|
if user.is_user():
|
||||||
identity.provides.add(RoleNeed("user"))
|
identity.provides.add(RoleNeed("user"))
|
||||||
if user.is_admin():
|
if user.is_admin():
|
||||||
|
|
@ -99,9 +99,9 @@ def load_user(id):
|
||||||
|
|
||||||
if userManager is not None:
|
if userManager is not None:
|
||||||
if sessionid:
|
if sessionid:
|
||||||
return userManager.findUser(username=id, session=sessionid)
|
return userManager.findUser(userid=id, session=sessionid)
|
||||||
else:
|
else:
|
||||||
return userManager.findUser(username=id)
|
return userManager.findUser(userid=id)
|
||||||
return users.DummyUser()
|
return users.DummyUser()
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ class UserManager(object):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self._logger = logging.getLogger(__name__)
|
self._logger = logging.getLogger(__name__)
|
||||||
self._session_users_by_session = dict()
|
self._session_users_by_session = dict()
|
||||||
self._session_users_by_username = dict()
|
self._session_users_by_userid = dict()
|
||||||
|
|
||||||
def login_user(self, user):
|
def login_user(self, user):
|
||||||
self._cleanup_sessions()
|
self._cleanup_sessions()
|
||||||
|
|
@ -42,9 +42,10 @@ class UserManager(object):
|
||||||
|
|
||||||
self._session_users_by_session[user.get_session()] = user
|
self._session_users_by_session[user.get_session()] = user
|
||||||
|
|
||||||
if not user.get_name() in self._session_users_by_username:
|
userid = user.get_id()
|
||||||
self._session_users_by_username[user.get_name()] = []
|
if not userid in self._session_users_by_userid:
|
||||||
self._session_users_by_username[user.get_name()].append(user)
|
self._session_users_by_userid[userid] = []
|
||||||
|
self._session_users_by_userid[userid].append(user)
|
||||||
|
|
||||||
self._logger.debug("Logged in user: %r" % user)
|
self._logger.debug("Logged in user: %r" % user)
|
||||||
|
|
||||||
|
|
@ -60,11 +61,12 @@ class UserManager(object):
|
||||||
if not isinstance(user, SessionUser):
|
if not isinstance(user, SessionUser):
|
||||||
return
|
return
|
||||||
|
|
||||||
if user.get_name() in self._session_users_by_username:
|
userid = user.get_id()
|
||||||
users_by_username = self._session_users_by_username[user.get_name()]
|
if userid in self._session_users_by_userid:
|
||||||
for u in users_by_username:
|
users_by_userid = self._session_users_by_userid[userid]
|
||||||
|
for u in users_by_userid:
|
||||||
if u.get_session() == user.get_session():
|
if u.get_session() == user.get_session():
|
||||||
users_by_username.remove(u)
|
users_by_userid.remove(u)
|
||||||
break
|
break
|
||||||
|
|
||||||
if user.get_session() in self._session_users_by_session:
|
if user.get_session() in self._session_users_by_session:
|
||||||
|
|
@ -145,18 +147,18 @@ class UserManager(object):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def removeUser(self, username):
|
def removeUser(self, username):
|
||||||
if username in self._session_users_by_username:
|
if username in self._session_users_by_userid:
|
||||||
users = self._session_users_by_username[username]
|
users = self._session_users_by_userid[username]
|
||||||
sessions = [user.get_session() for user in users if isinstance(user, SessionUser)]
|
sessions = [user.get_session() for user in users if isinstance(user, SessionUser)]
|
||||||
for session in sessions:
|
for session in sessions:
|
||||||
if session in self._session_users_by_session:
|
if session in self._session_users_by_session:
|
||||||
del self._session_users_by_session[session]
|
del self._session_users_by_session[session]
|
||||||
del self._session_users_by_username[username]
|
del self._session_users_by_userid[username]
|
||||||
|
|
||||||
def findUser(self, username=None, session=None):
|
def findUser(self, userid=None, session=None):
|
||||||
if session is not None and session in self._session_users_by_session:
|
if session is not None and session in self._session_users_by_session:
|
||||||
user = self._session_users_by_session[session]
|
user = self._session_users_by_session[session]
|
||||||
if username is None or username == user.get_id():
|
if userid is None or userid == user.get_id():
|
||||||
return user
|
return user
|
||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
@ -351,16 +353,16 @@ class FilebasedUserManager(UserManager):
|
||||||
self._dirty = True
|
self._dirty = True
|
||||||
self._save()
|
self._save()
|
||||||
|
|
||||||
def findUser(self, username=None, apikey=None, session=None):
|
def findUser(self, userid=None, apikey=None, session=None):
|
||||||
user = UserManager.findUser(self, username=username, session=session)
|
user = UserManager.findUser(self, userid=userid, session=session)
|
||||||
|
|
||||||
if user is not None:
|
if user is not None:
|
||||||
return user
|
return user
|
||||||
|
|
||||||
if username is not None:
|
if userid is not None:
|
||||||
if username not in self._users.keys():
|
if userid not in self._users.keys():
|
||||||
return None
|
return None
|
||||||
return self._users[username]
|
return self._users[userid]
|
||||||
|
|
||||||
elif apikey is not None:
|
elif apikey is not None:
|
||||||
for user in self._users.values():
|
for user in self._users.values():
|
||||||
|
|
@ -419,7 +421,7 @@ class User(UserMixin):
|
||||||
return self._passwordHash == passwordHash
|
return self._passwordHash == passwordHash
|
||||||
|
|
||||||
def get_id(self):
|
def get_id(self):
|
||||||
return self._username
|
return self.get_name()
|
||||||
|
|
||||||
def get_name(self):
|
def get_name(self):
|
||||||
return self._username
|
return self._username
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue