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