Skip to content

Instantly share code, notes, and snippets.

@c0ldlimit
Forked from guillaumevincent/login.html
Last active August 29, 2015 14:06
Show Gist options
  • Save c0ldlimit/004ebe882b44cfbdd10c to your computer and use it in GitHub Desktop.
Save c0ldlimit/004ebe882b44cfbdd10c to your computer and use it in GitHub Desktop.

Revisions

  1. vincent revised this gist Feb 12, 2013. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion login.html
    Original file line number Diff line number Diff line change
    @@ -1,4 +1,4 @@
    <div id="main-container">
    <div id="main-container">
    <div id="main">
    <h1>
    <img alt="scubabook logo" src="{{ static_url("img/logo.png") }}">
  2. vincent created this gist Feb 12, 2013.
    28 changes: 28 additions & 0 deletions login.html
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,28 @@
    <div id="main-container">
    <div id="main">
    <h1>
    <img alt="scubabook logo" src="{{ static_url("img/logo.png") }}">
    </h1>
    <div id="login-form">
    <form action="/auth/login/" method="post" id="login_form">
    <fieldset>
    <label for="username">Username</label>
    <input autocapitalize="off" autocorrect="off" class="text-input" id="username" name="username" tabindex="1" type="text" value="">
    </fieldset>

    <fieldset>
    <label for="password">Password</label>
    <input class="text-input" id="password" name="password" tabindex="2" type="password" value="">
    </fieldset>
    <fieldset>
    <span class="errormessage">{{errormessage}}</span>
    </fieldset>

    <div id="form_btn">
    <input id="signin-btn" class="btn btn-blue" type="submit" value="Sign In" tabindex="3">
    <!-- <a href="/sb/"><input id="inscription-btn" class="btn btn-red" value="Inscription" tabindex="3"></a> -->
    </div>
    </form>
    </div>
    </div>
    </div>
    18 changes: 18 additions & 0 deletions settings.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,18 @@
    import os
    DEBUG = True
    DIRNAME = os.path.dirname(__file__)
    STATIC_PATH = os.path.join(DIRNAME, 'static')
    TEMPLATE_PATH = os.path.join(DIRNAME, 'template')

    import logging
    import sys
    #log linked to the standard error stream
    logging.basicConfig(level=logging.DEBUG,
    format='%(asctime)s - %(levelname)-8s - %(message)s',
    datefmt='%d/%m/%Y %Hh%Mm%Ss')
    console = logging.StreamHandler(sys.stderr)

    #import base64
    #import uuid
    #base64.b64encode(uuid.uuid4().bytes + uuid.uuid4().bytes)
    COOKIE_SECRET = 'L8LwECiNRxq2N0N2eGxx9MZlrpmuMEimlydNX/vt1LM='
    81 changes: 81 additions & 0 deletions webserver.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,81 @@
    import tornado.auth
    import tornado.escape
    import tornado.httpserver
    import tornado.ioloop
    import tornado.options
    import tornado.web
    import Settings

    from tornado.options import define, options

    define("port", default=8888, help="run on the given port", type=int)

    class BaseHandler(tornado.web.RequestHandler):
    def get_current_user(self):
    return self.get_secure_cookie("user")

    class MainHandler(BaseHandler):
    @tornado.web.authenticated
    def get(self):
    username = tornado.escape.xhtml_escape(self.current_user)
    self.write("index.html", username = username)

    class AuthLoginHandler(BaseHandler):
    def get(self):
    try:
    errormessage = self.get_argument("error")
    except:
    errormessage = ""
    self.render("login.html", errormessage = errormessage)

    def check_permission(self, password, username):
    if username == "admin" and password == "admin":
    return True
    return False

    def post(self):
    username = self.get_argument("username", "")
    password = self.get_argument("password", "")
    auth = self.check_permission(password, username)
    if auth:
    self.set_current_user(username)
    self.redirect(self.get_argument("next", u"/"))
    else:
    error_msg = u"?error=" + tornado.escape.url_escape("Login incorrect")
    self.redirect(u"/auth/login/" + error_msg)

    def set_current_user(self, user):
    if user:
    self.set_secure_cookie("user", tornado.escape.json_encode(user))
    else:
    self.clear_cookie("user")

    class AuthLogoutHandler(BaseHandler):
    def get(self):
    self.clear_cookie("user")
    self.redirect(self.get_argument("next", "/"))

    class Application(tornado.web.Application):
    def __init__(self):
    handlers = [
    (r"/", MainHandler),
    (r"/auth/login/", AuthLoginHandler),
    (r"/auth/logout/", AuthLogoutHandler),
    ]
    settings = {
    "template_path":Settings.TEMPLATE_PATH,
    "static_path":Settings.STATIC_PATH,
    "debug":Settings.DEBUG,
    "cookie_secret": Settings.COOKIE_SECRET,
    "login_url": "/auth/login/"
    }
    tornado.web.Application.__init__(self, handlers, **settings)

    def main():
    tornado.options.parse_command_line()
    http_server = tornado.httpserver.HTTPServer(Application())
    http_server.listen(options.port)
    tornado.ioloop.IOLoop.instance().start()

    if __name__ == "__main__":
    main()