User user id, not user name, for all user operations

(cherry picked from commit 7021b9f)
This commit is contained in:
Gina Häußge 2015-09-11 08:34:05 +02:00
parent cd7ac032f4
commit 5c9b507cb7
2 changed files with 24 additions and 22 deletions

View file

@ -81,7 +81,7 @@ def on_identity_loaded(sender, identity):
if user is None:
return
identity.provides.add(UserNeed(user.get_name()))
identity.provides.add(UserNeed(user.get_id()))
if user.is_user():
identity.provides.add(RoleNeed("user"))
if user.is_admin():
@ -98,9 +98,9 @@ def load_user(id):
if userManager is not None:
if sessionid:
return userManager.findUser(username=id, session=sessionid)
return userManager.findUser(userid=id, session=sessionid)
else:
return userManager.findUser(username=id)
return userManager.findUser(userid=id)
return users.DummyUser()

View file

@ -23,7 +23,7 @@ class UserManager(object):
def __init__(self):
self._logger = logging.getLogger(__name__)
self._session_users_by_session = dict()
self._session_users_by_username = dict()
self._session_users_by_userid = dict()
def login_user(self, user):
self._cleanup_sessions()
@ -42,9 +42,10 @@ class UserManager(object):
self._session_users_by_session[user.get_session()] = user
if not user.get_name() in self._session_users_by_username:
self._session_users_by_username[user.get_name()] = []
self._session_users_by_username[user.get_name()].append(user)
userid = user.get_id()
if not userid in self._session_users_by_userid:
self._session_users_by_userid[userid] = []
self._session_users_by_userid[userid].append(user)
self._logger.debug("Logged in user: %r" % user)
@ -60,11 +61,12 @@ class UserManager(object):
if not isinstance(user, SessionUser):
return
if user.get_name() in self._session_users_by_username:
users_by_username = self._session_users_by_username[user.get_name()]
for u in users_by_username:
userid = user.get_id()
if userid in self._session_users_by_userid:
users_by_userid = self._session_users_by_userid[userid]
for u in users_by_userid:
if u.get_session() == user.get_session():
users_by_username.remove(u)
users_by_userid.remove(u)
break
if user.get_session() in self._session_users_by_session:
@ -145,18 +147,18 @@ class UserManager(object):
pass
def removeUser(self, username):
if username in self._session_users_by_username:
users = self._session_users_by_username[username]
if username in self._session_users_by_userid:
users = self._session_users_by_userid[username]
sessions = [user.get_session() for user in users if isinstance(user, SessionUser)]
for session in sessions:
if session in self._session_users_by_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:
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 None
@ -351,16 +353,16 @@ class FilebasedUserManager(UserManager):
self._dirty = True
self._save()
def findUser(self, username=None, apikey=None, session=None):
user = UserManager.findUser(self, username=username, session=session)
def findUser(self, userid=None, apikey=None, session=None):
user = UserManager.findUser(self, userid=userid, session=session)
if user is not None:
return user
if username is not None:
if username not in self._users.keys():
if userid is not None:
if userid not in self._users.keys():
return None
return self._users[username]
return self._users[userid]
elif apikey is not None:
for user in self._users.values():
@ -419,7 +421,7 @@ class User(UserMixin):
return self._passwordHash == passwordHash
def get_id(self):
return self._username
return self.get_name()
def get_name(self):
return self._username