diff --git a/src/python/dm/ds_web_service/service/authSessionController.py b/src/python/dm/ds_web_service/service/authSessionController.py index f33255a8fb85379b7feb973f795e18b7e48b6208..d9fc36828fb462a805bf8f251103c381acf49881 100755 --- a/src/python/dm/ds_web_service/service/authSessionController.py +++ b/src/python/dm/ds_web_service/service/authSessionController.py @@ -1,6 +1,10 @@ #authenticateUser!/usr/bin/env python +import json import cherrypy +from dm.common.utility.encoder import Encoder +from dm.common.exceptions.invalidRequest import InvalidRequest + from dm.common.service.dmSessionController import DmSessionController from dm.ds_web_service.service.impl.authSessionControllerImpl import AuthSessionControllerImpl @@ -20,3 +24,27 @@ class AuthSessionController(DmSessionController): self.logger.debug('Returning authorization principal for %s' % (username)) return response + @cherrypy.expose + @DmSessionController.require(DmSessionController.isAdministrator()) + @DmSessionController.execute + def addSession(self, sessionId, **kwargs): + if not len(sessionId): + raise InvalidRequest('Invalid session id provided.') + sessionInfo = kwargs.get('sessionInfo') + if not sessionInfo: + raise InvalidRequest('Missing session object.') + sessionInfo = json.loads(Encoder.decode(sessionInfo)) + response = self.authSessionControllerImpl.addSession(sessionId, sessionInfo).getFullJsonRep() + self.logger.debug('Session %s added to cache' % (sessionInfo)) + return response + + @cherrypy.expose + @DmSessionController.require(DmSessionController.isAdministrator()) + @DmSessionController.execute + def checkSession(self, sessionId, **kwargs): + if not len(sessionId): + raise InvalidRequest('Invalid session id provided.') + response = self.authSessionControllerImpl.checkSession(sessionId).getFullJsonRep() + self.logger.debug('Verified session %s' % (sessionId)) + return response +