diff --git a/IPython/html/auth/login.py b/IPython/html/auth/login.py index 2fd94ad..9de7fcf 100644 --- a/IPython/html/auth/login.py +++ b/IPython/html/auth/login.py @@ -44,6 +44,24 @@ class LoginHandler(IPythonHandler): self.redirect(self.get_argument('next', default=self.base_url)) + @staticmethod + def get_user(handler): + """Called by handlers for identifying the current user.""" + # Can't call this get_current_user because it will collide when + # called on LoginHandler itself. + + user_id = handler.get_secure_cookie(handler.cookie_name) + # For now the user_id should not return empty, but it could eventually + if user_id == '': + user_id = 'anonymous' + if user_id is None: + # prevent extra Invalid cookie sig warnings: + handler.clear_login_cookie() + if not handler.login_available: + user_id = 'anonymous' + return user_id + + @classmethod def validate_notebook_app_security(cls, notebook_app, ssl_options=None): if not notebook_app.ip: diff --git a/IPython/html/base/handlers.py b/IPython/html/base/handlers.py index 882c0a4..a45d4f7 100644 --- a/IPython/html/base/handlers.py +++ b/IPython/html/base/handlers.py @@ -68,16 +68,9 @@ class AuthenticatedHandler(web.RequestHandler): self.clear_cookie(self.cookie_name) def get_current_user(self): - user_id = self.get_secure_cookie(self.cookie_name) - # For now the user_id should not return empty, but it could eventually - if user_id == '': - user_id = 'anonymous' - if user_id is None: - # prevent extra Invalid cookie sig warnings: - self.clear_login_cookie() - if not self.login_available: - user_id = 'anonymous' - return user_id + if self.login_handler is None: + return 'anonymous' + return self.login_handler.get_user(self) @property def cookie_name(self):