#!/usr/bin/env python import os from dm.common.utility.configurationManager import ConfigurationManager from dm.common.objects.dmObjectManager import DmObjectManager from dm.common.utility.objectUtility import ObjectUtility from dm.common.utility.singleton import Singleton from dm.common.exceptions.objectNotFound import ObjectNotFound class SingleSignOnManager(DmObjectManager, Singleton): DEFAULT_SESSION_TIMEOUT_IN_SECONDS = 3600 # seconds CONFIG_SECTION_NAME = 'SingleSignOnManager' SESSION_MANAGER_KEY = 'sessionManager' SESSION_TIMEOUT_IN_SECONDS_KEY = 'sessionTimeoutInSeconds' # Singleton instance. __instance = None def __init__(self): if SingleSignOnManager.__instance: return SingleSignOnManager.__instance = self DmObjectManager.__init__(self) self.configurationManager = ConfigurationManager.getInstance() self.sessionManager = None self.configure() def configure(self): configItems = self.configurationManager.getConfigItems(SingleSignOnManager.CONFIG_SECTION_NAME) self.logger.debug('Got config items: %s' % configItems) if not configItems: return sessionTimeout = self.configurationManager.getConfigOption(SingleSignOnManager.CONFIG_SECTION_NAME, SingleSignOnManager.SESSION_TIMEOUT_IN_SECONDS_KEY, SingleSignOnManager.DEFAULT_SESSION_TIMEOUT_IN_SECONDS) self.logger.debug('Session timeout: %s' % sessionTimeout) # Create session manager sessionManager = self.configurationManager.getConfigOption(SingleSignOnManager.CONFIG_SECTION_NAME, SingleSignOnManager.SESSION_MANAGER_KEY) (moduleName,className,constructor) = self.configurationManager.getModuleClassConstructorTuple(sessionManager, SingleSignOnManager) self.logger.debug('Creating session manager class: %s' % className) self.sessionManager = ObjectUtility.createObjectInstance(moduleName, className, constructor) def addSession(self, sessionId, sessionInfo): if self.sessionManager: self.logger.debug('Adding session id %s: %s' % (sessionId,sessionInfo)) try: return self.sessionManager.addSession(sessionId, sessionInfo) except Exception, ex: self.logger.error(ex) return None def checkSession(self, sessionId): if self.sessionManager: self.logger.debug('Checking session id: %s' % sessionId) try: return self.sessionManager.checkSession(sessionId) except ObjectNotFound, ex: self.logger.debug(ex) except Exception, ex: self.logger.error(ex) return None ####################################################################### # Testing. if __name__ == '__main__': am = AuthorizationPrincipalManager.getInstance() authPrincipal = am.getAuthorizationPrincipal('sveseli', 'sv') print 'Auth principal: ', authPrincipal