diff options
author | NavaL <mnandri@thoughtworks.com> | 2016-02-03 17:23:42 +0100 |
---|---|---|
committer | NavaL <mnandri@thoughtworks.com> | 2016-02-05 14:43:07 +0100 |
commit | e7f77052f0aba1b84febf0ab1382c9602bbf7f93 (patch) | |
tree | 5fd8dd1016cbb21ebd4572284ca84f24bd9ccfa1 /service/pixelated/resources | |
parent | 92f0e9887a216e0ec82355941655d3deebf2d422 (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__.py | 2 | ||||
-rw-r--r-- | service/pixelated/resources/auth.py | 11 | ||||
-rw-r--r-- | service/pixelated/resources/login_resource.py | 4 | ||||
-rw-r--r-- | service/pixelated/resources/logout_resource.py | 2 |
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) |