Mercurial > kallithea
diff rhodecode/lib/auth.py @ 1613:6cab36e31f09 beta
Added container-based authentication support
author | Liad Shani <liadff@gmail.com> |
---|---|
date | Tue, 27 Sep 2011 22:20:24 +0300 |
parents | 3dedf3991d40 |
children | 59ae82850e76 |
line wrap: on
line diff
--- a/rhodecode/lib/auth.py Sat Sep 24 22:21:43 2011 +0300 +++ b/rhodecode/lib/auth.py Tue Sep 27 22:20:24 2011 +0300 @@ -235,12 +235,12 @@ in """ - def __init__(self, user_id=None, api_key=None): + def __init__(self, user_id=None, api_key=None, username=None): self.user_id = user_id self.api_key = None - self.username = 'None' + self.username = 'None' if username is None else username self.name = '' self.lastname = '' self.email = '' @@ -253,23 +253,37 @@ def propagate_data(self): user_model = UserModel() self.anonymous_user = user_model.get_by_username('default', cache=True) + is_user_loaded = False if self._api_key and self._api_key != self.anonymous_user.api_key: #try go get user by api key log.debug('Auth User lookup by API KEY %s', self._api_key) user_model.fill_data(self, api_key=self._api_key) - else: + is_user_loaded = True + elif self.user_id is not None \ + and self.user_id != self.anonymous_user.user_id: log.debug('Auth User lookup by USER ID %s', self.user_id) - if self.user_id is not None \ - and self.user_id != self.anonymous_user.user_id: - user_model.fill_data(self, user_id=self.user_id) + user_model.fill_data(self, user_id=self.user_id) + is_user_loaded = True + elif self.username != 'None': + #Removing realm from username + self.username = self.username.partition('@')[0] + + log.debug('Auth User lookup by USER NAME %s', self.username) + dbuser = user_model.get_by_username(self.username) + if dbuser is not None and dbuser.active: + for k, v in dbuser.get_dict().items(): + setattr(self, k, v) + self.set_authenticated() + is_user_loaded = True + + if not is_user_loaded: + if self.anonymous_user.active is True: + user_model.fill_data(self, + user_id=self.anonymous_user.user_id) + #then we set this user is logged in + self.is_authenticated = True else: - if self.anonymous_user.active is True: - user_model.fill_data(self, - user_id=self.anonymous_user.user_id) - #then we set this user is logged in - self.is_authenticated = True - else: - self.is_authenticated = False + self.is_authenticated = False log.debug('Auth User is now %s', self) user_model.fill_perms(self)