mirror of
https://github.com/jupyter/notebook.git
synced 2025-01-06 11:35:24 +08:00
Merge pull request #2073 from Carreau/fixes-1997
Allows both password and prefix for notebook at the same time.
This commit is contained in:
commit
22e757f91d
@ -208,7 +208,7 @@ class LoginHandler(AuthenticatedHandler):
|
|||||||
|
|
||||||
def _render(self, message=None):
|
def _render(self, message=None):
|
||||||
self.render('login.html',
|
self.render('login.html',
|
||||||
next=self.get_argument('next', default='/'),
|
next=self.get_argument('next', default=self.application.ipython_app.base_project_url),
|
||||||
read_only=self.read_only,
|
read_only=self.read_only,
|
||||||
logged_in=self.logged_in,
|
logged_in=self.logged_in,
|
||||||
login_available=self.login_available,
|
login_available=self.login_available,
|
||||||
@ -218,7 +218,7 @@ class LoginHandler(AuthenticatedHandler):
|
|||||||
|
|
||||||
def get(self):
|
def get(self):
|
||||||
if self.current_user:
|
if self.current_user:
|
||||||
self.redirect(self.get_argument('next', default='/'))
|
self.redirect(self.get_argument('next', default=self.application.ipython_app.base_project_url))
|
||||||
else:
|
else:
|
||||||
self._render()
|
self._render()
|
||||||
|
|
||||||
@ -231,7 +231,7 @@ class LoginHandler(AuthenticatedHandler):
|
|||||||
self._render(message={'error': 'Invalid password'})
|
self._render(message={'error': 'Invalid password'})
|
||||||
return
|
return
|
||||||
|
|
||||||
self.redirect(self.get_argument('next', default='/'))
|
self.redirect(self.get_argument('next', default=self.application.ipython_app.base_project_url))
|
||||||
|
|
||||||
|
|
||||||
class LogoutHandler(AuthenticatedHandler):
|
class LogoutHandler(AuthenticatedHandler):
|
||||||
|
@ -140,15 +140,6 @@ class NotebookWebApplication(web.Application):
|
|||||||
(r"/clusters/%s/%s" % (_profile_regex, _cluster_action_regex), ClusterActionHandler),
|
(r"/clusters/%s/%s" % (_profile_regex, _cluster_action_regex), ClusterActionHandler),
|
||||||
(r"/clusters/%s" % _profile_regex, ClusterProfileHandler),
|
(r"/clusters/%s" % _profile_regex, ClusterProfileHandler),
|
||||||
]
|
]
|
||||||
settings = dict(
|
|
||||||
template_path=os.path.join(os.path.dirname(__file__), "templates"),
|
|
||||||
static_path=os.path.join(os.path.dirname(__file__), "static"),
|
|
||||||
cookie_secret=os.urandom(1024),
|
|
||||||
login_url="/login",
|
|
||||||
)
|
|
||||||
|
|
||||||
# allow custom overrides for the tornado web app.
|
|
||||||
settings.update(settings_overrides)
|
|
||||||
|
|
||||||
# Python < 2.6.5 doesn't accept unicode keys in f(**kwargs), and
|
# Python < 2.6.5 doesn't accept unicode keys in f(**kwargs), and
|
||||||
# base_project_url will always be unicode, which will in turn
|
# base_project_url will always be unicode, which will in turn
|
||||||
@ -160,6 +151,16 @@ class NotebookWebApplication(web.Application):
|
|||||||
# and thus guaranteed to be ASCII: 'héllo' is really 'h%C3%A9llo'.
|
# and thus guaranteed to be ASCII: 'héllo' is really 'h%C3%A9llo'.
|
||||||
base_project_url = py3compat.unicode_to_str(base_project_url, 'ascii')
|
base_project_url = py3compat.unicode_to_str(base_project_url, 'ascii')
|
||||||
|
|
||||||
|
settings = dict(
|
||||||
|
template_path=os.path.join(os.path.dirname(__file__), "templates"),
|
||||||
|
static_path=os.path.join(os.path.dirname(__file__), "static"),
|
||||||
|
cookie_secret=os.urandom(1024),
|
||||||
|
login_url="%s/login"%(base_project_url.rstrip('/')),
|
||||||
|
)
|
||||||
|
|
||||||
|
# allow custom overrides for the tornado web app.
|
||||||
|
settings.update(settings_overrides)
|
||||||
|
|
||||||
# prepend base_project_url onto the patterns that we match
|
# prepend base_project_url onto the patterns that we match
|
||||||
new_handlers = []
|
new_handlers = []
|
||||||
for handler in handlers:
|
for handler in handlers:
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
var IPython = (function (IPython) {
|
var IPython = (function (IPython) {
|
||||||
|
var base_url = $('body').data('baseProjectUrl');
|
||||||
|
|
||||||
var LoginWidget = function (selector) {
|
var LoginWidget = function (selector) {
|
||||||
this.selector = selector;
|
this.selector = selector;
|
||||||
@ -29,10 +30,10 @@ var IPython = (function (IPython) {
|
|||||||
LoginWidget.prototype.bind_events = function () {
|
LoginWidget.prototype.bind_events = function () {
|
||||||
var that = this;
|
var that = this;
|
||||||
this.element.find("button#logout").click(function () {
|
this.element.find("button#logout").click(function () {
|
||||||
window.location = "/logout";
|
window.location = base_url+"logout";
|
||||||
});
|
});
|
||||||
this.element.find("button#login").click(function () {
|
this.element.find("button#login").click(function () {
|
||||||
window.location = "/login";
|
window.location = base_url+"login";
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
<div id="main_app">
|
<div id="main_app">
|
||||||
|
|
||||||
{% if login_available %}
|
{% if login_available %}
|
||||||
<form action="/login?next={{url_escape(next)}}" method="post">
|
<form action="{{base_project_url}}login?next={{url_escape(next)}}" method="post">
|
||||||
Password: <input type="password" class='ui-widget ui-widget-content' name="password" id="password_input">
|
Password: <input type="password" class='ui-widget ui-widget-content' name="password" id="password_input">
|
||||||
<input type="submit" value="Log in" id="login_submit">
|
<input type="submit" value="Log in" id="login_submit">
|
||||||
</form>
|
</form>
|
||||||
|
@ -23,9 +23,9 @@
|
|||||||
{% end %}
|
{% end %}
|
||||||
|
|
||||||
{% if read_only or not login_available %}
|
{% if read_only or not login_available %}
|
||||||
Proceed to the <a href="/">dashboard</a>.
|
Proceed to the <a href="{{base_project_url}}">dashboard</a>.
|
||||||
{% else %}
|
{% else %}
|
||||||
Proceed to the <a href="/login">login page</a>.
|
Proceed to the <a href="{{base_project_url}}login">login page</a>.
|
||||||
{% end %}
|
{% end %}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user