Mercurial > kallithea
comparison 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 |
comparison
equal
deleted
inserted
replaced
1488:dc16211e7292 | 1613:6cab36e31f09 |
---|---|
233 Then it fills all required information for such user. It also checks if | 233 Then it fills all required information for such user. It also checks if |
234 anonymous access is enabled and if so, it returns default user as logged | 234 anonymous access is enabled and if so, it returns default user as logged |
235 in | 235 in |
236 """ | 236 """ |
237 | 237 |
238 def __init__(self, user_id=None, api_key=None): | 238 def __init__(self, user_id=None, api_key=None, username=None): |
239 | 239 |
240 self.user_id = user_id | 240 self.user_id = user_id |
241 self.api_key = None | 241 self.api_key = None |
242 | 242 |
243 self.username = 'None' | 243 self.username = 'None' if username is None else username |
244 self.name = '' | 244 self.name = '' |
245 self.lastname = '' | 245 self.lastname = '' |
246 self.email = '' | 246 self.email = '' |
247 self.is_authenticated = False | 247 self.is_authenticated = False |
248 self.admin = False | 248 self.admin = False |
251 self.propagate_data() | 251 self.propagate_data() |
252 | 252 |
253 def propagate_data(self): | 253 def propagate_data(self): |
254 user_model = UserModel() | 254 user_model = UserModel() |
255 self.anonymous_user = user_model.get_by_username('default', cache=True) | 255 self.anonymous_user = user_model.get_by_username('default', cache=True) |
256 is_user_loaded = False | |
256 if self._api_key and self._api_key != self.anonymous_user.api_key: | 257 if self._api_key and self._api_key != self.anonymous_user.api_key: |
257 #try go get user by api key | 258 #try go get user by api key |
258 log.debug('Auth User lookup by API KEY %s', self._api_key) | 259 log.debug('Auth User lookup by API KEY %s', self._api_key) |
259 user_model.fill_data(self, api_key=self._api_key) | 260 user_model.fill_data(self, api_key=self._api_key) |
260 else: | 261 is_user_loaded = True |
262 elif self.user_id is not None \ | |
263 and self.user_id != self.anonymous_user.user_id: | |
261 log.debug('Auth User lookup by USER ID %s', self.user_id) | 264 log.debug('Auth User lookup by USER ID %s', self.user_id) |
262 if self.user_id is not None \ | 265 user_model.fill_data(self, user_id=self.user_id) |
263 and self.user_id != self.anonymous_user.user_id: | 266 is_user_loaded = True |
264 user_model.fill_data(self, user_id=self.user_id) | 267 elif self.username != 'None': |
268 #Removing realm from username | |
269 self.username = self.username.partition('@')[0] | |
270 | |
271 log.debug('Auth User lookup by USER NAME %s', self.username) | |
272 dbuser = user_model.get_by_username(self.username) | |
273 if dbuser is not None and dbuser.active: | |
274 for k, v in dbuser.get_dict().items(): | |
275 setattr(self, k, v) | |
276 self.set_authenticated() | |
277 is_user_loaded = True | |
278 | |
279 if not is_user_loaded: | |
280 if self.anonymous_user.active is True: | |
281 user_model.fill_data(self, | |
282 user_id=self.anonymous_user.user_id) | |
283 #then we set this user is logged in | |
284 self.is_authenticated = True | |
265 else: | 285 else: |
266 if self.anonymous_user.active is True: | 286 self.is_authenticated = False |
267 user_model.fill_data(self, | |
268 user_id=self.anonymous_user.user_id) | |
269 #then we set this user is logged in | |
270 self.is_authenticated = True | |
271 else: | |
272 self.is_authenticated = False | |
273 | 287 |
274 log.debug('Auth User is now %s', self) | 288 log.debug('Auth User is now %s', self) |
275 user_model.fill_perms(self) | 289 user_model.fill_perms(self) |
276 | 290 |
277 @property | 291 @property |