Class WebAppSessionManagerImpl

    • Constructor Detail

      • WebAppSessionManagerImpl

        public WebAppSessionManagerImpl​(AppContext ownerAppContext)
    • Method Detail

      • changeLocale

        public void changeLocale()
        Description copied from interface: WebAppSessionManager
        Changes the locale on all sessions in a cluster with the active one to the setting which is set on the session's preferences. This method will look at those preferences, and if they do not match the locale on the session, change the session locale, if we have enough information to recreate the session.
        Specified by:
        changeLocale in interface WebAppSessionManager
      • changeSessionFlags

        public void changeSessionFlags()
        Description copied from interface: WebAppSessionManager
        Changes the session flags for the session. This method will check the user session's prefrerences for the session and all sessions in the same cluster of servers, and if the current session flags are not the same as the session flags in the preferences, the session flags will be changed, if there exists enough information to recreate the session.
        Specified by:
        changeSessionFlags in interface WebAppSessionManager
      • changePassword

        public void changePassword​(java.lang.String oldP,
                                   java.lang.String newP)
                            throws WebAppException
        Description copied from interface: WebAppSessionManager
        Changes the active session's password from the old password given to the new password.
        Specified by:
        changePassword in interface WebAppSessionManager
        Parameters:
        oldP - The old password. Needed to confirm the correct user's identity.
        newP - The new password.
        Throws:
        WebAppException - Thrown if an error occurs when attempting to change password.
      • isAdminUser

        public boolean isAdminUser()
        Description copied from interface: WebAppSessionManager
        Returns whether the active session's user is an administrative user or not. This is checked via checking privileges.
        Specified by:
        isAdminUser in interface WebAppSessionManager
        Returns:
        True if the active session's user has administrative privileges, false otherwise.
      • needNewPswd

        public boolean needNewPswd()
        Description copied from interface: WebAppSessionManager
        Returns whether the user needs to update password or not.
        Specified by:
        needNewPswd in interface WebAppSessionManager
        Returns:
        true if new password is needed.
      • getProjectsList

        public java.util.ArrayList getProjectsList​(boolean refresh)
                                            throws WebAppException
        Description copied from interface: WebAppSessionManager
        Returns an ArrayList of ProjectInformation objects, which contain information about the projects we are connected to.
        Specified by:
        getProjectsList in interface WebAppSessionManager
        Parameters:
        refresh - A boolean variable indicates whether we should refresh the project list. If this parameter is false, and there is cached result of this call, we will return the last result, or throw the same exception as last time. If this parameter is true, we will ingore the cache and refresh the project list.
        Returns:
        An ArrayList of ProjectInformation objects.
        Throws:
        WebAppException - Thrown if an error occurs.
        Since:
        MicroStrategy Web 8.0.3
      • removeAllSessions

        public void removeAllSessions()
        Description copied from interface: WebAppSessionManager
        Removes all sessions from the list, closing them if the external security manager setup on the application context says to do so.
        Specified by:
        removeAllSessions in interface WebAppSessionManager
      • removeActiveSession

        public void removeActiveSession()
        Description copied from interface: WebAppSessionManager
        Removes the active session from the list, closing it if the external security manager setup on the application context says to do so.
        Specified by:
        removeActiveSession in interface WebAppSessionManager
      • validateSession

        public void validateSession()
                             throws WebAppException
        Description copied from interface: WebAppSessionManager
        This method attempts to validate the active session. If the session cannot be validated, then it can also attempt to recover for a specific set of error conditions. If the session cannot be validated or recovered, this method will throw an exception. If an exception is not thrown, then the session is valid. If there is result of previous validateSession call, it will not re-do the validation, install just returns the same validation result. If you need do the validation regardless the previous result, use WebAppSessionManager.validateSession(boolean) passing true as parameter.
        Specified by:
        validateSession in interface WebAppSessionManager
        Throws:
        WebAppException - Thrown if the active session is confirmed to be invalid.
      • validateSession

        public void validateSession​(WebIServerSession session)
                             throws WebAppException
        Description copied from interface: WebAppSessionManager
        This method attempts to validate the given session. If the session cannot be validated, then it can also attempt to recover for a specific set of error conditions. If the session cannot be validated or recovered, this method will throw an exception. If an exception is not thrown, then the session is valid.
        Specified by:
        validateSession in interface WebAppSessionManager
        Parameters:
        session - The session to validate.
        Throws:
        WebAppException - Thrown if the active session is confirmed to be invalid.
      • validateSession

        public void validateSession​(boolean refresh)
                             throws WebAppException
        Description copied from interface: WebAppSessionManager
        This method attempts to validate the active session. If the session cannot be validated, then it can also attempt to recover for a specific set of error conditions. If the session cannot be validated or recovered, this method will throw an exception. If an exception is not thrown, then the session is valid.
        Specified by:
        validateSession in interface WebAppSessionManager
        Parameters:
        refresh - The boolean vairable indicates whether we should use previous validation result. If this is false and there is result of previous validateSession call, it will not re-do the validation, install just returns the same validation result. Eitherwise, it will do the validation process.
        Throws:
        WebAppException - Thrown if the active session is confirmed to be invalid.
        Since:
        MicroStrategy Web 8.0.3
      • getLastMsgIDFromCookie

        public java.lang.String getLastMsgIDFromCookie​(int msgKey)
        Get the last message ID from cookie for provided message key {@see buildLastMessageKey()}
        Specified by:
        getLastMsgIDFromCookie in interface WebAppSessionManager
        Returns:
        {String}
      • initActiveSessionFromRequest

        public WebIServerSession initActiveSessionFromRequest()
                                                       throws WebAppException
        Description copied from interface: WebAppSessionManager
        This method will examine the request, and attempt to either set the active session properly, or create a brand new session that will become the active session, if the request asks for a session on a server without a session and project already created on it.
        Specified by:
        initActiveSessionFromRequest in interface WebAppSessionManager
        Returns:
        The WebIServerSession that is active after the call. This session is the one that is requested to be used by the variables passed as part of the request.
        Throws:
        WebAppException - Thrown if an error occurs.
      • initActiveSessionFromRequest

        public WebIServerSession initActiveSessionFromRequest​(ServletWebComponent servletWebComponent)
                                                       throws WebAppException
        Description copied from interface: WebAppSessionManager
        This method will examine the request, and attempt to either set the active session properly, or create a brand new session that will become the active session, if the request asks for a session on a server without a session and project already created on it. Note that this method will, if a key or server/project/port is not found in the request, check with the ServletWebComponent to see what the current server/project/port is. This will return null if no server is specified, or the server is not connected (or cannot be auto-connected).
        Specified by:
        initActiveSessionFromRequest in interface WebAppSessionManager
        Parameters:
        servletWebComponent - A ServletWebComponent object representing the servlet, which can be queried for the server, project, and port for the current request.
        Returns:
        The WebIServerSession that is active after the call. This session is the one that is requested to be used by the variables passed as part of the request.
        Throws:
        WebAppException - Thrown if an error occurs.
      • initActiveSessionFromRequest

        public WebIServerSession initActiveSessionFromRequest​(ServletWebComponent servletWebComponent,
                                                              boolean doNotInvalidateSession)
                                                       throws WebAppException
        Description copied from interface: WebAppSessionManager
        This method will examine the request, and attempt to either set the active session properly, or create a brand new session that will become the active session, if the request asks for a session on a server without a session and project already created on it. Note that this method will, if a key or server/project/port is not found in the request, check with the ServletWebComponent to see what the current server/project/port is. This will return null if no server is specified, or the server is not connected (or cannot be auto-connected).
        Specified by:
        initActiveSessionFromRequest in interface WebAppSessionManager
        Parameters:
        servletWebComponent - A ServletWebComponent object representing the servlet, which can be queried for the server, project, and port for the current request.
        doNotInvalidateSession - a flag to indacate whether to invalidate Session. Can be passed by AppTaskRequestContext
        Returns:
        The WebIServerSession that is active after the call. This session is the one that is requested to be used by the variables passed as part of the request.
        Throws:
        WebAppException - Thrown if an error occurs.
      • setCredentials

        public void setCredentials​(java.lang.String uid,
                                   java.lang.String p,
                                   int authMode)
                            throws WebAppException
        Description copied from interface: WebAppSessionManager
        Sets the credentials for the active session. If the login first functionality is enabled, then these credentials will be kept around until overridden and used for every session.
        Specified by:
        setCredentials in interface WebAppSessionManager
        Parameters:
        uid - The user ID of the login
        p - The password of the login
        authMode - The authentication mode of the credentials, from EnumDSSXMLAuthModes.
        Throws:
        WebAppException - Thrown if an error occurs.
      • isSeamlessLoginEnabled

        protected boolean isSeamlessLoginEnabled()
      • getInitialAuthMode

        protected int getInitialAuthMode​(WebIServerSession session)
      • saveState

        public void saveState​(java.lang.StringBuffer buf,
                              int howMuchState)
                       throws java.lang.UnsupportedOperationException
        Description copied from interface: Persistable
        Saves and stores a component's state into a StringBuffer. The returned state should be HTML friendly.

        There are generally two formats of the saved state: flat state and XML representation. The minimum state is saved in flat state format, while the typical and maximum states are saved in XML string representation.

        Specified by:
        saveState in interface Persistable
        Overrides:
        saveState in class AbstractPersistable
        Parameters:
        buf - a StringBuffer to store the saved state.
        howMuchState - how much state information to save (EnumWebPersistableState).
        Throws:
        java.lang.UnsupportedOperationException - thrown if the component does not support this method, or does not support certain howMuchState level.
      • restoreState

        public boolean restoreState​(SAXSupport saxSupport,
                                    java.lang.String a,
                                    java.lang.String b,
                                    java.lang.String c,
                                    org.xml.sax.Attributes attrs)
        Description copied from interface: Persistable
        Restores a component from an embedded XML during a SAX parsing.
        Specified by:
        restoreState in interface Persistable
        Overrides:
        restoreState in class AbstractPersistable
        Parameters:
        saxSupport - a SAX parser processing the XML representation of a state
        a - The Namespace URI, or the empty string if the element has no Namespace URI or if Namespace processing is not being performed
        b - The local name (without prefix), or the empty string if Namespace processing is not being performed
        c - The qualified name (with prefix), or the empty string if qualified names are not available
        attrs - The attributes attached to the element. If there are no attributes, it shall be an empty Attributes object
        Returns:
        true to indicate a successful restoration. Otherwise, false will be returned.
      • hasCredentials

        public boolean hasCredentials()
        Description copied from interface: WebAppSessionManager
        Returns whether this instance of the session manager contains credentials internally. This will be true if setCredentials has been called since the creation or deserialization of this SessionManager object, or if loginFirst is true and the credentials have ever been set.
        Specified by:
        hasCredentials in interface WebAppSessionManager
        Returns:
        True if the session manager has credentials associated with it, false otherwise.
      • getUserName

        public java.lang.String getUserName()
        Description copied from interface: WebAppSessionManager
        Attempts to retrieve a printable user name for either the active session, or, if loginFirst is true, the credentials set on the Session Manager will be used to obtain the user name.
        Specified by:
        getUserName in interface WebAppSessionManager
        Returns:
        The user name for the user of the session manager.
      • getAvailableAuthModes

        public int getAvailableAuthModes​(WebIServerSession session)
                                  throws WebAppException
        Description copied from interface: WebAppSessionManager
        Returns the available authentication modes that may be used with this session. A project name or ID (along with the residing server) should be specified prior to making this call if the intented login is to a project since authentication modes may be project specific.
        Specified by:
        getAvailableAuthModes in interface WebAppSessionManager
        Returns:
        the available authentication modes that may be used with this session.
        Throws:
        WebAppException - thrown if there was a problem getting the authentication modes.
      • getAvailableWebLoginModes

        public int getAvailableWebLoginModes​(WebIServerSession session)
                                      throws WebAppException
        Description copied from interface: WebAppSessionManager
        Returns the available web login modes that may be used with this session. A project name or ID (along with the residing server) should be specified prior to making this call if the intented login is to a project since web login modes may be project specific.
        Specified by:
        getAvailableWebLoginModes in interface WebAppSessionManager
        Returns:
        the available web login modes that may be used with this session.
        Throws:
        WebAppException - thrown if there was a problem getting the web lgoin modes.
      • getNewRedirectToken

        public static java.lang.String getNewRedirectToken()
      • buildLastMessageKey

        public int buildLastMessageKey​(java.lang.String... serverName)
        Create a GUID that is a combination of server/project info in order to maintain a keyed list of last message across server/project at client-side. If server name is not provided, it will read from active session.
        Specified by:
        buildLastMessageKey in interface WebAppSessionManager
        Returns: