From 542183dd43e3d9c9260b2ce1313126b7f6535f6c Mon Sep 17 00:00:00 2001 From: Quentin Smith Date: Sun, 27 Sep 2009 19:55:09 -0400 Subject: [PATCH 1/1] Implement administrator mode svn path=/package_branches/invirt-web/cherrypy-rebased/; revision=2690 --- code/main.py | 25 ++++++++++--------------- code/templates/skeleton.mako | 16 ++++++++++------ code/view.py | 3 ++- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/code/main.py b/code/main.py index 473647f..5de084e 100755 --- a/code/main.py +++ b/code/main.py @@ -55,6 +55,15 @@ class InvirtWeb(View): self._cp_config['tools.mako.imports'] = ['from invirt.config import structs as config', 'from invirt import database'] + def __getattr__(self, name): + if name in ("admin", "overlord"): + if not cherrypy.request.login in getAfsGroupMembers(config.adminacl, config.authz[0].cell): + raise InvalidInput('username', cherrypy.request.login, + 'Not in admin group %s.' % config.adminacl) + cherrypy.request.state = State(cherrypy.request.login, isadmin=True) + return self + else: + return super(InvirtWeb, self).__getattr__(name) @cherrypy.expose @cherrypy.tools.mako(filename="/list.mako") @@ -645,23 +654,9 @@ def unauthFront(_, _2, _3, fields): return templates.unauth(searchList=[{'simple' : True, 'hostname' : socket.getfqdn()}]) -def admin(username, state, path, fields): - if path == '': - return ({'Status': '303 See Other', - 'Location': 'admin/'}, - "You shouldn't see this message.") - if not username in getAfsGroupMembers(config.adminacl, 'athena.mit.edu'): - raise InvalidInput('username', username, - 'Not in admin group %s.' % config.adminacl) - newstate = State(username, isadmin=True) - newstate.environ = state.environ - return handler(username, newstate, path, fields) - mapping = dict( modify=modify, - unauth=unauthFront, - admin=admin, - overlord=admin) + unauth=unauthFront) def printHeaders(headers): """Print a dictionary as HTTP headers.""" diff --git a/code/templates/skeleton.mako b/code/templates/skeleton.mako index 9c60c56..a53d2bf 100644 --- a/code/templates/skeleton.mako +++ b/code/templates/skeleton.mako @@ -5,11 +5,11 @@ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> ${self.title()} — XVM - - - - - + + + + +