From 77238c2233002aa1e8256d2eda37ff65dcd5c916 Mon Sep 17 00:00:00 2001 From: Quentin Smith Date: Sun, 9 Aug 2009 18:45:23 -0400 Subject: [PATCH] Add list method, require authentication for it, and add a hello world via mako svn path=/package_branches/invirt-web/cherrypy-rebased/; revision=2665 --- code/main.py | 25 ++++++++++++++++--------- code/view.py | 11 +++++++++++ 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/code/main.py b/code/main.py index 5c30714..0a9342a 100755 --- a/code/main.py +++ b/code/main.py @@ -51,10 +51,24 @@ class InvirtWeb(View): def __init__(self): super(self.__class__,self).__init__() connect() + self._cp_config['tools.require_login.on'] = True @cherrypy.expose + @cherrypy.tools.mako(filename="/list.mako") + def list(self, username): + """Handler for list requests.""" + checkpoint.checkpoint('Getting list dict') + d = getListDict(username, state) + checkpoint.checkpoint('Got list dict') + return templates.list(searchList=[d]) + index=list + + @cherrypy.expose + @cherrypy.tools.mako(filename="/helloworld.mako") def helloworld(self): - return "Hello world!" + return {} + return "Hello world!\nYour request: "+repr(dir(cherrypy.request)) + helloworld._cp_config['tools.require_login.on'] = False def pathSplit(path): if path.startswith('/'): @@ -228,13 +242,6 @@ def getListDict(username, state): can_clone=can_clone) return d -def listVms(username, state, path, fields): - """Handler for list requests.""" - checkpoint.checkpoint('Getting list dict') - d = getListDict(username, state) - checkpoint.checkpoint('Got list dict') - return templates.list(searchList=[d]) - def vnc(username, state, path, fields): """VNC applet page. @@ -637,7 +644,7 @@ def throwError(_, __, ___, ____): """Throw an error, to test the error-tracing mechanisms.""" raise RuntimeError("test of the emergency broadcast system") -mapping = dict(list=listVms, +mapping = dict(#list=listVms, vnc=vnc, command=command, modify=modify, diff --git a/code/view.py b/code/view.py index a375a9e..38569ed 100644 --- a/code/view.py +++ b/code/view.py @@ -67,5 +67,16 @@ def jsonify_tool_callback(*args, **kwargs): cherrypy.tools.jsonify = cherrypy.Tool('before_finalize', jsonify_tool_callback, priority=30) +def external_remote_user_login(): + pass + +def require_login(): + """If the user isn't logged in, raise 403 with an error.""" + if cherrypy.request.login is False: + raise cherrypy.HTTPError(403, + "You are not authorized to access that resource") + +cherrypy.tools.require_login = cherrypy.Tool('on_start_resource', require_login) + class View(object): _cp_config = {'tools.mako.directories': [os.path.join(os.path.dirname(__file__),'templates')]} -- 1.7.9.5