From: Simo Sorce Date: Wed, 18 Jun 2014 04:04:08 +0000 (-0400) Subject: Rework remote_login and remove protect decorator X-Git-Tag: v0.3.0~116 X-Git-Url: http://git.cascardo.info/?p=cascardo%2Fipsilon.git;a=commitdiff_plain;h=34bb81a826d023ce39714e1a6e027b19cf96a5fd;hp=fca4035996c93f8f05ea3837133961e28a1248d6 Rework remote_login and remove protect decorator The protect decorator was not really being used for anything, remove it. Change the way UserSession's remote_login() works. If called now it either sets a REMOTE_USER (if found) or nukes the current user data in the session. This means this function can be safely called only in a login plugin now. Signed-off-by: Simo Sorce Reviewed-by: Patrick Uiterwijk --- diff --git a/ipsilon/ipsilon b/ipsilon/ipsilon index fec19e4..8cabc85 100755 --- a/ipsilon/ipsilon +++ b/ipsilon/ipsilon @@ -60,8 +60,6 @@ admin_config = datastore.get_admin_config() for option in admin_config: cherrypy.config[option] = admin_config[option] -cherrypy.tools.protect = cherrypy.Tool('before_handler', page.protect) - templates = os.path.join(cherrypy.config['base.dir'], 'templates') template_env = Environment(loader=FileSystemLoader(templates)) diff --git a/ipsilon/util/page.py b/ipsilon/util/page.py index ae1f116..e90ec2d 100755 --- a/ipsilon/util/page.py +++ b/ipsilon/util/page.py @@ -33,10 +33,6 @@ def admin_protect(fn): return check -def protect(): - UserSession().remote_login() - - class Page(object): def __init__(self, site, form=False): if 'template_env' not in site: diff --git a/ipsilon/util/user.py b/ipsilon/util/user.py index f47c072..7c53526 100755 --- a/ipsilon/util/user.py +++ b/ipsilon/util/user.py @@ -111,7 +111,9 @@ class UserSession(object): def remote_login(self): if cherrypy.request.login: - return self.login(cherrypy.request.login) + self.login(cherrypy.request.login) + else: + self.nuke_data('user') def login(self, username): if self.user == username: @@ -120,8 +122,9 @@ class UserSession(object): # REMOTE_USER changed, replace user self.nuke_data('user') self.save_data('user', 'name', username) + self.user = username - cherrypy.log('LOGIN SUCCESSFUL: %s', username) + cherrypy.log('LOGIN SUCCESSFUL: %s' % username) def logout(self, user): if user is not None: diff --git a/templates/install/ipsilon.conf b/templates/install/ipsilon.conf index 8ab17d1..bbc4de6 100644 --- a/templates/install/ipsilon.conf +++ b/templates/install/ipsilon.conf @@ -13,4 +13,3 @@ tools.sessions.storage_path = "${datadir}/sessions" tools.sessions.timeout = 60 tools.sessions.httponly = ${secure} tools.sessions.secure = ${secure} -tools.protect.on = True