Class SessionManager

  • All Implemented Interfaces:
    Initialization, SessionManagement

    @Service
    @Singleton
    public class SessionManager
    extends Object
    implements SessionManagement, Initialization
    Implementation of the org.silverpeas.core.security.session.SessionManagement interface. It extends the session management performed by the underlying application service by adding useful session-related features like statistics about the connection time of each user or like the actual number of connected users.
    Author:
    Nicolas Eysseric
    • Constructor Detail

      • SessionManager

        protected SessionManager()
        Prevent the class from being instantiated (private)
    • Method Detail

      • init

        public void init()
        Description copied from interface: Initialization
        Initializes some resources required by the services or performs some initialization processes at Silverpeas startup.
        Specified by:
        init in interface Initialization
      • release

        public void release()
                     throws Exception
        Description copied from interface: Initialization
        Releases the previously initialized resources at Silverpeas shutdown. The implementation of this method is optional. By default it does nothing.
        Specified by:
        release in interface Initialization
        Throws:
        Exception - if an error occurs during the shutdown process. In this case, a log will be outputed and the shutdown goes one.
      • validateSession

        public SessionInfo validateSession​(SessionValidationContext context)
        Description copied from interface: SessionManagement
        Validates the session identified uniquely by the specified key. The validation checks a session exists with the specified identifier and returns information about this session. At each access by the user to Silverpeas, its current session must be validated. The validation updates also useful information about the session like the timestamp of this access so that additional features can be performed (for example, the timeout computation of the session).
        Specified by:
        validateSession in interface SessionManagement
        Parameters:
        context - the context of the validation that contains at least the session key
        Returns:
        information about the session identified by the specified key or null if no such session exists.
      • closeSession

        public void closeSession​(String sessionId)
        Description copied from interface: SessionManagement
        Closes the specified user session.
        Specified by:
        closeSession in interface SessionManagement
        Parameters:
        sessionId - the key of the session to close.
      • getSessionInfo

        @Nonnull
        public SessionInfo getSessionInfo​(String sessionId)
        Description copied from interface: SessionManagement
        Gets information about the specified user session.
        Specified by:
        getSessionInfo in interface SessionManagement
        Parameters:
        sessionId - the key of the user session.
        Returns:
        the information about the session mapped to the specified key.
      • getDistinctConnectedUsersList

        public Collection<SessionInfo> getDistinctConnectedUsersList​(User user)
        Gets for the specified user all the connected users and the duration of their session. The actual domain restriction policy is taken into account for the user asking the users currently connected in Silverpeas.
        Specified by:
        getDistinctConnectedUsersList in interface SessionManagement
        Parameters:
        user - the current user asking for actual opened user sessions.
        Returns:
        Collection of opened user sessions.
      • getNbConnectedUsersList

        public int getNbConnectedUsersList​(User user)
        Gets the number of connected users in Silverpeas for the specified user. The domain restriction policy is taken into account for the given user in the filtering of the opened user sessions.
        Specified by:
        getNbConnectedUsersList in interface SessionManagement
        Parameters:
        user - the user asking the number of actually connected users.
        Returns:
        nb of connected users
      • shutdown

        public void shutdown()
        This method remove and invalidates all sessions. The unique instance of the SessionManager will be destroyed.
      • openSession

        public SessionInfo openSession​(User user,
                                       javax.servlet.http.HttpServletRequest request)
        Description copied from interface: SessionManagement
        Opens a new session for the specified user with the specified HTTP request at the origin of the session ask. The opened session is built upon an HTTP one, and it is managed directly by the underlying HTTP server/container. If the specified user is anonymous, then an IllegalArgumentException is thrown.
        Specified by:
        openSession in interface SessionManagement
        Parameters:
        user - the user for which an HTTP session with Silverpeas has to be opened.
        request - the HTTP request at the origin of the session opening ask.
        Returns:
        a SessionInfo instance representing the current opened session with information about that session.
      • openOneShotSession

        public SessionInfo openOneShotSession​(User user,
                                              javax.servlet.http.HttpServletRequest request)
        Description copied from interface: SessionManagement
        Opens a new session for the specified user with the specified HTTP request at the origin of the session ask. The opened session is only for the given HTTP request and it will be closed once the request processing is done.
        Specified by:
        openOneShotSession in interface SessionManagement
        Parameters:
        user - the user for which an HTTP session with Silverpeas has to be opened.
        request - the HTTP request at the origin of the session opening ask.
        Returns:
        a SessionInfo instance representing the current opened session with information about that session.
      • openAnonymousSession

        public SessionInfo openAnonymousSession​(javax.servlet.http.HttpServletRequest request)
        Description copied from interface: SessionManagement
        Opens explicitly a new anonymous session. The opened session is built upon an HTTP one managed directly by the underlying HTTP server/container. In Silverpeas, any anonymous access to it is done under the cover of a peculiar and specific user account, the anonymous user account. This requires the anonymous access to be enabled for Silverpeas and this is done by creating a specific account for the anonymous user (see the property anonymousId in the properties file org/silverpeas/lookAndFeel/generalLook.properties). So, any anonymous user are referred by a unique and same user account but have each of them a different and separate user session.
        Specified by:
        openAnonymousSession in interface SessionManagement
        Returns:
        a SessionInfo instance representing the current opened anonymous session with information about that session.
      • isUserConnected

        public boolean isUserConnected​(User user)
        Description copied from interface: SessionManagement
        Is the specified user currently connected to Silverpeas?
        Specified by:
        isUserConnected in interface SessionManagement
        Parameters:
        user - the user for which the connection is checked.
        Returns:
        true if the user is connected, false otherwise.