public class ProfileServices extends GenericService implements atg.userprofiling.ProfileServiceConstants
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
CLASS_VERSION
Class version string
|
SERVICE_INFO_KEY
ADMIN_UPDATE_NULL_ELEMENT, AUTHENTICATE_HASHKEY_ATTRIBUTE, AUTHENTICATE_TIMER_ATTRIBUTE, CHANGE_PASSWORD_MISMATCH, COPY_NULL_ITEM, CREATE_EXISTING_ITEM_ID, CREATE_EXISTING_ITEM_LOGIN, CREATE_ID_PARAM, CREATE_ID_PARAM_NAME, CREATE_NULL_ITEM, DEFAULT_LOGIN_PROFILE_TYPE, DEFAULT_PROFILE_PATH, DEFAULT_PROFILE_TOOLS_PATH, DEFAULT_REQUEST_LOCALE_PATH, DEFAULT_USER_PATH, DYNAMIC_ALGORITHM_INDICATOR, DYNAMIC_ALGORITHM_METHOD, ENCRYPT_INVALID_PASS_CONVERSATION, ENCRYPT_INVALID_SESSION_ATTRS, ENCRYPT_NULL_HASHKEY, HASHKEY_PARAM, HASHKEY_PARAM_NAME, LOGIN_BAD_ARGS, LOGIN_PARAM, LOGIN_PARAM_NAME, LOGIN_PASSWORD_MISMATCH, LOGOUT_ID_PARAM, LOGOUT_ID_PARAM_NAME, MATCH_PROP_PARAM, MATCH_PROP_PARAM_NAME, NEW_PASSWORD_PARAM, NEW_PASSWORD_PARAM_NAME, NO_ALGORITHM_FOUND, NULL_CURRENT_PROFILE, NULL_PROFILE_BY_ID, NULL_PROFILE_REPOSITORY, NULL_REQUEST, NULL_REQUEST_LOCALE, NULL_REQUEST_PARAMETER, NULL_SENTINEL, OPERATION_END_PARAM, OPERATION_END_PARAM_NAME, PASSWORD_PARAM, PASSWORD_PARAM_NAME, PUSH_REALM_PARAM, PUSH_REALM_PARAM_NAME, PUSH_SITE_PARAM, PUSH_SITE_PARAM_NAME, REGISTER_BAD_ARGS, SERVICE_NO_TOOLS, UPDATE_EVENT_PARAM, UPDATE_EVENT_PARAM_NAME, UPDATE_ID_PARAM, UPDATE_ID_PARAM_NAME, UPDATE_INVALID_REP, UPDATE_NO_ARGS, UPDATE_NO_ITEM, XML_ITEM_PARAM, XML_ITEM_PARAM_NAME
DEFAULT_LOG_TRACE_STATUS
DEFAULT_LOG_DEBUG_STATUS, DEFAULT_LOG_ERROR_STATUS, DEFAULT_LOG_INFO_STATUS, DEFAULT_LOG_WARNING_STATUS
Constructor and Description |
---|
ProfileServices() |
Modifier and Type | Method and Description |
---|---|
void |
addProperties(RepositoryItem pGuestUser,
RepositoryItem pAuthenticatedUser,
java.lang.String[] pPropertiesToAdd)
Adds values from multi-valued properties from the guest user to
the authenticated user
|
void |
addProperty(java.lang.String pPropertyName,
RepositoryItem pGuestUser,
RepositoryItem pAuthenticatedUser)
Adds a specific multi-valued property's values from the given guest
user to the given authenticated user
|
void |
addSwapEventListener(atg.userprofiling.ProfileSwapEventListener pListener)
Adds a ProfileSwapEventListener to the list of listeners that
care about ProfileSwapEvents
|
void |
addUpdateListener(atg.userprofiling.ProfileUpdateListener pListener)
Adds the given update listener to the list of listeners we already
know about
|
RepositoryItem |
addXMLItem(java.lang.String pItemAsXML,
boolean pPersist)
Adds or creates the given pItemAsXML, depending on the value
of pPersist.
|
boolean |
canClientEncryptPasswords()
Tests to see whether we can allow clients to encrypt their passwords.
|
protected void |
commitTransaction()
Commits the current transaction
|
void |
copyProperties(RepositoryItem pGuestUser,
RepositoryItem pAuthenticatedUser,
java.lang.String[] pPropertiesToCopy)
Copies the properties named in
pPropertiesToCopy from
the pGuestUser to the pAuthenticatedUser |
java.lang.String |
createUser(java.lang.String pProfileAsXML)
Creates a persistent user using the profile values given in
pProfileAsXML . |
boolean |
deleteUser(java.lang.String pProfileId)
Deletes a persistent user whose id matches
pProfileId . |
protected void |
doCreateUser(DynamoHttpServletRequest pRequest,
DynamoHttpServletResponse pResponse)
Creates a user that is present as the request parameter,
XML_ITEM_PARAM
|
protected void |
doDeleteUser(DynamoHttpServletRequest pRequest,
DynamoHttpServletResponse pResponse)
Deletes a user that matches the id present as the request parameter,
UPDATE_ID_PARAM.
|
protected void |
doLoginUser(DynamoHttpServletRequest pRequest,
DynamoHttpServletResponse pResponse)
Logs in a user.
|
protected void |
doLoginUser(DynamoHttpServletRequest pRequest,
DynamoHttpServletResponse pResponse,
boolean pTrusted)
Logs in a user.
|
protected void |
doLogoutUser(DynamoHttpServletRequest pRequest,
DynamoHttpServletResponse pResponse)
Called to logout a user.
|
protected void |
doSetPassword(DynamoHttpServletRequest pRequest,
DynamoHttpServletResponse pResponse)
Called to actually change the current user's password.
|
void |
doStartService()
Called when this service starts, after its properties have been
set.
|
protected void |
doUpdateUser(DynamoHttpServletRequest pRequest,
DynamoHttpServletResponse pResponse)
Updates the user that is present as the request parameter,
XML_ITEM_PARAM.
|
void |
encryptPassword(MutableRepositoryItem pProfile)
Takes the cleartext password of the given profile, encrypts it,
and resets it to the encrypted version
|
boolean |
endOperation(DynamoHttpServletRequest pRequest)
Checks the given request to see if the OPERATION_END_PARAM is
present and set to true
|
java.lang.Object |
endOperationValue(DynamoHttpServletRequest pRequest)
Gets the value of the OPERATION_END_PARAM_NAME from the given
request.
|
protected javax.transaction.Transaction |
ensureTransaction()
This method ensures that a transaction exists before returning.
|
long |
getBadPasswordDelay()
Get property
badPasswordDelay
DEFAULT: 1000 (1 second) |
java.lang.String |
getCreateProfileType()
Get property
createProfileType
DEFAULT: user |
Profile |
getCurrentProfile()
Gets the profile of the current thread's user
|
java.lang.String |
getCurrentProfileId()
Gets the profileId of the current thread's user
|
PasswordHasher |
getLoginPasswordHasher()
Gets a password hasher for logging in
|
java.lang.String |
getLoginProfileType()
Get property
loginProfileType
DEFAULT: user |
java.lang.String |
getLogoutProfileType()
Get property
logoutProfileType
DEFAULT: user |
java.lang.String |
getMappingFile(Repository pRepository,
java.lang.String pItemDescriptorName)
Gets a mapping file for a particular repository:itemDescriptorName
combination
|
atg.repository.xml.ItemDescriptorMappingManager |
getMappingManager()
Get property
mappingManager
DEFAULT: null |
long |
getMaxAuthenticationWait()
Get property
maxAuthenticationWait
DEFAULT: 30000 (30 seconds) |
java.lang.String |
getPasswordHashAlgorithm()
Gets the algorithm for the password hasher used by
the profile property manager
|
java.lang.String |
getPasswordHashKey()
Gets a hashkey for a password.
|
java.lang.String |
getProfile(java.lang.String pProfileId)
Gets the profile using the given profile id
|
java.lang.String |
getProfile(java.lang.String pProfileId,
java.lang.String pMappingFile)
Gets the profile using the given profile id, and applies the
given mapping file to the returned Repo2Xml string
|
java.lang.String |
getProfileId(java.lang.String pLogin)
Gets the profile id of the person with the given login
|
java.lang.String |
getProfilePath()
Get property
profilePath
DEFAULT: /atg/userprofiling/Profile |
ProfileRealmManager |
getProfileRealmManager()
get ProfileRealmManager
|
ProfileTools |
getProfileTools()
Get property
profileTools
DEFAULT: null |
java.lang.String[] |
getPropertiesToAddOnLogin()
Get property
propertiesToAddOnLogin
DEFAULT: null |
java.lang.String[] |
getPropertiesToCopyOnLogin()
Get property
propertiesToCopyOnLogin
DEFAULT: null |
RepositoryItem |
getRepositoryItemFromXML(java.lang.String pItemAsXML)
Gets a RepositoryItem object from the given XML representation
The item is matched based on the id property in the
XML file
|
RepositoryItem |
getRepositoryItemFromXML(java.lang.String pItemAsXML,
java.lang.String[] pMatchedProperties)
Gets a RepositoryItem object from the given XML representation
The item is matched based on the id property in the
XML file
|
java.lang.String |
getRequestLocalePath()
Get property
RequestLocalePath
DEFAULT: /atg/dynamo/servlet/RequestLocale |
javax.transaction.TransactionManager |
getTransactionManager()
Get property
transactionManager
DEFAULT: null |
atg.userprofiling.ProfileUpdateListener[] |
getUpdateEventListeners()
Get property
UpdateEventListeners
DEFAULT: null |
AddService |
getXmlAddService()
Get property
XmlAddService
DEFAULT: null |
GetService |
getXmlGetService()
Get property
xmlGetService
DEFAULT: null |
java.lang.String |
getXMLItem(RepositoryItem pItem,
Repository pRepository,
java.lang.String pItemDescriptorName,
java.lang.String pMappingFile)
Transforms the given repository item into XML, possibly using
a mapping file to cull properties
|
UpdateService |
getXmlUpdateService()
Get property
xmlUpdateService
DEFAULT: null |
boolean |
isAllowEncryptedPasswords()
Get property
AllowEncryptedPasswords
DEFAULT: true |
boolean |
isExpireSessionOnLogout()
Get property
expireSessionOnLogout
DEFAULT: true |
boolean |
isGenerateLoginEvents()
Get property
GenerateLoginEvents
DEFAULT: true |
boolean |
isGenerateLogoutEvents()
Get property
GenerateLogoutEvents
DEFAULT: true |
boolean |
isGenerateRegisterEvents()
Get property
GenerateRegisterEvents
DEFAULT: true |
boolean |
isGenerateUpdateEvents()
Get property
GenerateUpdateEvents
DEFAULT: true |
boolean |
isUseDefaultMappings()
Get property
UseDefaultMappings
DEFAULT: true |
boolean |
isUsingLDAPProfile()
Get property
usingLDAPProfile
DEFAULT: false |
java.lang.String |
loginTrustedUser(java.lang.String pLogin)
Attempts to login a user using the given login.
|
java.lang.String |
loginUser(java.lang.String pLogin,
java.lang.String pPassword)
Attempts to login a user using the given login and password.
|
java.lang.String |
loginUser(java.lang.String pLogin,
java.lang.String pPassword,
boolean pIsPasswordEncrypted)
Attempts to login a user using the given login and password.
|
java.lang.String |
loginUserOnRealm(java.lang.String pLogin,
java.lang.String pPassword,
boolean pIsPasswordEncrypted,
java.lang.String pPushRealm,
java.lang.String pPushSite)
Attempts to login a user using the given login and password.
|
void |
logoutUser()
Logs out the current user.
|
boolean |
popRealm(java.lang.String pRealmId) |
protected void |
postCreateUser(DynamoHttpServletRequest pRequest,
DynamoHttpServletResponse pResponse)
Called after a new user is created.
|
protected void |
postDeleteUser(DynamoHttpServletRequest pRequest,
DynamoHttpServletResponse pResponse)
Called after a user is succesfully deleted.
|
protected void |
postLoginUser(DynamoHttpServletRequest pRequest,
DynamoHttpServletResponse pResponse)
Called after a user is successfully logged in.
|
protected void |
postLoginUser(DynamoHttpServletRequest pRequest,
DynamoHttpServletResponse pResponse,
boolean pTrusted)
Called after a user is successfully logged in.
|
protected void |
postLogoutUser(DynamoHttpServletRequest pRequest,
DynamoHttpServletResponse pResponse)
Called after a user is logged out.
|
protected void |
postSetPassword(DynamoHttpServletRequest pRequest,
DynamoHttpServletResponse pResponse)
Called after the current user's password is setd.
|
protected void |
postUpdateUser(DynamoHttpServletRequest pRequest,
DynamoHttpServletResponse pResponse)
Called after a user is updated.
|
protected void |
preCreateUser(DynamoHttpServletRequest pRequest,
DynamoHttpServletResponse pResponse)
Called before a user is created.
|
protected void |
preDeleteUser(DynamoHttpServletRequest pRequest,
DynamoHttpServletResponse pResponse)
Called before a user is deleted.
|
protected void |
preLoginUser(DynamoHttpServletRequest pRequest,
DynamoHttpServletResponse pResponse)
Called before a login actually takes place.
|
protected void |
preLoginUser(DynamoHttpServletRequest pRequest,
DynamoHttpServletResponse pResponse,
boolean pTrusted)
Called before a login actually takes place.
|
protected void |
preLogoutUser(DynamoHttpServletRequest pRequest,
DynamoHttpServletResponse pResponse)
Called before a user is logged out.
|
protected void |
preSetPassword(DynamoHttpServletRequest pRequest,
DynamoHttpServletResponse pResponse)
Called before the current user's password is changed.
|
java.lang.String |
pushRealmFromRequest(DynamoHttpServletRequest pRequest) |
void |
removeSwapEventListener(atg.userprofiling.ProfileSwapEventListener pListener)
Removes a ProfileSwapEventListener to the list of listeners that
care about ProfileSwapEvents
|
void |
removeUpdateListener(atg.userprofiling.ProfileUpdateListener pListener)
Removes the given update listener from the list of listeners we already
know about
|
void |
sendProfileSwapEvent(int pEventType,
RepositoryItem pPreSwapItem,
RepositoryItem pPostSwapItem)
Sends a ProfileSwapEvent using the given arguments
|
void |
sendUpdateEvent(atg.userprofiling.ProfileUpdateEvent pEvent)
Sends the given update event to all of the registered update listeners
|
void |
setAllowEncryptedPasswords(boolean pAllowEncryptedPasswords)
Set property
AllowEncryptedPasswords
DEFAULT: true |
void |
setBadPasswordDelay(long pBadPasswordDelay)
Set property
badPasswordDelay
DEFAULT: 1000 (1 second) |
void |
setContactInfo(java.lang.String pProfileId,
java.lang.String pContactInfoAsXML)
Changes the contact info property for a user.
|
void |
setCreateProfileType(java.lang.String pCreateProfileType)
Set property
createProfileType
DEFAULT: user |
void |
setExpireSessionOnLogout(boolean pExpireSessionOnLogout)
Set property
expireSessionOnLogout
DEFAULT: true |
void |
setGenerateLoginEvents(boolean pGenerateLoginEvents)
Set property
GenerateLoginEvents
DEFAULT: true |
void |
setGenerateLogoutEvents(boolean pGenerateLogoutEvents)
Set property
GenerateLogoutEvents
DEFAULT: true |
void |
setGenerateRegisterEvents(boolean pGenerateRegisterEvents)
Set property
GenerateRegisterEvents
DEFAULT: true |
void |
setGenerateUpdateEvents(boolean pGenerateUpdateEvents)
Set property
GenerateUpdateEvents
DEFAULT: true |
void |
setLocale(java.lang.String pProfileId,
java.lang.String pLocaleName)
Changes the locale property for a user.
|
void |
setLoginProfileType(java.lang.String pLoginProfileType)
Set property
loginProfileType
DEFAULT: user |
void |
setLogoutProfileType(java.lang.String pLogoutProfileType)
Set property
logoutProfileType
DEFAULT: user |
void |
setMappingManager(atg.repository.xml.ItemDescriptorMappingManager pMappingManager)
Set property
mappingManager
DEFAULT: null |
void |
setMaxAuthenticationWait(long pMaxAuthenticationWait)
Set property
maxAuthenticationWait
DEFAULT: 30000 (30 seconds) |
void |
setPassword(java.lang.String pProfileId,
java.lang.String pOldPassword,
java.lang.String pNewPassword)
Allows a user to set their own password.
|
void |
setProfilePath(java.lang.String pProfilePath)
Set property
profilePath
DEFAULT: /atg/userprofiling/Profile |
void |
setProfileRealmManager(ProfileRealmManager pProfileRealmManager)
set ProfileRealmManager
|
void |
setProfileTools(ProfileTools pProfileTools)
Set property
profileTools
DEFAULT: null |
void |
setPropertiesToAddOnLogin(java.lang.String[] pPropertiesToAddOnLogin)
Set property
propertiesToAddOnLogin
DEFAULT: null |
void |
setPropertiesToCopyOnLogin(java.lang.String[] pPropertiesToCopyOnLogin)
Set property
propertiesToCopyOnLogin
DEFAULT: null |
void |
setRequestLocalePath(java.lang.String pRequestLocalePath)
Set property
RequestLocalePath
DEFAULT: /atg/dynamo/servlet/RequestLocale |
void |
setSessionLocale(java.lang.String pLocaleName)
Sets the locale of the current session by changing the
session-scoped RequestLocale component.
|
void |
setTransactionManager(javax.transaction.TransactionManager pTransactionManager)
Set property
transactionManager
DEFAULT: null |
void |
setUpdateEventListeners(atg.userprofiling.ProfileUpdateListener[] pUpdateEventListeners)
Set property
UpdateEventListeners
DEFAULT: null |
void |
setUseDefaultMappings(boolean pUseDefaultMappings)
Set property
UseDefaultMappings
DEFAULT: true |
void |
setUsingLDAPProfile(boolean pUsingLDAPProfile)
Set property
usingLDAPProfile
DEFAULT: false |
void |
setXmlAddService(AddService pXmlAddService)
Set property
XmlAddService
DEFAULT: null |
void |
setXmlGetService(GetService pXmlGetService)
Set property
xmlGetService
DEFAULT: null |
void |
setXmlUpdateService(UpdateService pXmlUpdateService)
Set property
xmlUpdateService
DEFAULT: null |
void |
updateLDAPProfileAttributes(MutableRepositoryItem pItem)
Updates profile attributes pertaining to LDAP.
|
void |
updateUser(java.lang.String pProfileAsXML)
Updates a persistent user using the profile values given in
pProfileAsXML . |
void |
updateUser(java.lang.String pProfileAsXML,
java.lang.String[] pMatchProperties)
Updates a persistent user using the profile values given in
pProfileAsXML . |
void |
updateXMLItem(java.lang.String pItemAsXML,
java.lang.String[] pMatchedProperties)
Updates a Repo2Xml item
|
addLogListener, createAdminServlet, doStopService, getAbsoluteName, getAdminServlet, getAdminServletOutputStreamEncoding, getLoggingForVlogging, getLogListenerCount, getLogListeners, getName, getNameContext, getNucleus, getRoot, getServiceConfiguration, getServiceInfo, isAdminServletUseServletOutputStream, isLoggingDebug, isLoggingError, isLoggingInfo, isLoggingTrace, isLoggingWarning, isRunning, logDebug, logDebug, logDebug, logError, logError, logError, logInfo, logInfo, logInfo, logTrace, logTrace, logTrace, logWarning, logWarning, logWarning, nameContextElementBound, nameContextElementUnbound, removeLogListener, reResolveThis, resolveName, resolveName, resolveName, resolveName, sendLogEvent, setAdminServletOutputStreamEncoding, setAdminServletUseServletOutputStream, setLoggingDebug, setLoggingError, setLoggingInfo, setLoggingTrace, setLoggingWarning, setNucleus, setServiceInfo, startService, stopService
vlogDebug, vlogDebug, vlogDebug, vlogDebug, vlogDebugTrace, vlogError, vlogError, vlogError, vlogError, vlogInfo, vlogInfo, vlogInfo, vlogInfo, vlogTrace, vlogTrace, vlogTrace, vlogTrace, vlogWarning, vlogWarning, vlogWarning, vlogWarning
public void setAllowEncryptedPasswords(boolean pAllowEncryptedPasswords)
AllowEncryptedPasswords
DEFAULT: truepAllowEncryptedPasswords
- true if services that accept
or require passwords allow those passwords to be encrypted. This
only applies to services that compare password values, not services
that set passwords. Services that set passwords should NOT be called
with encrypted passwordspublic boolean isAllowEncryptedPasswords()
AllowEncryptedPasswords
DEFAULT: truepublic void setUseDefaultMappings(boolean pUseDefaultMappings)
UseDefaultMappings
DEFAULT: truepUseDefaultMappings
- true if services that return Repo2Xml
items should use default mapping files supplied by the
ItemMappingManager
configured for this component. This
property is ignored if a mapping file is explicitly passed to
the servicepublic boolean isUseDefaultMappings()
UseDefaultMappings
DEFAULT: trueItemMappingManager
configured for this component. This
property is ignored if a mapping file is explicitly passed to
the servicepublic void setGenerateLoginEvents(boolean pGenerateLoginEvents)
GenerateLoginEvents
DEFAULT: truepGenerateLoginEvents
- true if login events should be
fired when a login occurspublic boolean isGenerateLoginEvents()
GenerateLoginEvents
DEFAULT: truepublic void setGenerateUpdateEvents(boolean pGenerateUpdateEvents)
GenerateUpdateEvents
DEFAULT: truepGenerateUpdateEvents
- true if update events should be fired when
an update occurspublic boolean isGenerateUpdateEvents()
GenerateUpdateEvents
DEFAULT: truepublic void setGenerateRegisterEvents(boolean pGenerateRegisterEvents)
GenerateRegisterEvents
DEFAULT: truepGenerateRegisterEvents
- true if register events should be
fired when someone registerspublic boolean isGenerateRegisterEvents()
GenerateRegisterEvents
DEFAULT: truepublic void setGenerateLogoutEvents(boolean pGenerateLogoutEvents)
GenerateLogoutEvents
DEFAULT: truepGenerateLogoutEvents
- true if a logout events should be fired
when a user logs outpublic boolean isGenerateLogoutEvents()
GenerateLogoutEvents
DEFAULT: truepublic void setUpdateEventListeners(atg.userprofiling.ProfileUpdateListener[] pUpdateEventListeners)
UpdateEventListeners
DEFAULT: nullpUpdateEventListeners
- an array of objects that listen
for ProfileUpdateEvents i.e. events that are fired when
user updates occur through services in this classpublic atg.userprofiling.ProfileUpdateListener[] getUpdateEventListeners()
UpdateEventListeners
DEFAULT: nullpublic void setRequestLocalePath(java.lang.String pRequestLocalePath)
RequestLocalePath
DEFAULT: /atg/dynamo/servlet/RequestLocalepRequestLocalePath
- the path to a session-scoped RequestLocale
component, which handles locale-based redirecting on a per-session
basispublic java.lang.String getRequestLocalePath()
RequestLocalePath
DEFAULT: /atg/dynamo/servlet/RequestLocalepublic void setProfilePath(java.lang.String pProfilePath)
profilePath
DEFAULT: /atg/userprofiling/ProfilepProfilePath
- the path to the profile component used in
all userprofiling operationspublic java.lang.String getProfilePath()
profilePath
DEFAULT: /atg/userprofiling/Profilepublic void setCreateProfileType(java.lang.String pCreateProfileType)
createProfileType
DEFAULT: userpCreateProfileType
- when creating a new profile, this
it the item type it should be i.e. item descriptor namepublic java.lang.String getCreateProfileType()
createProfileType
DEFAULT: userpublic void setLoginProfileType(java.lang.String pLoginProfileType)
loginProfileType
DEFAULT: userpLoginProfileType
- when logging in a user, the item type
that their profile is expected to be. If there are many possible profile
types due to subtyping, then this value should be set to their
collective supertypepublic java.lang.String getLoginProfileType()
loginProfileType
DEFAULT: userpublic void setLogoutProfileType(java.lang.String pLogoutProfileType)
logoutProfileType
DEFAULT: userpLogoutProfileType
- when a user logs out, this is the item
type that next guest user will havepublic java.lang.String getLogoutProfileType()
logoutProfileType
DEFAULT: userpublic void setUsingLDAPProfile(boolean pUsingLDAPProfile)
usingLDAPProfile
DEFAULT: falsepUsingLDAPProfile
- true if these userprofiling services
act upon an LDAP-based profile (this includes composite profiles
with an LDAP component)public boolean isUsingLDAPProfile()
usingLDAPProfile
DEFAULT: falsepublic void setBadPasswordDelay(long pBadPasswordDelay)
badPasswordDelay
DEFAULT: 1000 (1 second)pBadPasswordDelay
- the number of milliseconds to pause
when a login is attempted with a bad password. This value must
not be negativepublic long getBadPasswordDelay()
badPasswordDelay
DEFAULT: 1000 (1 second)public void setExpireSessionOnLogout(boolean pExpireSessionOnLogout)
expireSessionOnLogout
DEFAULT: truepExpireSessionOnLogout
- true if a person's entire session should
be expired after they logoutpublic boolean isExpireSessionOnLogout()
expireSessionOnLogout
DEFAULT: truepublic void setPropertiesToCopyOnLogin(java.lang.String[] pPropertiesToCopyOnLogin)
propertiesToCopyOnLogin
DEFAULT: nullpPropertiesToCopyOnLogin
- an array of properties that
should be copied from a guest user to a persistent user upon
login. Both single-value and multi-valued properties will be
copied entirely i.e. any previous values are overwrittenpublic java.lang.String[] getPropertiesToCopyOnLogin()
propertiesToCopyOnLogin
DEFAULT: nullpublic void setPropertiesToAddOnLogin(java.lang.String[] pPropertiesToAddOnLogin)
propertiesToAddOnLogin
DEFAULT: nullpPropertiesToAddOnLogin
- an array of multi-valued properties
whose values should be added from a guest user to the existing values
of a persistent user when the guest logs inpublic java.lang.String[] getPropertiesToAddOnLogin()
propertiesToAddOnLogin
DEFAULT: nullpublic void setMappingManager(atg.repository.xml.ItemDescriptorMappingManager pMappingManager)
mappingManager
DEFAULT: nullpMappingManager
- the service that controls mapping files for all
item descriptors. This is used to provide default mapping files for
particular repository:itemDescriptor pairs, so if a service returns
Repo2Xml items of a type that has had an ItemDescriptorMapping
defined for it, that mapping will automatically be applied before
the Repo2Xml item is returned (unless useDefaultMappings
is false)public atg.repository.xml.ItemDescriptorMappingManager getMappingManager()
mappingManager
DEFAULT: nulluseDefaultMappings
is false)public void setXmlAddService(AddService pXmlAddService)
XmlAddService
DEFAULT: nullpXmlAddService
- a service that knows how to add Repo2Xml
items to a repositorypublic AddService getXmlAddService()
XmlAddService
DEFAULT: nullpublic void setXmlGetService(GetService pXmlGetService)
xmlGetService
DEFAULT: nullpXmlGetService
- the service that turns a RepositoryItem
into an xml representation (known as a Repo2Xml item)public GetService getXmlGetService()
xmlGetService
DEFAULT: nullpublic void setXmlUpdateService(UpdateService pXmlUpdateService)
xmlUpdateService
DEFAULT: nullpXmlUpdateService
- a service that knows how to add Repo2Xml
items to a repositorypublic UpdateService getXmlUpdateService()
xmlUpdateService
DEFAULT: nullpublic void setProfileTools(ProfileTools pProfileTools)
profileTools
DEFAULT: nullpProfileTools
- a collection of utility methods that help
perform common funtions used by several profile servicespublic ProfileTools getProfileTools()
profileTools
DEFAULT: nullpublic void setTransactionManager(javax.transaction.TransactionManager pTransactionManager)
transactionManager
DEFAULT: nullpTransactionManager
- the transaction manager for all web servicespublic javax.transaction.TransactionManager getTransactionManager()
transactionManager
DEFAULT: nullpublic void setMaxAuthenticationWait(long pMaxAuthenticationWait)
maxAuthenticationWait
DEFAULT: 30000 (30 seconds)pMaxAuthenticationWait
- the number of milliseconds allowed
before an encrypted login conversation becomes invalid. An
encrypted login conversation requires a client to call several
methods in order to correctly encrypt a password to be passed to
the login web service. The timer for this conversation is started
when getPasswordHashKey is called, since this hashkey is intended
to be temporary and unique for one login attempt. The timer ends
when loginUser is called. The difference in time between
those two calls should not exceed pMaxAuthenticationWait
,
otherwise the login attempt is considered invalid.public long getMaxAuthenticationWait()
maxAuthenticationWait
DEFAULT: 30000 (30 seconds)pMaxAuthenticationWait
,
otherwise the login attempt is considered invalid.public void addSwapEventListener(atg.userprofiling.ProfileSwapEventListener pListener)
pListener
- the ProfileSwapEventListener to addpublic void removeSwapEventListener(atg.userprofiling.ProfileSwapEventListener pListener)
pListener
- the ProfileSwapEventListener to removepublic void setProfileRealmManager(ProfileRealmManager pProfileRealmManager)
pProfileRealmManager
- the ProfileRealmManagerpublic ProfileRealmManager getProfileRealmManager()
public void setSessionLocale(java.lang.String pLocaleName) throws javax.servlet.ServletException
setLocale
to accomplish this. This method is also
intended to be called in the context of an HTTP request.pLocaleName
- the locale to change to for the length of
the session. If this is null, then the current locale will be
set to the default locale for the RequestLocale componentjavax.servlet.ServletException
- if an error occurs trying
to change the locale, or this method is not called in the
context of an HTTP requestpublic void setPassword(java.lang.String pProfileId, java.lang.String pOldPassword, java.lang.String pNewPassword) throws javax.servlet.ServletException
pNewPassword
supplied. This
"password property" is defined as the profile property whose name
matches the profileTools.propertyManager.passwordPropertyName
property value. The password that is to be changed should belong to
the current session's profile.
This method is not intended to be used by an admin changing someone
else's password, use adminSetPassword
if you wish to do this.
This method calls preSetPassword
,
doSetPassword
, and
postSetPassword
in turn, to
do the actual property change.
The following request parameters are set in this method
PASSWORD_PARAM
- for the old password
NEW_PASSWORD_PARAM
- for the new password
UPDATE_ID_PARAM
- the id of the profile being
updated
Extensions of this class, or of the preSet, doSet, and postSet methods can use these parameters to get access to this methods original arguments This method is expected to be called in the context of an HTTP request. Also, a transaction is required when executing this method. If no transaction is in place, a new one is started and committed before this method returns.
pProfileId
- the id of the current profile, whose password
is being changed. This argument is used by the ProfileOwnerPolicy
to ensure that the person who calls this service is the person
who is in the current session, if this security policy is applied.
This argument must not be nullpOldPassword
- the old password that is being changed. This is
needed to verify the credentials of the current profile before changing
the password. This argument can be null (if your profile
repository allows null passwords)pNewPassword
- the new value for the user's password property.
This argument can be null (if your profile repository allows null
passwords)javax.servlet.ServletException
- if an error occurs changing the passwordprotected void preSetPassword(DynamoHttpServletRequest pRequest, DynamoHttpServletResponse pResponse) throws javax.servlet.ServletException
pRequest
- the current request, which is guaranteed to
contain the following parameters:
PASSWORD_PARAM - for the old password
NEW_PASSWORD_PARAM - for the new password
UPDATE_ID_PARAM - the id of the profile being updated
pResponse
- the current responsejavax.servlet.ServletException
- if an error occurs hereprotected void doSetPassword(DynamoHttpServletRequest pRequest, DynamoHttpServletResponse pResponse) throws javax.servlet.ServletException
profileTools.propertyManager.passwordHasher
objectpRequest
- the current request, which is guaranteed to
contain the following parameters:
PASSWORD_PARAM - for the old password
NEW_PASSWORD_PARAM - for the new password
UPDATE_ID_PARAM - the id of the profile being updated
pResponse
- the current responsejavax.servlet.ServletException
- occurs in the following cases:
pRequest
does not match the given profile's current password
(note that the password in the request will be encrypted before
comparing its value with the current profile's password)
protected void postSetPassword(DynamoHttpServletRequest pRequest, DynamoHttpServletResponse pResponse) throws javax.servlet.ServletException
pRequest
- the current request, which is guaranteed to
contain the following parameters:
PASSWORD_PARAM - for the old password
NEW_PASSWORD_PARAM - for the new password
UPDATE_ID_PARAM - the id of the profile being updated
pResponse
- the current responsejavax.servlet.ServletException
- if an error occurs herepublic java.lang.String getProfile(java.lang.String pProfileId) throws RepositoryException
A transaction is required when executing this method. If no transaction is in place, a new one is started and committed before this method returns.
pProfileId
- the id of the profile to get. If null
is entered for this argument, then null is returneduseDefaultMappings
, a default mapping file could
be applied to the resulting Repo2XmlRepositoryException
- if an error occurs trying to
retrieve the itempublic java.lang.String getProfile(java.lang.String pProfileId, java.lang.String pMappingFile) throws RepositoryException
A transaction is required when executing this method. If no transaction is in place, a new one is started and committed before this method returns.
pProfileId
- the id of the profile to get. If null is entered
for this argument, then this method returns nullpMappingFile
- a mapping file that dictates what
profile properties are returned in the resulting XML. If null is
entered for this argument, then a default mapping file could
be applied, depending on the value of useDefaultMappings
RepositoryException
- if any of the following occurs:
public java.lang.String getProfileId(java.lang.String pLogin) throws RepositoryException
A transaction is required when executing this method. If no transaction is in place, a new one is started and committed before this method returns.
pLogin
- the login to find the id for. If this argument is
null, then null is returnedRepositoryException
- if an error occurs trying to
find the person. This error will come from the profile repository
directly, and not from this methodpublic void updateUser(java.lang.String pProfileAsXML) throws javax.servlet.ServletException
pProfileAsXML
. It's intended that this service be
used by users to update their own profile, and certain session
actions will take place based on that assumption i.e. cookie handling,
locale changing, etc. Admins that want to update other users' profiles
should use adminUpdateUser
,
and not this method.
This method calls preUpdateUser
,
doUpdateUser
, and
postUpdateUser
in turn
This method is expected to be called in the context of an HTTP request. Also, a transaction is required when executing this method. If no transaction is in place, a new one is started and committed before this method returns.
The following request parameter is set in this method
XML_ITEM_PARAM
- the current Repo2Xml item
that is being updated
pProfileAsXML
- the profile with updated values, as a Repo2Xml
itemjavax.servlet.ServletException
- if any of the following occurs:
pProfileAsXML
argument is null or empty
public void updateUser(java.lang.String pProfileAsXML, java.lang.String[] pMatchProperties) throws javax.servlet.ServletException
pProfileAsXML
. It's intended that this service be
used by users to update their own profile, and certain session
actions will take place based on that assumption i.e. cookie handling,
locale changing, etc. Admins that want to update other users' profiles
should use adminUpdateUser
,
and not this method.
This method calls preUpdateUser
,
doUpdateUser
, and
postUpdateUser
in turn
This method is expected to be called in the context of an HTTP request. Also, a transaction is required when executing this method. If no transaction is in place, a new one is started and committed before this method returns.
The following request parameter is set in this method
XML_ITEM_PARAM
- the current Repo2Xml item
that is being updated
pProfileAsXML
- the profile with updated values, as a Repo2Xml
itempMatchProperties
- an array of properties present in the
given xml items whose values will be used to find their persistent
counterparts in the repository. The Repo2Xml values for all the given
property names must exactly match the values or a corresponding
repository item in order for the item to be properly updatedjavax.servlet.ServletException
- if any of the following occurs:
pProfileAsXML
argument is null or empty
protected void doUpdateUser(DynamoHttpServletRequest pRequest, DynamoHttpServletResponse pResponse) throws javax.servlet.ServletException
pRequest
- the current request, expected to have the following
parameter:
XML_ITEM_PARAM - the xml item that is to be updated
And can optionally have the following parameter:
UPDATE_EVENT_PARAM - a map of property names to values, which represents a snapshot of the item-to-update before the update occurs
pResponse
- the current responsejavax.servlet.ServletException
- if any of the following errors occur:
pRequest
protected void postUpdateUser(DynamoHttpServletRequest pRequest, DynamoHttpServletResponse pResponse) throws javax.servlet.ServletException
pRequest
- the current request, expected to have the following
parameter:
XML_ITEM_PARAM - the xml item that is to be updated
And can optionally have the following parameter:
UPDATE_EVENT_PARAM - a map of property names to values, which represents a snapshot of the item-to-update before the update occurs
pRequest
- the current responsepResponse
- the current responsejavax.servlet.ServletException
- if any of the following occur:
public void setContactInfo(java.lang.String pProfileId, java.lang.String pContactInfoAsXML) throws RepositoryException
profileTools.propertyManager.contactInfoPropertyName
value that resolves to an actual profile property. This property
must also be of type atg.repository.RepositoryItem
A transaction is required when executing this method. If no transaction is in place, a new one is started and committed before this method returns.
pProfileId
- the profile id of the user whose contactInfo
property is to be changed. This argument must not be null.pContactInfoAsXML
- a Repo2Xml item of the contact info
that the user's contactInfo property should be set to. This
argument can be null.RepositoryException
- if any of the following occurs:
pProfileId
is null
pProfileId
public void setLocale(java.lang.String pProfileId, java.lang.String pLocaleName) throws RepositoryException
profileTools.propertyManager.localePropertyName
value that resolves to an actual profile property. This property
must also be of type java.lang.String
A transaction is required when executing this method. If no transaction is in place, a new one is started and committed before this method returns.
pProfileId
- the profile id of the user whose contactInfo
property is to be changed. This argument must not be null.pLocaleName
- The locale string that represents the locale
that the user's locale property should be set to e.g. en_EN. This
argument can be null.RepositoryException
- if any of the following occurs:
pProfileId
is null
pProfileId
public java.lang.String loginTrustedUser(java.lang.String pLogin) throws javax.servlet.ServletException
This method calls preLogin
,
doLoginUser
, and
postLoginUser
in turn
This method is expected to be called in the context of an HTTP request. Also, a transaction is required when executing this method. If no transaction is in place, a new one is started and committed before this method returns.
The following request parameters are set in this method:
LOGIN_PARAM
- the login of the user
pLogin
- the login of the user to login. This argument cannot
be nulljavax.servlet.ServletException
- if any of the following errors occur:
pLogin
is null
public java.lang.String loginUser(java.lang.String pLogin, java.lang.String pPassword) throws javax.servlet.ServletException
This method calls preLogin
,
doLoginUser
, and
postLoginUser
in turn
This method is expected to be called in the context of an HTTP request. Also, a transaction is required when executing this method. If no transaction is in place, a new one is started and committed before this method returns.
The following request parameters are set in this method:
LOGIN_PARAM
- the login of the user
PASSWORD_PARAM
- the password of the user
pLogin
- the login of the user to login. This argument cannot
be nullpPassword
- the cleartext password of the user to login. This
argument can be nulljavax.servlet.ServletException
- if any of the following errors occur:
pLogin
is null
public java.lang.String loginUser(java.lang.String pLogin, java.lang.String pPassword, boolean pIsPasswordEncrypted) throws javax.servlet.ServletException
getPasswordHashKey()
method was called
prior to this method in order to get a temporary hashkey used
to encrypt the password on the method caller's end.
Password encryption on the client side is an option when using this
service with a non-secure protocol, such as http. It should be
stressed in triplicate that this mechanism for encryption is not
meant to be un-hackable. If you really want password security, then
use https when calling this service. Just for completeness, here is
the required conversation for logging in a user with client-side password
encryption (this conversation must be handled in a timely fasion, since
there is a timer starting when getPasswordHashKey is called, and ending
when this method is called. The time between these method calls cannot
exceed the value of maxAuthenticationWait
in milliseconds):
1) Client calls canClientEncryptPasswords
2) If canClientEncryptPasswords returns false, client should use
https and send the password as cleartext. Currently, only the
MD5PasswordHasher is a supported for encrypted passwords. Client should
call loginUser(login, cleartext_password, false)
3) If canClientEncryptPasswords returns true, client
calls getPasswordHashAlgorithm
4) Client encrypts the user's password using the rules required by
the returned algorithm. These rules vary depending on the password
hasher being used for a given application. Consult the documentation
for specifics.
5) Client calls getPasswordHashKey - note that the conversation
timer is started here. Clients have maxAuthenticationWait
milliseconds to call loginUser. If loginUser is not
called quickly enough, an error is thrown when it is eventually
called
6) Client further encrypts the user's password using the returned
hash key. The order and manner in which this encryption occurs is
based on the rules of the password hasher being used. Consult
the documentation for specifics.
7) Client calls
loginUser(login, encrypted_password_from_step_6, true)
As you can see, encrypting passwords on the client side is tricky, and
not 100% safe. It is strongly recommended that you call this service
using https and cleartext passwords
This method calls preLogin
,
doLoginUser
, and
postLoginUser
in turn
This method is expected to be called in the context of an HTTP request. Also, a transaction is required when executing this method. If no transaction is in place, a new one is started and committed before this method returns.
The following request parameters are set in this method:
LOGIN_PARAM
- the login of the user
PASSWORD_PARAM
- the password of the user
If this method is called by a user that is already logged in, then that user's login is returned (assuming the credentials match)
pLogin
- the login of the user. This argument cannot be nullpPassword
- the password of the user to login. This argument
can be nullpIsPasswordEncrypted
- true if the given password is
encrypted according to the rules above, false if the password
is cleartextjavax.servlet.ServletException
- if any of the following errors occur:
pLogin
is null
public java.lang.String loginUserOnRealm(java.lang.String pLogin, java.lang.String pPassword, boolean pIsPasswordEncrypted, java.lang.String pPushRealm, java.lang.String pPushSite) throws javax.servlet.ServletException
getPasswordHashKey()
method was called
prior to this method in order to get a temporary hashkey used
to encrypt the password on the method caller's end.
Password encryption on the client side is an option when using this
service with a non-secure protocol, such as http. It should be
stressed in triplicate that this mechanism for encryption is not
meant to be un-hackable. If you really want password security, then
use https when calling this service. Just for completeness, here is
the required conversation for logging in a user with client-side password
encryption (this conversation must be handled in a timely fasion, since
there is a timer starting when getPasswordHashKey is called, and ending
when this method is called. The time between these method calls cannot
exceed the value of maxAuthenticationWait
in milliseconds):
1) Client calls canClientEncryptPasswords
2) If canClientEncryptPasswords returns false, client should use
https and send the password as cleartext. Currently, only the
MD5PasswordHasher is a supported for encrypted passwords. Client should
call loginUser(login, cleartext_password, false)
3) If canClientEncryptPasswords returns true, client
calls getPasswordHashAlgorithm
4) Client encrypts the user's password using the rules required by
the returned algorithm. These rules vary depending on the password
hasher being used for a given application. Consult the documentation
for specifics.
5) Client calls getPasswordHashKey - note that the conversation
timer is started here. Clients have maxAuthenticationWait
milliseconds to call loginUser. If loginUser is not
called quickly enough, an error is thrown when it is eventually
called
6) Client further encrypts the user's password using the returned
hash key. The order and manner in which this encryption occurs is
based on the rules of the password hasher being used. Consult
the documentation for specifics.
7) Client calls
loginUser(login, encrypted_password_from_step_6, true)
As you can see, encrypting passwords on the client side is tricky, and
not 100% safe. It is strongly recommended that you call this service
using https and cleartext passwords
This method calls preLogin
,
doLoginUser
, and
postLoginUser
in turn
This method is expected to be called in the context of an HTTP request. Also, a transaction is required when executing this method. If no transaction is in place, a new one is started and committed before this method returns.
The following request parameters are set in this method:
LOGIN_PARAM
- the login of the user
PASSWORD_PARAM
- the password of the user
PUSH_REALM_PARAM
- the profile realm of the user
PUSH_SITE_PARAM
- the site to log in the user to
If this method is called by a user that is already logged in, then that user's login is returned (assuming the credentials match)
pLogin
- the login of the user. This argument cannot be nullpPassword
- the password of the user to login. This argument
can be nullpPushRealm
- the realm the user is a part ofpPushSite
- the site to log in the user topIsPasswordEncrypted
- true if the given password is
encrypted according to the rules above, false if the password
is cleartextjavax.servlet.ServletException
- if any of the following errors occur:
pLogin
is null
protected void preLoginUser(DynamoHttpServletRequest pRequest, DynamoHttpServletResponse pResponse) throws javax.servlet.ServletException
pRequest
- the current request, expected to have the following
parameters:
LOGIN_PARAM
- the login of the user
PASSWORD_PARAM
- the password of the user
HASHKEY_PARAM
- the hashkey that was given to
the client if they called getPasswordHashKey
. Note
that this only applies in the case that the client signaled that
this authentication attempt used an encrypted password
pResponse
- the current responsejavax.servlet.ServletException
- if any of the following occur:
protected void preLoginUser(DynamoHttpServletRequest pRequest, DynamoHttpServletResponse pResponse, boolean pTrusted) throws javax.servlet.ServletException
pRequest
- the current request, expected to have the following
parameters:
LOGIN_PARAM
- the login of the user
pResponse
- the current responsepTrusted
- True is the user is trusted, false if the user is not trustedjavax.servlet.ServletException
- if any of the following occur:
protected void doLoginUser(DynamoHttpServletRequest pRequest, DynamoHttpServletResponse pResponse) throws javax.servlet.ServletException
propertiesToCopyOnLogin
or
propertiesToAddOnLogin
are set, then those properties
will be copied/added from the un-logged in profile to the logged-in
profilepRequest
- the current request, expected to have the following
parameters:
LOGIN_PARAM
- the login of the user
PASSWORD_PARAM
- the password of the user
HASHKEY_PARAM
- the hashkey that was given to
the client if they called getPasswordHashKey
. Note
that this only applies in the case that the client signaled that
this authentication attempt used an encrypted password
pResponse
- the current responsejavax.servlet.ServletException
- if the password used to login is incorrect,
or an error occurs doing repository operations associated with logging
inprotected void doLoginUser(DynamoHttpServletRequest pRequest, DynamoHttpServletResponse pResponse, boolean pTrusted) throws javax.servlet.ServletException
propertiesToCopyOnLogin
or
propertiesToAddOnLogin
are set, then those properties
will be copied/added from the un-logged in profile to the logged-in
profilepRequest
- the current request, expected to have the following
parameters:
LOGIN_PARAM
- the login of the user
pResponse
- the current responsepTrusted
- True is the user is trusted, false if the user is not trustedjavax.servlet.ServletException
protected void postLoginUser(DynamoHttpServletRequest pRequest, DynamoHttpServletResponse pResponse) throws javax.servlet.ServletException
pRequest
- the current request, expected to have the following
parameters:
LOGIN_PARAM
- the login of the user
PASSWORD_PARAM
- the password of the user
HASHKEY_PARAM
- the hashkey that was given to
the client if they called getPasswordHashKey
. Note
that this only applies in the case that the client signaled that
this authentication attempt used an encrypted password
pResponse
- the current responsejavax.servlet.ServletException
- if there is a problem sending cookies,
or changing the security statusprotected void postLoginUser(DynamoHttpServletRequest pRequest, DynamoHttpServletResponse pResponse, boolean pTrusted) throws javax.servlet.ServletException
pRequest
- the current request, expected to have the following
parameters:
LOGIN_PARAM
- the login of the user
pResponse
- the current responsepTrusted
- True is the user is trusted, false if the user is not trustedjavax.servlet.ServletException
- if there is a problem sending cookies,
or changing the security statuspublic void logoutUser() throws javax.servlet.ServletException
This method calls preLogoutUser
,
doLogoutUser
, and
postLogoutUser
in turn
This method is expected to be called in the context of an HTTP request. Also, a transaction is required when executing this method. If no transaction is in place, a new one is started and committed before this method returns.
javax.servlet.ServletException
- if this method is not called within
the context of a request, or is propagated up from preLogoutUser,
doLogoutUser, or postLogoutUserprotected void preLogoutUser(DynamoHttpServletRequest pRequest, DynamoHttpServletResponse pResponse) throws javax.servlet.ServletException
If logout events are to be fired (generateLogoutEvents
is
true), the following request parameter is set in this method
LOGOUT_ID_PARAM
- the id of the person that is being
logged out. This needs to be saved so we can fire the event after
the person is sucessfully logged out
pRequest
- the current requestpResponse
- the current responsejavax.servlet.ServletException
- if we're setting up a logout event and
there is no current profile to get the id fromprotected void doLogoutUser(DynamoHttpServletRequest pRequest, DynamoHttpServletResponse pResponse) throws javax.servlet.ServletException
pRequest
- the current request, which could have the following
parameter:
LOGOUT_ID_PARAM
- the id of the person that is being
logged out
pRequest
- the current requestpResponse
- the current responsejavax.servlet.ServletException
- if a user-defined error occursprotected void postLogoutUser(DynamoHttpServletRequest pRequest, DynamoHttpServletResponse pResponse) throws javax.servlet.ServletException
pRequest
- the current request, which could have the following
parameter:
LOGOUT_ID_PARAM
- the id of the person that is being
logged out
pResponse
- the current responsejavax.servlet.ServletException
- in the case where we do not
expire the current session, and get an error trying to create a new
RepositoryItem for the profile's data sourcepublic java.lang.String createUser(java.lang.String pProfileAsXML) throws javax.servlet.ServletException
pProfileAsXML
. It's intended that this service be
used by users to create their own profile, and certain session
actions will take place based on that assumption i.e. cookie handling,
locale changing, etc. Admins that want to create other users' profiles
should use adminCreateUserService
,
and not this method.
This method calls preCreateUser
,
doCreateUser
, and
postCreateUser
in turn
This method is expected to be called in the context of an HTTP request. Also, a transaction is required when executing this method. If no transaction is in place, a new one is started and committed before this method returns.
The following request parameter is set in this method
XML_ITEM_PARAM
- the current Repo2Xml item
that is being created
pProfileAsXML
- the profile of the new persistent
user. NOTE: Any password present in this XML should not
have been pre-encrypted by the client. It will be encrypted
in this operation. This argument may not be nulljavax.servlet.ServletException
- if any of the following occurs:
pProfileAsXML
argument is null or empty
protected void preCreateUser(DynamoHttpServletRequest pRequest, DynamoHttpServletResponse pResponse) throws javax.servlet.ServletException
pRequest
- the current request, expected to have the following
parameter:
XML_ITEM_PARAM - the current item that is to be created
pResponse
- the current responsejavax.servlet.ServletException
- if an error occurs.protected void doCreateUser(DynamoHttpServletRequest pRequest, DynamoHttpServletResponse pResponse) throws javax.servlet.ServletException
pRequest
- the current request, expected to have the following
parameter:
XML_ITEM_PARAM - the current item that is to be created
pResponse
- the current responsejavax.servlet.ServletException
- if any of the following errors occur:
pRequest
protected void postCreateUser(DynamoHttpServletRequest pRequest, DynamoHttpServletResponse pResponse) throws javax.servlet.ServletException
pRequest
- the current request, expected to have the following
parameter:
XML_ITEM_PARAM - the current item that is to be created
pResponse
- the current responsejavax.servlet.ServletException
- if an error occurspublic boolean deleteUser(java.lang.String pProfileId) throws javax.servlet.ServletException
pProfileId
.
It's intended that this service be used by users to delete their own
profile.
This method calls preDeleteUser
,
doDeleteUser
, and
postDeleteUser
in turn
This method is expected to be called in the context of an HTTP request. Also, a transaction is required when executing this method. If no transaction is in place, a new one is started and committed before this method returns.
The following request parameter is set in this method
UPDATE_ID_PARAM
- the id of the profile that is to be
deleted
pProfileId
- the profile of the user to delete. This argument
may not be nulljavax.servlet.ServletException
- if any of the following occurs:
pProfileId
argument is null or empty
protected void preDeleteUser(DynamoHttpServletRequest pRequest, DynamoHttpServletResponse pResponse) throws javax.servlet.ServletException
pRequest
- the current request, expected to have the following
parameter:
UPDATE_ID_PARAM - the id of the user to be deleted
pResponse
- the current responsejavax.servlet.ServletException
- if an error occurs.protected void postDeleteUser(DynamoHttpServletRequest pRequest, DynamoHttpServletResponse pResponse) throws javax.servlet.ServletException
pRequest
- the current request, expected to have the following
parameter:
UPDATE_ID_PARAM - the id of the user to be deleted
pResponse
- the current responsejavax.servlet.ServletException
- if an error occurs.protected void doDeleteUser(DynamoHttpServletRequest pRequest, DynamoHttpServletResponse pResponse) throws javax.servlet.ServletException
createProfileType
propertypRequest
- the current request, expected to have the following
parameter:
UPDATE_ID_PARAM - the id of the user to be deleted
pResponse
- the current responsejavax.servlet.ServletException
- if any of the following errors occur:
pRequest
public java.lang.String getPasswordHashKey() throws javax.servlet.ServletException
profileTools
property. If this PasswordHasher
does not support adding hashkeys for extra encryption, this method
will return null and any web service clients using this call during
a login conversation should not encrypt their passwords i.e. use
https. In the case where a non-null hashkey is generated, this method
starts the login conversation for a login attempt with an encrypted
password.javax.servlet.ServletException
- if we're already in the middle of a
login conversation and we've exceeded the conversation time limit, as
specified by maxAuthenticationWait
public java.lang.String getPasswordHashAlgorithm() throws javax.servlet.ServletException
javax.servlet.ServletException
public boolean canClientEncryptPasswords()
public void updateXMLItem(java.lang.String pItemAsXML, java.lang.String[] pMatchedProperties) throws RepositoryException
pItemAsXML
- the item to update in XML format. The name of the
repository and the item's type are present in the XML format, so
those do not need to be supplied as arguments. This method will determine
which known RepositoryItem to update based on the values of the
properties listed in pMatchedProperties
present in the
pItemAsXML
, or if that argument is null, the repositoryId
will be used to match items. If there is no existing item which matches
those property values, then the item will be added to the repository
if the xmlUpdateService
component has its addWhenNoMatchedItems
flag set to true.pMatchedProperties
- an array of property names that will be used
to match up values between the given pItemAsXML
and an
existing RepositoryItem object (note: use "repositoryId" to specify
the matching of ids)RepositoryException
- if an error occurs updating the item
in the repositorypublic java.lang.String getXMLItem(RepositoryItem pItem, Repository pRepository, java.lang.String pItemDescriptorName, java.lang.String pMappingFile) throws RepositoryException
pItem
- the item to transformpRepository
- the repository that holds
the item, used to determine a mapping filepItemDescriptorName
- the name of the item descriptor that describes
the given item, used to determine a mapping filepMappingFile
- the mapping file to use when turning the item
into an XML documentRepositoryException
- if an error occurs transforming the itempublic RepositoryItem addXMLItem(java.lang.String pItemAsXML, boolean pPersist) throws RepositoryException
pItemAsXML
- the item to add or createpPersist
- if true, the given item will be added, otherwise
it will just be createdRepositoryException
- if an error occurs adding or creating
the itempublic java.lang.String getMappingFile(Repository pRepository, java.lang.String pItemDescriptorName)
pRepository
- the repository that contains
the given item descriptorpItemDescriptorName
- the name of the item descriptor to get the
mapping file forpublic RepositoryItem getRepositoryItemFromXML(java.lang.String pItemAsXML) throws RepositoryException
pItemAsXML
- the repository item in XML formpItemAsXML
, or null if no such object is
foundRepositoryException
public RepositoryItem getRepositoryItemFromXML(java.lang.String pItemAsXML, java.lang.String[] pMatchedProperties) throws RepositoryException
pItemAsXML
- the repository item in XML formpMatchedProperties
- an array of property names whose
values are used to find the pItemAsXML objects match in the
repositorypItemAsXML
, or null if no such object is
foundRepositoryException
protected javax.transaction.Transaction ensureTransaction()
protected void commitTransaction()
public void doStartService() throws ServiceException
doStartService
in class GenericService
ServiceException
- if there is no ProfileTools component
to be foundpublic PasswordHasher getLoginPasswordHasher()
public java.lang.String getCurrentProfileId()
public Profile getCurrentProfile()
public void updateLDAPProfileAttributes(MutableRepositoryItem pItem) throws RepositoryException
pItem
- the item to change values onRepositoryException
public void copyProperties(RepositoryItem pGuestUser, RepositoryItem pAuthenticatedUser, java.lang.String[] pPropertiesToCopy) throws RepositoryException
pPropertiesToCopy
from
the pGuestUser
to the pAuthenticatedUser
pGuestUser
- the user to get values frompAuthenticatedUser
- the user to copy values topPropertiesToCopy
- the properties that should be copiedRepositoryException
- if an error occurs updating
the authenticated userpublic void addProperties(RepositoryItem pGuestUser, RepositoryItem pAuthenticatedUser, java.lang.String[] pPropertiesToAdd) throws RepositoryException
pGuestUser
- the user to copy values frompAuthenticatedUser
- the user to copy values topPropertiesToAdd
- names of multi-valued properties whose
values should be added from the guest to the authenticated userRepositoryException
- if an error occurs updating the
authenticated user with the added propertiespublic void addProperty(java.lang.String pPropertyName, RepositoryItem pGuestUser, RepositoryItem pAuthenticatedUser) throws RepositoryException
pGuestUser
- the user to copy values frompAuthenticatedUser
- the user to copy values topPropertyName
- the name of a multi-valued property whose values
will be copied from the guest user and added to the authenticated userRepositoryException
public void addUpdateListener(atg.userprofiling.ProfileUpdateListener pListener)
pListener
- the listener to addpublic void removeUpdateListener(atg.userprofiling.ProfileUpdateListener pListener)
pListener
- the listener to removepublic void sendUpdateEvent(atg.userprofiling.ProfileUpdateEvent pEvent)
pEvent
- the event to sendpublic void encryptPassword(MutableRepositoryItem pProfile) throws RepositoryException
pProfile
- the profile to encrypt the password ofRepositoryException
public boolean endOperation(DynamoHttpServletRequest pRequest)
pRequest
- the request to examinepublic java.lang.Object endOperationValue(DynamoHttpServletRequest pRequest)
pRequest
- the request to be examinedpublic void sendProfileSwapEvent(int pEventType, RepositoryItem pPreSwapItem, RepositoryItem pPostSwapItem)
pEventType
- the type of operation that was performed when
the profiles were swappedpPreSwapItem
- the data source of the profile before the
swap was performedpPostSwapItem
- the data source of the profile after the
swap was performedpublic java.lang.String pushRealmFromRequest(DynamoHttpServletRequest pRequest)
public boolean popRealm(java.lang.String pRealmId)