Class WikiSession
- java.lang.Object
-
- org.apache.wiki.WikiSession
-
- All Implemented Interfaces:
java.util.EventListener,Session,WikiEventListener
public class WikiSession extends java.lang.Object implements Session
Default implementation for
Session.In addition to methods for examining individual
WikiSessionobjects, this class also contains a number of static methods for managing WikiSessions for an entire wiki. These methods allow callers to find, query and remove WikiSession objects, and to obtain a list of the current wiki session users.
-
-
Field Summary
-
Fields inherited from interface org.apache.wiki.api.core.Session
ANONYMOUS, ASSERTED, AUTHENTICATED
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description voidactionPerformed(WikiEvent event)Listens for WikiEvents generated by source objects such as the GroupManager, UserManager or AuthenticationManager.voidaddMessage(java.lang.String message)voidaddMessage(java.lang.String topic, java.lang.String message)java.lang.StringantiCsrfToken()voidclearMessages()voidclearMessages(java.lang.String topic)java.util.LocalegetLocale()java.security.PrincipalgetLoginPrincipal()java.lang.String[]getMessages()java.lang.String[]getMessages(java.lang.String topic)java.security.Principal[]getPrincipals()java.security.Principal[]getRoles()java.lang.StringgetStatus()javax.security.auth.SubjectgetSubject()java.security.PrincipalgetUserPrincipal()static SessiongetWikiSession(Engine engine, javax.servlet.http.HttpServletRequest request)Static factory method that returns the Session object associated with the current HTTP request.static SessionguestSession(Engine engine)Static factory method that creates a new "guest" session containing a single user PrincipalWikiPrincipal.GUEST, plus the role principalsRole.ALLandRole.ANONYMOUS.booleanhasPrincipal(java.security.Principal principal)protected voidinjectGroupPrincipals()Injects GroupPrincipal objects into the user's Principal set based on the groups the user belongs to.protected voidinjectUserProfilePrincipals()Adds Principal objects to the Subject that correspond to the logged-in user's profile attributes for the wiki name, full name and login name.voidinvalidate()booleanisAnonymous()booleanisAsserted()booleanisAuthenticated()protected booleanisInGroup(Group group)Returnstrueif one of this WikiSession's user Principals can be shown to belong to a particular wiki group.static voidremoveWikiSession(Engine engine, javax.servlet.http.HttpServletRequest request)Removes the wiki session associated with the user's HTTP request from the cache of wiki sessions, typically as part of a logout process.static intsessions(Engine engine)Deprecated.useSessionMonitor.sessions()insteadstatic java.security.Principal[]userPrincipals(Engine engine)Deprecated.useSessionMonitor.userPrincipals()instead
-
-
-
Method Detail
-
isInGroup
protected boolean isInGroup(Group group)
Returnstrueif one of this WikiSession's user Principals can be shown to belong to a particular wiki group. If the user is not authenticated, this method will always returnfalse.- Parameters:
group- the group to test- Returns:
- the result
-
isAsserted
public boolean isAsserted()
- Specified by:
isAssertedin interfaceSession
-
isAuthenticated
public boolean isAuthenticated()
- Specified by:
isAuthenticatedin interfaceSession
-
isAnonymous
public boolean isAnonymous()
- Specified by:
isAnonymousin interfaceSession
-
getLoginPrincipal
public java.security.Principal getLoginPrincipal()
- Specified by:
getLoginPrincipalin interfaceSession
-
getUserPrincipal
public java.security.Principal getUserPrincipal()
- Specified by:
getUserPrincipalin interfaceSession
-
antiCsrfToken
public java.lang.String antiCsrfToken()
- Specified by:
antiCsrfTokenin interfaceSession
-
addMessage
public void addMessage(java.lang.String message)
- Specified by:
addMessagein interfaceSession
-
addMessage
public void addMessage(java.lang.String topic, java.lang.String message)
- Specified by:
addMessagein interfaceSession
-
clearMessages
public void clearMessages()
- Specified by:
clearMessagesin interfaceSession
-
clearMessages
public void clearMessages(java.lang.String topic)
- Specified by:
clearMessagesin interfaceSession
-
getMessages
public java.lang.String[] getMessages()
- Specified by:
getMessagesin interfaceSession
-
getMessages
public java.lang.String[] getMessages(java.lang.String topic)
- Specified by:
getMessagesin interfaceSession
-
getPrincipals
public java.security.Principal[] getPrincipals()
- Specified by:
getPrincipalsin interfaceSession
-
hasPrincipal
public boolean hasPrincipal(java.security.Principal principal)
- Specified by:
hasPrincipalin interfaceSession
-
actionPerformed
public void actionPerformed(WikiEvent event)
Listens for WikiEvents generated by source objects such as the GroupManager, UserManager or AuthenticationManager. This method adds Principals to the private Subject managed by the WikiSession.- Specified by:
actionPerformedin interfaceWikiEventListener- See Also:
WikiEventListener.actionPerformed(WikiEvent)
-
invalidate
public void invalidate()
- Specified by:
invalidatein interfaceSession
-
injectGroupPrincipals
protected void injectGroupPrincipals()
Injects GroupPrincipal objects into the user's Principal set based on the groups the user belongs to. For Groups, the algorithm first calls theAuthorizer.getRoles()to obtain the array of GroupPrincipals the authorizer knows about. Then, the methodAuthorizer.isUserInRole(Session, Principal)is called for each Principal. If the user is a member of the group, an equivalent GroupPrincipal is injected into the user's principal set. Existing GroupPrincipals are flushed and replaced. This method should generally be called after a user'sUserProfileis saved. If the wiki session is null, or there is no matching user profile, the method returns silently.
-
injectUserProfilePrincipals
protected void injectUserProfilePrincipals()
Adds Principal objects to the Subject that correspond to the logged-in user's profile attributes for the wiki name, full name and login name. These Principals will be WikiPrincipals, and they will replace all other WikiPrincipals in the Subject. Note: this method is never called during anonymous or asserted sessions.
-
getSubject
public javax.security.auth.Subject getSubject()
- Specified by:
getSubjectin interfaceSession
-
removeWikiSession
public static void removeWikiSession(Engine engine, javax.servlet.http.HttpServletRequest request)
Removes the wiki session associated with the user's HTTP request from the cache of wiki sessions, typically as part of a logout process.- Parameters:
engine- the wiki enginerequest- the user's HTTP request
-
getWikiSession
public static Session getWikiSession(Engine engine, javax.servlet.http.HttpServletRequest request)
Static factory method that returns the Session object associated with the current HTTP request. This method looks up the associated HttpSession in an internal WeakHashMap and attempts to retrieve the WikiSession. If not found, one is created. This method is guaranteed to always return a Session, although the authentication status is unpredictable until the user attempts to log in. If the servlet request parameter is
null, a syntheticguestSession(Engine)is returned.When a session is created, this method attaches a WikiEventListener to the GroupManager, UserManager and AuthenticationManager, so that changes to users, groups, logins, etc. are detected automatically.
- Parameters:
engine- the enginerequest- the servlet request object- Returns:
- the existing (or newly created) session
-
guestSession
public static Session guestSession(Engine engine)
Static factory method that creates a new "guest" session containing a single user PrincipalWikiPrincipal.GUEST, plus the role principalsRole.ALLandRole.ANONYMOUS. This method also adds the session as a listener for GroupManager, AuthenticationManager and UserManager events.- Parameters:
engine- the wiki engine- Returns:
- the guest wiki session
-
sessions
@Deprecated public static int sessions(Engine engine)
Deprecated.useSessionMonitor.sessions()insteadReturns the total number of active wiki sessions for a particular wiki. This method delegates to the wiki'sSessionMonitor.sessions()method.- Parameters:
engine- the wiki session- Returns:
- the number of sessions
- See Also:
SessionMonitor.sessions()
-
userPrincipals
@Deprecated public static java.security.Principal[] userPrincipals(Engine engine)
Deprecated.useSessionMonitor.userPrincipals()insteadReturns Principals representing the current users known to a particular wiki. Each Principal will correspond to the value returned by each WikiSession'sgetUserPrincipal()method. This method delegates toSessionMonitor.userPrincipals().- Parameters:
engine- the wiki engine- Returns:
- an array of Principal objects, sorted by name
- See Also:
SessionMonitor.userPrincipals()
-
-