summaryrefslogtreecommitdiff
path: root/service/pixelated/resources
diff options
context:
space:
mode:
authorNavaL <mnandri@thoughtworks.com>2016-02-03 17:23:42 +0100
committerNavaL <mnandri@thoughtworks.com>2016-02-05 14:43:07 +0100
commite7f77052f0aba1b84febf0ab1382c9602bbf7f93 (patch)
tree5fd8dd1016cbb21ebd4572284ca84f24bd9ccfa1 /service/pixelated/resources
parent92f0e9887a216e0ec82355941655d3deebf2d422 (diff)
closing the services closes leap session, which stops background tasks, close soldedad and remove it from cache
Issue #586
Diffstat (limited to 'service/pixelated/resources')
-rw-r--r--service/pixelated/resources/__init__.py2
-rw-r--r--service/pixelated/resources/auth.py11
-rw-r--r--service/pixelated/resources/login_resource.py4
-rw-r--r--service/pixelated/resources/logout_resource.py2
4 files changed, 11 insertions, 8 deletions
diff --git a/service/pixelated/resources/__init__.py b/service/pixelated/resources/__init__.py
index 2e451a69..14ecac86 100644
--- a/service/pixelated/resources/__init__.py
+++ b/service/pixelated/resources/__init__.py
@@ -63,7 +63,7 @@ class BaseResource(Resource):
def is_logged_in(self, request):
session = self.get_session(request)
- return session.is_logged_in()
+ return session.is_logged_in() and self._services_factory.is_logged_in(session.user_uuid)
def get_session(self, request):
return IPixelatedSession(request.getSession())
diff --git a/service/pixelated/resources/auth.py b/service/pixelated/resources/auth.py
index 92efaa27..e2e7ec97 100644
--- a/service/pixelated/resources/auth.py
+++ b/service/pixelated/resources/auth.py
@@ -78,12 +78,14 @@ class SessionCredential(object):
class SessionChecker(object):
credentialInterfaces = (ISessionCredential,)
+ def __init__(self, services_factory):
+ self._services_factory = services_factory
+
def requestAvatarId(self, credentials):
session = self.get_session(credentials.request)
- if session.is_logged_in():
- return defer.succeed(session.user_uuid)
- else:
- return defer.succeed(ANONYMOUS)
+ if session.is_logged_in() and self._services_factory.is_logged_in(session.user_uuid):
+ return defer.succeed(session.user_uuid)
+ return defer.succeed(ANONYMOUS)
def get_session(self, request):
return IPixelatedSession(request.getSession())
@@ -131,7 +133,6 @@ class PixelatedAuthSessionWrapper(object):
def _loginSucceeded(self, args):
interface, avatar, logout = args
-
if avatar == checkers.ANONYMOUS:
return self._anonymous_resource
else:
diff --git a/service/pixelated/resources/login_resource.py b/service/pixelated/resources/login_resource.py
index ca8f0b11..1e1beb48 100644
--- a/service/pixelated/resources/login_resource.py
+++ b/service/pixelated/resources/login_resource.py
@@ -99,11 +99,11 @@ class LoginResource(BaseResource):
if self.is_logged_in(request):
return util.redirectTo("/", request)
- def render_response(leap_user):
+ def render_response(leap_session):
request.setResponseCode(OK)
request.write(open(os.path.join(self._startup_folder, 'Interstitial.html')).read())
request.finish()
- self._setup_user_services(leap_user, request)
+ self._setup_user_services(leap_session, request)
def render_error(error):
log.info('Login Error for %s' % request.args['username'][0])
diff --git a/service/pixelated/resources/logout_resource.py b/service/pixelated/resources/logout_resource.py
index 9fd16451..fe80316e 100644
--- a/service/pixelated/resources/logout_resource.py
+++ b/service/pixelated/resources/logout_resource.py
@@ -10,5 +10,7 @@ class LogoutResource(BaseResource):
def render_GET(self, request):
session = self.get_session(request)
+ self._services_factory.log_out_user(session.user_uuid)
session.expire()
+
return util.redirectTo("/%s" % LoginResource.BASE_URL, request)