public class DefaultUserManager extends java.lang.Object implements UserManager
UserManager.| Modifier and Type | Class and Description |
|---|---|
static class |
DefaultUserManager.JSONUserModule
Implements the JSON API for usermanager.
|
JSON_USERS, PROP_DATABASE| Constructor and Description |
|---|
DefaultUserManager() |
| Modifier and Type | Method and Description |
|---|---|
void |
addWikiEventListener(WikiEventListener listener)
Registers a WikiEventListener with this instance.
|
UserDatabase |
getUserDatabase()
Returns the UserDatabase employed by this Engine.
|
UserProfile |
getUserProfile(Session session)
Retrieves the
UserProfile for the user in a session. |
void |
initialize(Engine engine,
java.util.Properties props) |
java.security.Principal[] |
listWikiNames()
A helper method for returning all of the known WikiNames in this system.
|
UserProfile |
parseProfile(Context context)
Extracts user profile parameters from the HTTP request and populates a UserProfile with them.
|
void |
removeWikiEventListener(WikiEventListener listener)
Un-registers a WikiEventListener with this instance.
|
void |
setUserProfile(Context context,
UserProfile profile)
Saves the
UserProfile for the user in a wiki session. |
void |
startUserProfileCreationWorkflow(Context context,
UserProfile profile) |
void |
validateProfile(Context context,
UserProfile profile)
Validates a user profile, and appends any errors to the session errors list.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitfireEventpublic DefaultUserManager()
public void initialize(Engine engine, java.util.Properties props)
initialize in interface Initializablepublic UserDatabase getUserDatabase()
getUserDatabase in interface UserManagerpublic UserProfile getUserProfile(Session session)
Retrieves the UserProfile for the user in a session. If the user is authenticated, the
UserProfile returned will be the one stored in the user database; if one does not exist, a new one will be initialized and returned.
If the user is anonymous or asserted, the UserProfile will always be newly initialized to prevent spoofing of identities.
If a UserProfile needs to be initialized, its UserProfile.isNew() method will return
true, and its login name will will be set automatically if the user is authenticated. Note that this method does
not modify the retrieved (or newly created) profile otherwise; other fields in the user profile may be null.
If a new UserProfile was created, but its UserProfile.isNew() method returns
false, this method throws an IllegalStateException. This is meant as a quality check for UserDatabase providers;
it should only be thrown if the implementation is faulty.
getUserProfile in interface UserManagersession - the session, which may not be nullpublic void setUserProfile(Context context, UserProfile profile) throws DuplicateUserException, WikiException
Saves the UserProfile for the user in a wiki session. This method verifies that a user profile to
be saved doesn't collide with existing profiles; that is, the login name or full name is already used by another profile. If the
profile collides, a DuplicateUserException is thrown. After saving the profile, the user database changes are committed,
and the user's credential set is refreshed; if custom authentication is used, this means the user will be automatically be logged in.
When the user's profile is saved successfully, this method fires a WikiSecurityEvent.PROFILE_SAVE event with the Session
as the source and the UserProfile as target. For existing profiles, if the user's full name changes, this method also fires a
"name changed" event (WikiSecurityEvent.PROFILE_NAME_CHANGED) with the Session as the source and an array containing
the old and new UserProfiles, respectively. The NAME_CHANGED event allows the GroupManager and PageManager can change
group memberships and ACLs if needed.
Note that Sessions normally attach event listeners to the UserManager, so changes to the profile will automatically cause the correct Principals to be reloaded into the current Session's Subject.
setUserProfile in interface UserManagercontext - the wiki context, which may not be nullprofile - the user profile, which may not be nullDuplicateUserException - if the proposed profile's login name or full name collides with anotherWikiException - if the save fails for some reason. If the current user does not have
permission to save the profile, this will be a WikiSecurityException;
if if the user profile must be approved before it can be saved, it will be a
DecisionRequiredException. All other WikiException
indicate a condition that is not normal is probably due to mis-configurationpublic void startUserProfileCreationWorkflow(Context context, UserProfile profile) throws WikiException
startUserProfileCreationWorkflow in interface UserManagerWikiExceptionpublic UserProfile parseProfile(Context context)
Extracts user profile parameters from the HTTP request and populates a UserProfile with them. The UserProfile will either be a copy of the user's existing profile (if one can be found), or a new profile (if not). The rules for populating the profile as as follows:
email or password parameter values differ from those in the existing profile, the passed
parameters override the old values.fullname parameter is always used; for existing profiles the existing value is
used, and whatever value the user supplied is discarded. The wiki name is automatically computed by taking the full name and
extracting all whitespace.Session.getLoginPrincipal(). Otherwise, the value of the loginname parameter is used.parseProfile in interface UserManagercontext - the current wiki contextpublic void validateProfile(Context context, UserProfile profile)
Session.getMessages().validateProfile in interface UserManagercontext - the current wiki contextprofile - the supplied UserProfilepublic java.security.Principal[] listWikiNames() throws WikiSecurityException
listWikiNames in interface UserManagerWikiSecurityException - If for reason the names cannot be fetchedpublic void addWikiEventListener(WikiEventListener listener)
addWikiEventListener in interface UserManagerlistener - the event listenerpublic void removeWikiEventListener(WikiEventListener listener)
removeWikiEventListener in interface UserManagerlistener - the event listenerCopyright (c) 2001-2022 The Apache Software Foundation. All rights reserved.