Mercurial > kallithea
changeset 7695:31aa5b6c107d
auth: remove AuthUser __init__ magic for fallback to default user instead of the requested user
Be reliably explicit about what user we expect. If we want default user /
anonymous user, say so explicitly.
author | Mads Kiilerich <mads@kiilerich.com> |
---|---|
date | Sun, 07 Apr 2019 23:44:17 +0200 |
parents | 1e83cda87899 |
children | 077ba994ee03 |
files | kallithea/lib/auth.py kallithea/lib/base.py |
diffstat | 2 files changed, 12 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/kallithea/lib/auth.py Thu Jan 03 01:22:06 2019 +0100 +++ b/kallithea/lib/auth.py Sun Apr 07 23:44:17 2019 +0200 @@ -400,7 +400,7 @@ def __init__(self, user_id=None, dbuser=None, authenticating_api_key=None, is_external_auth=False): - self.is_external_auth = is_external_auth + self.is_external_auth = is_external_auth # container auth - don't show logout option self.authenticating_api_key = authenticating_api_key # These attributes will be overridden by fill_data, below, unless the @@ -416,27 +416,22 @@ # Look up database user, if necessary. if user_id is not None: + assert dbuser is None log.debug('Auth User lookup by USER ID %s', user_id) dbuser = UserModel().get(user_id) + assert dbuser is not None else: - # Note: dbuser is allowed to be None. + assert dbuser is not None log.debug('Auth User lookup by database user %s', dbuser) - is_user_loaded = self._fill_data(dbuser) - - # If user cannot be found, try falling back to anonymous. - if is_user_loaded: - assert dbuser is not None + if self._fill_data(dbuser): self.is_default_user = dbuser.is_default_user else: - default_user = User.get_default_user(cache=True) - is_user_loaded = self._fill_data(default_user) - self.is_default_user = is_user_loaded - - self.is_anonymous = not is_user_loaded or self.is_default_user - - if not self.username: + assert dbuser.is_default_user + assert not self.username self.username = 'None' + self.is_default_user = False + self.is_anonymous = dbuser.is_default_user log.debug('Auth User is now %s', self)
--- a/kallithea/lib/base.py Thu Jan 03 01:22:06 2019 +0100 +++ b/kallithea/lib/base.py Sun Apr 07 23:44:17 2019 +0200 @@ -432,8 +432,9 @@ return log_in_user(user, remember=False, is_external_auth=True) - # User is anonymous - return AuthUser() + # User is default user (if active) or anonymous + default_user = User.get_default_user(cache=True) + return AuthUser(dbuser=default_user) @staticmethod def _basic_security_checks():