web/views/sessions.py
branchtls-sprint
changeset 1802 d628defebc17
parent 1133 8a409ea0c9ec
child 1977 606923dff11b
equal deleted inserted replaced
1801:672acc730ce5 1802:d628defebc17
    11 from cubicweb.web.application import AbstractSessionManager
    11 from cubicweb.web.application import AbstractSessionManager
    12 
    12 
    13 
    13 
    14 class InMemoryRepositorySessionManager(AbstractSessionManager):
    14 class InMemoryRepositorySessionManager(AbstractSessionManager):
    15     """manage session data associated to a session identifier"""
    15     """manage session data associated to a session identifier"""
    16     
    16 
    17     def __init__(self):
    17     def __init__(self):
    18         AbstractSessionManager.__init__(self)
    18         AbstractSessionManager.__init__(self)
    19         # XXX require a RepositoryAuthenticationManager which violates
    19         # XXX require a RepositoryAuthenticationManager which violates
    20         #     authenticate interface by returning a session instead of a user
    20         #     authenticate interface by returning a session instead of a user
    21         #assert isinstance(self.authmanager, RepositoryAuthenticationManager)
    21         #assert isinstance(self.authmanager, RepositoryAuthenticationManager)
    22         self._sessions = {}
    22         self._sessions = {}
    23 
    23 
    24     def current_sessions(self):
    24     def current_sessions(self):
    25         return self._sessions.values()
    25         return self._sessions.values()
    26     
    26 
    27     def get_session(self, req, sessionid):
    27     def get_session(self, req, sessionid):
    28         """return existing session for the given session identifier"""
    28         """return existing session for the given session identifier"""
    29         if not sessionid in self._sessions:
    29         if not sessionid in self._sessions:
    30             raise InvalidSession()
    30             raise InvalidSession()
    31         session = self._sessions[sessionid]
    31         session = self._sessions[sessionid]
    45             raise
    45             raise
    46         return session
    46         return session
    47 
    47 
    48     def open_session(self, req):
    48     def open_session(self, req):
    49         """open and return a new session for the given request
    49         """open and return a new session for the given request
    50         
    50 
    51         :raise ExplicitLogin: if authentication is required
    51         :raise ExplicitLogin: if authentication is required
    52         """
    52         """
    53         session = self.authmanager.authenticate(req)
    53         session = self.authmanager.authenticate(req)
    54         self._sessions[session.sessionid] = session
    54         self._sessions[session.sessionid] = session
    55         return session
    55         return session
    56     
    56 
    57     def close_session(self, session):
    57     def close_session(self, session):
    58         """close session on logout or on invalid session detected (expired out,
    58         """close session on logout or on invalid session detected (expired out,
    59         corrupted...)
    59         corrupted...)
    60         """
    60         """
    61         self.info('closing http session %s' % session)
    61         self.info('closing http session %s' % session)
    64             session.close()
    64             session.close()
    65         except:
    65         except:
    66             # already closed, may occurs if the repository session expired but
    66             # already closed, may occurs if the repository session expired but
    67             # not the web session
    67             # not the web session
    68             pass
    68             pass
    69