diff --git a/src/python/dm/ds_web_service/service/impl/authSessionControllerImpl.py b/src/python/dm/ds_web_service/service/impl/authSessionControllerImpl.py index 12ac9cd03a82151e9dd51a8bcccda144868483f6..44a9db0f468e0888d45e81a99a5803bd73eb981e 100755 --- a/src/python/dm/ds_web_service/service/impl/authSessionControllerImpl.py +++ b/src/python/dm/ds_web_service/service/impl/authSessionControllerImpl.py @@ -4,10 +4,14 @@ # Implementation for user info controller. # +import datetime +import cherrypy from dm.common.constants import dmRole from dm.common.objects.authorizationPrincipal import AuthorizationPrincipal from dm.common.objects.dmObjectManager import DmObjectManager +from dm.common.objects.dmSession import DmSession from dm.common.db.api.userDbApi import UserDbApi +from dm.common.exceptions.objectNotFound import ObjectNotFound class AuthSessionControllerImpl(DmObjectManager): """ User info controller implementation class. """ @@ -26,4 +30,22 @@ class AuthSessionControllerImpl(DmObjectManager): principal.setRole(dmRole.DM_ADMIN_ROLE) return principal + def addSession(self, sessionId, sessionInfo): + sessionCache = cherrypy.session.cache + self.logger.debug('Session cache length: %s' % (len(sessionCache))) + sessionCache[sessionId] = (sessionInfo, datetime.datetime.now()) + self.logger.debug('Session cache: %s' % (sessionCache)) + return DmSession(sessionInfo) + + def checkSession(self, sessionId): + sessionCache = cherrypy.session.cache + sessionTuple = sessionCache.get(sessionId) + if not sessionTuple: + raise ObjectNotFound('Session %s not found in cache.' % sessionId) + sessionInfo = sessionTuple[0] + oldTimestamp = sessionTuple[1] + newTimestamp = datetime.datetime.now() + self.logger.debug('Updated timestamp from %s to %s for session id %s' % (oldTimestamp, newTimestamp, sessionId)) + sessionCache[sessionId] = (sessionInfo, newTimestamp) + return DmSession(sessionInfo)