From ee5b5198e89f23cd49d41dc58fb93443b5d8c9e1 Mon Sep 17 00:00:00 2001 From: NavaL Date: Sun, 22 May 2016 12:12:08 +0200 Subject: accomodates the case where the email address is the data sent with the event - now username and user_id are mapped when the user logs in - Issue #686 --- service/pixelated/application.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'service/pixelated/application.py') diff --git a/service/pixelated/application.py b/service/pixelated/application.py index 8eba0cd9..af29bc5f 100644 --- a/service/pixelated/application.py +++ b/service/pixelated/application.py @@ -44,6 +44,10 @@ class ServicesFactory(object): def __init__(self, mode): self._services_by_user = {} self.mode = mode + self._map_email = {} + + def map_email(self, username, user_id): + self._map_email[username] = user_id def is_logged_in(self, user_id): return user_id in self._services_by_user @@ -51,7 +55,10 @@ class ServicesFactory(object): def services(self, user_id): return self._services_by_user[user_id] - def log_out_user(self, user_id): + def log_out_user(self, user_id, using_email=False): + if using_email: + user_id = self._map_email[user_id.split('@')[0]] + if self.is_logged_in(user_id): _services = self._services_by_user[user_id] _services.close() @@ -78,7 +85,7 @@ class SingleUserServicesFactory(object): def services(self, user_id): return self._services - def log_out_user(self, user_id): + def log_out_user(self, user_id, using_email=False): reactor.stop() @@ -149,7 +156,8 @@ def add_top_level_system_callbacks(deferred, services_factory): def _log_user_out(event, user_data): log.info('Invalid soledad token, logging out %s' % user_data) - services_factory.log_out_user(user_data['uuid']) + user_data = {'user_id': user_data['uuid']} if 'uuid' in user_data else {'user_id': user_data, 'using_email': True} + services_factory.log_out_user(**user_data) def _log_user_out_on_token_expire(leap_session): register(events.SOLEDAD_INVALID_AUTH_TOKEN, _log_user_out) -- cgit v1.2.3