From 42f040c6a1f61e3724f75c65e4f59c24725910a5 Mon Sep 17 00:00:00 2001 From: MinRK Date: Sat, 13 Sep 2014 17:19:34 -0700 Subject: [PATCH] return orm.User from get_current_user rather than name. removes need for `get_user` wrapper --- jupyterhub/handlers/base.py | 28 +++++++++++++--------------- jupyterhub/handlers/login.py | 4 +--- 2 files changed, 14 insertions(+), 18 deletions(-) diff --git a/jupyterhub/handlers/base.py b/jupyterhub/handlers/base.py index 757fad2a..e8e31a66 100644 --- a/jupyterhub/handlers/base.py +++ b/jupyterhub/handlers/base.py @@ -67,7 +67,7 @@ class BaseHandler(RequestHandler): if orm_token is None: return None else: - return orm_token.user.name + return orm_token.user def get_current_user_cookie(self): """get_current_user from a cookie token""" @@ -76,7 +76,7 @@ class BaseHandler(RequestHandler): cookie_token = self.db.query(orm.CookieToken).filter( orm.CookieToken.token==token).first() if cookie_token: - return cookie_token.user.name + return cookie_token.user else: # have cookie, but it's not valid. Clear it and start over. self.clear_cookie(self.hub.server.cookie_name, path=self.hub.server.base_url) @@ -88,7 +88,7 @@ class BaseHandler(RequestHandler): return user return self.get_current_user_cookie() - def get_user(self, username): + def user_from_username(self, username): """Get ORM User for username""" user = self.db.query(orm.User).filter(orm.User.name==username).first() @@ -97,13 +97,11 @@ class BaseHandler(RequestHandler): self.db.add(user) self.db.commit() return user - + def clear_login_cookie(self): - username = self.get_current_user() - if username is not None: - user = self.get_user(username) - if user.server is not None: - self.clear_cookie(user.server.cookie_name, path=user.server.base_url) + user = self.get_current_user() + if user and user.server: + self.clear_cookie(user.server.cookie_name, path=user.server.base_url) self.clear_cookie(self.hub.server.cookie_name, path=self.hub.server.base_url) def set_login_cookies(self, user): @@ -208,8 +206,7 @@ class BaseHandler(RequestHandler): @property def logged_in(self): """Is a user currently logged in?""" - user = self.get_current_user() - return (user and not user == 'anonymous') + return self.get_current_user() is not None @property def template_namespace(self): @@ -267,7 +264,7 @@ class RootHandler(BaseHandler): """Render the Hub root page.""" @web.authenticated def get(self): - user = self.get_user(self.get_current_user()) + user = self.get_current_user() html = self.render_template('index.html', server_running = user.server is not None, server_url = '/user/%s' % user.name, @@ -281,10 +278,11 @@ class UserHandler(BaseHandler): This handler shouldn't be called if the proxy is set up correctly. """ @web.authenticated - def get(self, user): + def get(self, name): self.log.warn("Hub serving single-user url: %s", self.request.path) - if self.get_current_user() == user: - self.spawn_single_user(self.get_user(user)) + current_user = self.get_current_user() + if current_user and current_user.name == name: + self.spawn_single_user(current_user) self.redirect('') else: self.log.warn("Hub serving single-user url: %s", self.request.path) diff --git a/jupyterhub/handlers/login.py b/jupyterhub/handlers/login.py index 4a787a9f..05d58e84 100644 --- a/jupyterhub/handlers/login.py +++ b/jupyterhub/handlers/login.py @@ -6,8 +6,6 @@ from tornado.escape import url_escape from tornado import gen -from .. import orm - from .base import BaseHandler @@ -46,7 +44,7 @@ class LoginHandler(BaseHandler): username = data['username'] authorized = yield self.authenticate(data) if authorized: - user = self.get_user(username) + user = self.user_from_username(username) yield self.spawn_single_user(user) self.set_login_cookies(user) next_url = self.get_argument('next', default='') or self.hub.server.base_url