summaryrefslogtreecommitdiff
path: root/service/pixelated/application.py
diff options
context:
space:
mode:
authorNavaL <ayoyo@thoughtworks.com>2016-05-19 11:51:43 +0200
committerNavaL <ayoyo@thoughtworks.com>2016-05-19 11:51:43 +0200
commit053d51e8c6484f95b43c7b45e5b42fcb3e89784c (patch)
treec624ef9832b544e823eb345bf24c58b30f7bfcc2 /service/pixelated/application.py
parent021fd399db4801c3d2c96b6f2bace99046d9f54b (diff)
when invalid soledad auth token, it logs user out if multi-user and stops the reactor if single-user mode
Issue #689
Diffstat (limited to 'service/pixelated/application.py')
-rw-r--r--service/pixelated/application.py25
1 files changed, 17 insertions, 8 deletions
diff --git a/service/pixelated/application.py b/service/pixelated/application.py
index 69af27b9..2474b79b 100644
--- a/service/pixelated/application.py
+++ b/service/pixelated/application.py
@@ -78,6 +78,9 @@ class SingleUserServicesFactory(object):
def services(self, user_id):
return self._services
+ def log_out_user(self, user_id):
+ reactor.stop()
+
class UserAgentMode(object):
def __init__(self, is_single_user):
@@ -132,23 +135,29 @@ def initialize():
services_factory = _create_service_factory(args)
resource = RootResource(services_factory)
- deferred = _start_mode(args, resource, services_factory)
+ start_async = _start_mode(args, resource, services_factory)
+ add_top_level_system_callbacks(start_async, services_factory)
+ log.info('Running the reactor')
+ reactor.run()
+
+
+def add_top_level_system_callbacks(deferred, services_factory):
def _quit_on_error(failure):
failure.printTraceback()
reactor.stop()
- def _register_shutdown_on_token_expire(leap_session):
- register(events.SOLEDAD_INVALID_AUTH_TOKEN, lambda *unused: reactor.stop())
+ def _log_user_out(user_data):
+ log.info('Invalid soledad token, logging out %s' % user_data)
+ services_factory.log_out_user(user_data['uuid'])
+
+ def _log_user_out_on_token_expire(leap_session):
+ register(events.SOLEDAD_INVALID_AUTH_TOKEN, _log_user_out)
return leap_session
- deferred.addCallback(_register_shutdown_on_token_expire)
+ deferred.addCallback(_log_user_out_on_token_expire)
deferred.addErrback(_quit_on_error)
- log.info('Running the reactor')
-
- reactor.run()
-
def _start_mode(args, resource, services_factory):
if services_factory.mode.is_single_user: