login.py
62 lines
| 1.9 KiB
| text/x-python
|
PythonLexer
Brian E. Granger
|
r10642 | """Tornado handlers logging into the notebook. | ||
Brian E. Granger
|
r10641 | |||
Authors: | ||||
* Brian Granger | ||||
""" | ||||
#----------------------------------------------------------------------------- | ||||
Brian E. Granger
|
r10642 | # Copyright (C) 2011 The IPython Development Team | ||
Brian E. Granger
|
r10641 | # | ||
# Distributed under the terms of the BSD License. The full license is in | ||||
# the file COPYING, distributed as part of this software. | ||||
#----------------------------------------------------------------------------- | ||||
#----------------------------------------------------------------------------- | ||||
# Imports | ||||
#----------------------------------------------------------------------------- | ||||
import uuid | ||||
from tornado.escape import url_escape | ||||
from IPython.lib.security import passwd_check | ||||
Brian E. Granger
|
r10649 | from ..base.handlers import IPythonHandler | ||
Brian E. Granger
|
r10641 | |||
#----------------------------------------------------------------------------- | ||||
Brian E. Granger
|
r10642 | # Handler | ||
Brian E. Granger
|
r10641 | #----------------------------------------------------------------------------- | ||
class LoginHandler(IPythonHandler): | ||||
def _render(self, message=None): | ||||
self.write(self.render_template('login.html', | ||||
MinRK
|
r15238 | next=url_escape(self.get_argument('next', default=self.base_url)), | ||
Brian E. Granger
|
r10641 | message=message, | ||
)) | ||||
def get(self): | ||||
if self.current_user: | ||||
MinRK
|
r15238 | self.redirect(self.get_argument('next', default=self.base_url)) | ||
Brian E. Granger
|
r10641 | else: | ||
self._render() | ||||
def post(self): | ||||
pwd = self.get_argument('password', default=u'') | ||||
if self.login_available: | ||||
if passwd_check(self.password, pwd): | ||||
self.set_secure_cookie(self.cookie_name, str(uuid.uuid4())) | ||||
else: | ||||
self._render(message={'error': 'Invalid password'}) | ||||
return | ||||
MinRK
|
r15238 | self.redirect(self.get_argument('next', default=self.base_url)) | ||
Brian E. Granger
|
r10641 | |||
Brian E. Granger
|
r10647 | #----------------------------------------------------------------------------- | ||
# URL to handler mappings | ||||
#----------------------------------------------------------------------------- | ||||
default_handlers = [(r"/login", LoginHandler)] | ||||