mirror of
https://github.com/jupyterhub/jupyterhub.git
synced 2025-10-15 14:03:02 +00:00
render login form at root
- redirect to server, if running (hub home, otherwise)
This commit is contained in:
@@ -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)
|
||||
|
@@ -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)
|
||||
|
||||
|
@@ -24,7 +24,7 @@
|
||||
outline-color: @jupyter-orange;
|
||||
}
|
||||
|
||||
.message {
|
||||
.login_error {
|
||||
color: orangered;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
|
@@ -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 %}
|
@@ -5,18 +5,19 @@
|
||||
|
||||
{% block main %}
|
||||
|
||||
{% block login %}
|
||||
<div id="login-main" class="container">
|
||||
{% if custom_html %}
|
||||
{{custom_html}}
|
||||
{{ custom_html }}
|
||||
{% else %}
|
||||
<form action="{{login_url}}?next={{next}}" method="post" role="form">
|
||||
<div class="auth-form-header">
|
||||
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 %}
|
||||
|
||||
|
Reference in New Issue
Block a user