summaryrefslogtreecommitdiff
path: root/service/pixelated
diff options
context:
space:
mode:
authorTulio Casagrande <tcasagra@thoughtworks.com>2017-02-10 14:12:04 -0200
committerTulio Casagrande <tcasagra@thoughtworks.com>2017-02-10 16:28:44 -0200
commit29034222ca16c29e9301b769802a2e49446e9075 (patch)
tree036c55124cd593529e851010152ad6a11ba2c1c4 /service/pixelated
parentcf7d2c516a897e6b19e0e11fd8c104e68a0951ad (diff)
[#907] Add login status to session
Diffstat (limited to 'service/pixelated')
-rw-r--r--service/pixelated/resources/login_resource.py14
-rw-r--r--service/pixelated/resources/session.py15
2 files changed, 24 insertions, 5 deletions
diff --git a/service/pixelated/resources/login_resource.py b/service/pixelated/resources/login_resource.py
index 424e051b..ddc22b2a 100644
--- a/service/pixelated/resources/login_resource.py
+++ b/service/pixelated/resources/login_resource.py
@@ -149,15 +149,19 @@ class LoginResource(BaseResource):
defer.returnValue(user_auth)
def _complete_bootstrap(self, user_auth, request):
- def login_error(error):
+ def login_error(error, session):
log.error('Login error during %s services setup: %s \n %s' % (user_auth.username, error.getErrorMessage(), error.getTraceback()))
+ session.login_error()
- def set_session_cookies(_):
- session = IPixelatedSession(request.getSession())
+ def set_session_cookies(_, session):
session.user_uuid = user_auth.uuid
+ session.login_completed()
language = parse_accept_language(request.getAllHeaders())
password = request.args['password'][0]
+ session = IPixelatedSession(request.getSession())
+ session.login_started()
+
d = self._bootstrap_user_services.setup(user_auth, password, language)
- d.addCallback(set_session_cookies)
- d.addErrback(login_error)
+ d.addCallback(set_session_cookies, session)
+ d.addErrback(login_error, session)
diff --git a/service/pixelated/resources/session.py b/service/pixelated/resources/session.py
index 9ade8d29..84f2ebeb 100644
--- a/service/pixelated/resources/session.py
+++ b/service/pixelated/resources/session.py
@@ -21,6 +21,7 @@ from twisted.web.server import Session
class IPixelatedSession(Interface):
user_uuid = Attribute('The uuid of the currently logged in user')
+ login_status = Attribute('The status during user login')
class PixelatedSession(object):
@@ -28,12 +29,26 @@ class PixelatedSession(object):
def __init__(self, session):
self.user_uuid = None
+ self.login_status = None
def is_logged_in(self):
return self.user_uuid is not None
def expire(self):
self.user_uuid = None
+ self.login_status = None
+
+ def login_started(self):
+ self.login_status = 'started'
+
+ def login_completed(self):
+ self.login_status = 'completed'
+
+ def login_error(self):
+ self.login_status = 'error'
+
+ def check_login_status(self):
+ return self.login_status
registerAdapter(PixelatedSession, Session, IPixelatedSession)