# HG changeset patch # User Søren Løvborg # Date 1437912453 -7200 # Node ID fd3e1ca9cce9efe30e9eca30791d5151a9e60bd3 # Parent 7e8d80882865f431f92aad4791386751cef3953d auth: fold AuthUser._propagate_data into constructor This simplifies both the program and data flow. diff -r 7e8d80882865 -r fd3e1ca9cce9 kallithea/lib/auth.py --- a/kallithea/lib/auth.py Sun Jul 26 13:58:50 2015 +0200 +++ b/kallithea/lib/auth.py Sun Jul 26 14:07:33 2015 +0200 @@ -477,43 +477,34 @@ def __init__(self, user_id=None, api_key=None, is_external_auth=False): - self.user_id = user_id - self._api_key = api_key # API key passed as parameter - - self.api_key = None # API key set by user_model.fill_data - self.username = None - self.name = '' - self.lastname = '' - self.email = '' self.is_authenticated = False - self.admin = False - self.inherit_default_permissions = False self.is_external_auth = is_external_auth - self._propagate_data() - - @LazyProperty - def permissions(self): - return self.__get_perms(user=self, cache=False) - - @property - def api_keys(self): - return self._get_api_keys() - - def _propagate_data(self): user_model = UserModel() self.anonymous_user = User.get_default_user(cache=True) is_user_loaded = False + # These attributes will be overriden by fill_data, below, unless the + # requested user cannot be found and the default anonymous user is + # not enabled. + self.user_id = None + self.username = None + self.api_key = None + self.name = '' + self.lastname = '' + self.email = '' + self.admin = False + self.inherit_default_permissions = False + # lookup by userid - if self.user_id is not None: - log.debug('Auth User lookup by USER ID %s' % self.user_id) - is_user_loaded = user_model.fill_data(self, user_model.get(self.user_id)) + if user_id is not None: + log.debug('Auth User lookup by USER ID %s' % user_id) + is_user_loaded = user_model.fill_data(self, user_model.get(user_id)) # try go get user by API key - elif self._api_key: - log.debug('Auth User lookup by API key %s' % self._api_key) - is_user_loaded = user_model.fill_data(self, User.get_by_api_key(self._api_key)) + elif api_key: + log.debug('Auth User lookup by API key %s' % api_key) + is_user_loaded = user_model.fill_data(self, User.get_by_api_key(api_key)) else: log.debug('No data in %s that could been used to log in' % self) @@ -522,12 +513,6 @@ if not is_user_loaded: is_user_loaded = user_model.fill_data(self, self.anonymous_user) - # Still no luck? Give up. - if not is_user_loaded: - self.user_id = None - self.username = None - self.is_authenticated = False - # The anonymous user is always "logged in". if self.user_id == self.anonymous_user.user_id: self.is_authenticated = True @@ -537,6 +522,14 @@ log.debug('Auth User is now %s' % self) + @LazyProperty + def permissions(self): + return self.__get_perms(user=self, cache=False) + + @property + def api_keys(self): + return self._get_api_keys() + def __get_perms(self, user, explicit=True, algo='higherwin', cache=False): """ Fills user permission attribute with permissions taken from database