From 053d51e8c6484f95b43c7b45e5b42fcb3e89784c Mon Sep 17 00:00:00 2001 From: NavaL Date: Thu, 19 May 2016 11:51:43 +0200 Subject: when invalid soledad auth token, it logs user out if multi-user and stops the reactor if single-user mode Issue #689 --- service/pixelated/application.py | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) (limited to 'service/pixelated/application.py') 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: -- cgit v1.2.3