From 995049a04fb15bd4e1cf27bf11e3be46f84e3bfe Mon Sep 17 00:00:00 2001 From: Folker Bernitt Date: Tue, 19 Jan 2016 13:36:31 +0100 Subject: Add mutli-user mode to user-agent - Issue #576 - To start in multi user, run with --multi-user --provider provider-name.tld --- service/pixelated/resources/__init__.py | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) (limited to 'service/pixelated/resources/__init__.py') diff --git a/service/pixelated/resources/__init__.py b/service/pixelated/resources/__init__.py index 3d81d784..9cde015f 100644 --- a/service/pixelated/resources/__init__.py +++ b/service/pixelated/resources/__init__.py @@ -16,8 +16,12 @@ import json +from twisted.web._responses import UNAUTHORIZED from twisted.web.resource import Resource +# from pixelated.resources.login_resource import LoginResource +from pixelated.resources.session import IPixelatedSession + class SetEncoder(json.JSONEncoder): def default(self, obj): @@ -48,8 +52,19 @@ class BaseResource(Resource): self._services_factory = services_factory def _get_user_id_from_request(self, request): - # currently we are faking this - return self._services_factory._services_by_user.keys()[0] + if self._services_factory.mode.is_single_user: + return None # it doesn't matter + session = self.get_session(request) + if session.is_logged_in(): + return session.user_uuid + raise ValueError('Not logged in') + + def is_logged_in(self, request): + session = self.get_session(request) + return session.is_logged_in() + + def get_session(self, request): + return IPixelatedSession(request.getSession()) def _services(self, request): user_id = self._get_user_id_from_request(request) @@ -72,3 +87,13 @@ class BaseResource(Resource): def feedback_service(self, request): return self._service(request, 'feedback_service') + + +class UnAuthorizedResource(Resource): + + def __init__(self): + Resource.__init__(self) + + def render_GET(self, request): + request.setResponseCode(UNAUTHORIZED) + return "Unauthorized!" -- cgit v1.2.3