From: Simo Sorce Date: Sun, 2 Mar 2014 22:59:14 +0000 (-0500) Subject: Create a user facility in the session X-Git-Tag: v0.2.2~87 X-Git-Url: http://git.cascardo.info/?p=cascardo%2Fipsilon.git;a=commitdiff_plain;h=78198cc8a258ec9143c00b0b3c12d5c57a1f858d Create a user facility in the session This way all identification data about the user can be managed in a single place and be erased/replaced at login time. Signed-off-by: Simo Sorce --- diff --git a/ipsilon/util/user.py b/ipsilon/util/user.py index 387df11..72c5041 100755 --- a/ipsilon/util/user.py +++ b/ipsilon/util/user.py @@ -93,7 +93,7 @@ class User(object): class UserSession(object): def __init__(self): - self.user = cherrypy.session.get('user', None) + self.user = self.get_data('user', 'name') def _debug(self, fact): if cherrypy.config.get('debug', False): @@ -111,8 +111,8 @@ class UserSession(object): return # REMOTE_USER changed, replace user - cherrypy.session['user'] = username - cherrypy.session.save() + self.nuke_data('user') + self.save_data('user', 'name', username) cherrypy.log('LOGIN SUCCESSFUL: %s', username) @@ -143,12 +143,16 @@ class UserSession(object): return None return cherrypy.session[facility][name] - def nuke_data(self, facility, name): + def nuke_data(self, facility, name=None): if facility not in cherrypy.session: return - if name not in cherrypy.session[facility]: - return - cherrypy.session[facility][name] = None - del cherrypy.session[facility][name] + if name: + if name not in cherrypy.session[facility]: + return + cherrypy.session[facility][name] = None + del cherrypy.session[facility][name] + self._debug('Nuked session data named [%s:%s]' % (facility, name)) + else: + del cherrypy.session[facility] + self._debug('Nuked session facility [%s]' % (facility,)) cherrypy.session.save() - self._debug('Nuked session data named [%s:%s]' % (facility, name))