diff options
Diffstat (limited to 'fg21sim')
-rw-r--r-- | fg21sim/webui/app.py | 20 | ||||
-rw-r--r-- | fg21sim/webui/handlers/index.py | 19 |
2 files changed, 31 insertions, 8 deletions
diff --git a/fg21sim/webui/app.py b/fg21sim/webui/app.py index 004be8d..3793fda 100644 --- a/fg21sim/webui/app.py +++ b/fg21sim/webui/app.py @@ -14,23 +14,21 @@ using the WebSocket_ protocol. import os import tornado.web +from tornado.web import url -from .websocket import FG21simWSHandler +from .handlers import IndexHandler, LoginHandler, FG21simWSHandler +from .utils import gen_cookie_secret from ..configs import ConfigManager -class IndexHandler(tornado.web.RequestHandler): - def get(self): - self.render("index.html") - - class Application(tornado.web.Application): configmanager = ConfigManager() def __init__(self, **kwargs): handlers = [ - (r"/", IndexHandler), - (r"/ws", FG21simWSHandler), + url(r"/", IndexHandler, name="index"), + url(r"/login", LoginHandler, name="login"), + url(r"/ws", FG21simWSHandler), ] settings = { # The static files will be served from the default "/static/" URI. @@ -39,6 +37,12 @@ class Application(tornado.web.Application): "static"), "template_path": os.path.join(os.path.dirname(__file__), "templates"), + # URL to be redirected to if the user is not logged in + "login_url": r"/login", + # Secret key used to sign the cookies + "cookie_secret": gen_cookie_secret(), + # Enable "cross-site request forgery" (XSRF) + "xsrf_cookies": True, } settings.update(kwargs) super().__init__(handlers, **settings) diff --git a/fg21sim/webui/handlers/index.py b/fg21sim/webui/handlers/index.py new file mode 100644 index 0000000..e95c310 --- /dev/null +++ b/fg21sim/webui/handlers/index.py @@ -0,0 +1,19 @@ +# Copyright (c) 2016 Weitian LI <liweitianux@live.com> +# MIT license + +""" +Login handler +""" + +import tornado.web + +from .base import BaseRequestHandler + + +class IndexHandler(BaseRequestHandler): + """ + Index page handler of the Web UI. + """ + @tornado.web.authenticated + def get(self): + self.render("index.html") |