render login form at root

- redirect to server, if running (hub home, otherwise)
This commit is contained in:
Min RK
2015-03-21 19:50:57 -04:00
parent cffdf89327
commit 24fd843c3c
5 changed files with 34 additions and 37 deletions

View File

@@ -19,23 +19,27 @@ class LogoutHandler(BaseHandler):
class LoginHandler(BaseHandler):
"""Render the login page."""
def _render(self, message=None, username=None):
def _render(self, login_error=None, username=None):
return self.render_template('login.html',
next=url_escape(self.get_argument('next', default='')),
username=username,
message=message,
custom_html=self.authenticator.custom_html,
login_error=login_error,
custom_login_form=self.authenticator.custom_html,
)
def get(self):
next_url = self.get_argument('next', False)
if next_url and self.get_current_user():
user = self.get_current_user()
if user:
if not next_url:
if user.running:
next_url = user.server.base_url
else:
next_url = self.hub.server.base_url
# set new login cookie
# because single-user cookie may have been cleared or incorrect
self.set_login_cookie(self.get_current_user())
self.redirect(next_url, permanent=False)
elif not next_url and self.get_current_user():
self.redirect(self.hub.server.base_url, permanent=False)
else:
username = self.get_argument('username', default='')
self.finish(self._render(username=username))
@@ -63,7 +67,7 @@ class LoginHandler(BaseHandler):
else:
self.log.debug("Failed login for %s", username)
html = self._render(
message={'error': 'Invalid username or password'},
login_error='Invalid username or password',
username=username,
)
self.finish(html)

View File

@@ -13,19 +13,25 @@ from .base import BaseHandler
class RootHandler(BaseHandler):
"""Render the Hub root page.
Currently redirects to home if logged in,
shows big fat login button otherwise.
If logged in, redirects to:
- single-user server if running
- hub home, otherwise
Otherwise, renders login page.
"""
def get(self):
if self.get_current_user():
self.redirect(
url_path_join(self.hub.server.base_url, 'home'),
permanent=False,
)
user = self.get_current_user()
if user:
if user.running:
url = user.server.base_url
else:
url = url_path_join(self.hub.server.base_url, 'home')
self.redirect(url, permanent=False)
return
html = self.render_template('index.html',
html = self.render_template('login.html',
login_url=self.settings['login_url'],
custom_html=self.authenticator.custom_html,
)
self.finish(html)

View File

@@ -24,7 +24,7 @@
outline-color: @jupyter-orange;
}
.message {
.login_error {
color: orangered;
font-weight: bold;
text-align: center;

View File

@@ -1,16 +0,0 @@
{% extends "page.html" %}
{% block login_widget %}
{% endblock %}
{% block main %}
<div class="container">
<div class="row">
<div class="text-center">
<a id="login" class="btn btn-lg btn-primary" href="{{login_url}}">Log in</a>
</div>
</div>
</div>
{% endblock %}

View File

@@ -5,6 +5,7 @@
{% block main %}
{% block login %}
<div id="login-main" class="container">
{% if custom_html %}
{{ custom_html }}
@@ -14,9 +15,9 @@
Sign in
</div>
<div class='auth-form-body'>
{% if message %}
<p class="message">
{{message.error}}
{% if login_error %}
<p class="login_error">
{{login_error}}
</p>
{% endif %}
<label for="username_input">Username:</label>
@@ -50,7 +51,9 @@
</div>
</form>
{% endif %}
{% endif %}
</div>
{% endblock login %}
{% endblock %}