atg.userprofiling
Class ForgotPasswordHandler

java.lang.Object
  extended by atg.nucleus.logging.VariableArgumentApplicationLoggingImpl
      extended by atg.nucleus.GenericService
          extended by atg.droplet.EmptyFormHandler
              extended by atg.droplet.GenericFormHandler
                  extended by atg.userprofiling.ProfileForm
                      extended by atg.userprofiling.ForgotPasswordHandler
All Implemented Interfaces:
DropletFormHandler, NameContextBindingListener, NameContextElement, NameResolver, AdminableService, ApplicationLogging, atg.nucleus.logging.ApplicationLoggingSender, atg.nucleus.logging.TraceApplicationLogging, atg.nucleus.logging.VariableArgumentApplicationLogging, ComponentNameResolver, Service, ServiceListener, java.util.EventListener

public class ForgotPasswordHandler
extends ProfileForm

This class provides a form handler for handling requests related to forgot password functionality.


Nested Class Summary
 
Nested classes/interfaces inherited from class atg.userprofiling.ProfileForm
ProfileForm.ProfileFormHashtableWrapper
 
Field Summary
static java.lang.String CLASS_VERSION
          Class version string
protected static java.lang.String MSG_ERR_SENDING_EMAIL
           
protected static java.lang.String MSG_NO_SUCH_PROFILE
           
 
Fields inherited from class atg.userprofiling.ProfileForm
CONFIRMPASSWORD_PARAM, DEFAULT_CREATE_PROFILE_TYPE, DEFAULT_LOGIN_PROFILE_TYPE, DEFAULT_LOGOUT_PROFILE_TYPE, HANDLE_CREATE, HANDLE_CREATE_PARAM, HANDLE_FAILURE, HANDLE_LOGIN, HANDLE_LOGIN_PARAM, HANDLE_SUCCESS, ID_NAME, mBadPasswordDelay, mChangePasswordErrorURL, mChangePasswordSuccessURL, mCheckForRequiredParameters, mCheckForRequiredProperties, mCheckForRequiredPropertiesAfterUpdate, mCompareValueInCopyPropertiesOnLogin, mConfirmOldPassword, mConfirmPassword, mCreateErrorURL, mCreateProfileType, mCreateSuccessURL, mDeleteErrorURL, mDeleteSuccessURL, mExpireSessionOnLogout, mExtractDefaultValuesFromProfile, mLoginErrorURL, mLoginProfileType, mLoginSuccessURL, mLogoutErrorURL, mLogoutProfileType, mLogoutSuccessURL, mProfileTools, mPropertiesToAddOnLogin, mPropertiesToCopyOnLogin, mRepositoryId, MSG_ERR_CREATING_PROFILE, MSG_ERR_DELETING_PROFILE, MSG_ERR_UPDATING_PROFILE, MSG_ILLEGAL_ARGUMENT, MSG_INVALID_ADD_PROPERTY, MSG_INVALID_LOGIN, MSG_INVALID_PASSWORD, MSG_MISSING_LOGIN, MSG_MISSING_PASSWORD, MSG_MISSING_PROFILE, MSG_MISSING_PROFILE_TOOLS, MSG_MISSING_REQUIRED_PROPERTY, MSG_NO_SUCH_PROFILE_PROPERTY, MSG_NO_TYPE_CONVERTER, MSG_PASSWORD_SAME_AS_OLD_PASSWORD, MSG_PASSWORDS_DO_NOT_MATCH, MSG_PERMISSION_DEFINED_PASSWORD_CHANGE, MSG_READ_ONLY_PROFILE_PROPERTY, MSG_TYPE_CONVERSION_ERR, MSG_USER_ALREADY_EXISTS, MSG_WARNING_PROFILE_TOOLS, mSwapEventListeners, mTrimProperties, mUpdateErrorURL, mUpdateSuccessURL, mUserLoginManager, mUsingLdapProfile, mValue, NULL_SENTINEL, OLDPASSWORD_PARAM, REPOSITORY_ID_PROPERTY_NAME, RESOURCE_BUNDLE_NAME, sResourceBundle, STATUS_ERROR_REDIRECT, STATUS_ERROR_STAY, STATUS_SUCCESS
 
Fields inherited from class atg.droplet.GenericFormHandler
PARAM_DEFER_FORWARD_OR_REDIRECT, PARAM_USE_FORWARDS
 
Fields inherited from class atg.nucleus.GenericService
SERVICE_INFO_KEY
 
Fields inherited from interface atg.nucleus.logging.TraceApplicationLogging
DEFAULT_LOG_TRACE_STATUS
 
Fields inherited from interface atg.nucleus.logging.ApplicationLogging
DEFAULT_LOG_DEBUG_STATUS, DEFAULT_LOG_ERROR_STATUS, DEFAULT_LOG_INFO_STATUS, DEFAULT_LOG_WARNING_STATUS
 
Constructor Summary
ForgotPasswordHandler()
           
 
Method Summary
protected  java.util.Map generateNewPasswordTemplateParams(DynamoHttpServletRequest pRequest, DynamoHttpServletResponse pResponse, RepositoryItem pProfile, java.lang.String pNewPassword)
          Generates the parameters map that's used to send the new password email.
 java.lang.String getForgotPasswordErrorURL()
           
 java.lang.String getForgotPasswordSuccessURL()
           
 java.lang.String getNewPasswordParam()
           
 TemplateEmailInfoImpl getTemplateEmailInfo()
           
 TemplateEmailSender getTemplateEmailSender()
           
 boolean handleForgotPassword(DynamoHttpServletRequest pRequest, DynamoHttpServletResponse pResponse)
          Takes a login or email property and, if there were no errors in submitting the form, finds the profile associated, generates a new password, updates the profile, and sends an email to the user.
 boolean isPersistEmails()
          Returns boolean indicating whether the email is persisted before it is sent.
 boolean isSendEmailInSeparateThread()
          Returns boolean indicating whether the email is sent in a separate thread.
 MutableRepositoryItem[] lookupUsers(java.lang.String login, java.lang.String email)
          Lookup an array of users from the given login or email.
protected  void postForgotPassword(DynamoHttpServletRequest pRequest, DynamoHttpServletResponse pResponse)
          Operation called just after the forgot password logic is executed
protected  void preForgotPassword(DynamoHttpServletRequest pRequest, DynamoHttpServletResponse pResponse)
          Operation called just before the forgot password logic is executed
 void setForgotPasswordErrorURL(java.lang.String pForgotPasswordErrorURL)
          Sets the property ForgotPasswordErrorURL.
 void setForgotPasswordSuccessURL(java.lang.String pForgotPasswordSuccessURL)
          Sets the property ForgotPasswordSuccessURL.
 void setNewPasswordParam(java.lang.String pNewPasswordParam)
          Sets the property NewPasswordParam
 void setPersistEmails(boolean pPersistEmails)
          Sets boolean indicating whether the email is persisted before it is sent.
 void setSendEmailInSeparateThread(boolean pSendEmailInSeparateThread)
          Sets boolean indicating whether the email is sent in a separate thread.
 void setTemplateEmailInfo(TemplateEmailInfoImpl pTemplateEmailInfo)
          Sets the property TemplateEmailInfo
 void setTemplateEmailSender(TemplateEmailSender pTemplateEmailSender)
          Sets the property TemplateEmailSender
 
Methods inherited from class atg.userprofiling.ProfileForm
addMulti, addPropertiesOnLogin, addProperty, addSwapEventListener, addUser, changePassword, checkFormError, checkFormSuccess, checkForRequiredParameters, checkForRequiredProperties, checkForRequiredProperties, commitTransaction, copyPropertiesOnLogin, createProfileItem, createUser, doStartService, ensureTransaction, findUser, findUser, formatUserMessage, formatUserMessage, formatUserMessage, formatUserMessage, generatePropertyPath, getAddMultiPropertyName, getAddMultiPropertyValue, getBadPasswordDelay, getChangePasswordErrorURL, getChangePasswordSuccessURL, getCheckForRequiredParameters, getCheckForRequiredProperties, getCheckForRequiredPropertiesAfterUpdate, getCreateErrorURL, getCreateProfileType, getCreateSuccessURL, getDeleteErrorURL, getDeleteSuccessURL, getDescriptor, getExpireSessionOnLogout, getLoginErrorURL, getLoginProfileType, getLoginSuccessURL, getLogoutErrorURL, getLogoutProfileType, getLogoutSuccessURL, getProcessPropertyNames, getProfile, getProfileItem, getProfileTools, getPropertiesToAddOnLogin, getPropertiesToCopyOnLogin, getRepositoryId, getStringValueProperty, getTransactionDemarcation, getTransactionManager, getTrimProperties, getUpdateErrorURL, getUpdateSuccessURL, getUserLocale, getUserLoginManager, getValue, getValueFromArrayString, getValueFromObject, getValueFromObjectArray, getValueFromString, getValueFromStringArray, getValueMap, getValueProperty, handleAddMulti, handleChangePassword, handleCreate, handleDelete, handleLogin, handleLogout, handleUpdate, handleValueDictionaryByParameters, isCompareValueInCopyPropertiesOnLogin, isConfirmOldPassword, isConfirmPassword, isExtractDefaultValuesFromProfile, isTrimProperty, isUsingLdapProfile, postAddMulti, postChangePassword, postCreateUser, postDeleteUser, postLoginUser, postLogoutUser, postUpdateUser, postValueDictionaryByParameters, preAddMulti, preChangePassword, preCreateUser, preDeleteUser, preLoginUser, preLogoutUser, preUpdateUser, preValueDictionaryByParameters, removeSwapEventListener, removeUser, sendProfileSwapEvent, setBadPasswordDelay, setChangePasswordErrorURL, setChangePasswordSuccessURL, setCheckForRequiredParameters, setCheckForRequiredProperties, setCheckForRequiredPropertiesAfterUpdate, setCompareValueInCopyPropertiesOnLogin, setConfirmOldPassword, setConfirmPassword, setCreateErrorURL, setCreateProfileType, setCreateSuccessURL, setDeleteErrorURL, setDeleteSuccessURL, setExpireSessionOnLogout, setExtractDefaultValuesFromProfile, setLoginErrorURL, setLoginProfileType, setLoginSuccessURL, setLogoutErrorURL, setLogoutProfileType, setLogoutSuccessURL, setProfileTools, setPropertiesToAddOnLogin, setPropertiesToCopyOnLogin, setRepositoryId, setTrimProperties, setUpdateErrorURL, setUpdateSuccessURL, setUserLoginManager, setUsingLdapProfile, setValueDictionaryByParameters, setValueProperty, updateLDAPProfileAttributes, updatePasswordValue, updateProfileAttributes, updateProfileAttributes, updateUser, userAlreadyExists, valueIsEmpty
 
Methods inherited from class atg.droplet.GenericFormHandler
addFormException, addUncheckedFormException, afterSet, beforeSet, checkFormRedirect, createFormSubmissionMessage, getCancelURL, getCheckForValidSession, getFormError, getFormExceptions, getFormName, getMessagePort, getMessageSource, getMessageType, getPropertyExceptions, getSendMessages, getUncheckedFormExceptions, handleCancel, handleFormException, handleUncheckedFormException, hasUncheckedFormExceptions, isDeferForwardsAndRedirects, isRestorableForm, isUseForwards, isValidSession, redirectOrForward, resetFormExceptions, setCancelURL, setCheckForValidSession, setDeferForwardsAndRedirects, setFormName, setMessagePort, setMessageSource, setMessageType, setRestorableForm, setSendMessages, setUseForwards
 
Methods inherited from class atg.droplet.EmptyFormHandler
afterGet, beforeGet
 
Methods inherited from class atg.nucleus.GenericService
addLogListener, createAdminServlet, doStopService, getAbsoluteName, getAdminServlet, getLoggingForVlogging, getLogListenerCount, getLogListeners, getName, getNameContext, getNucleus, getRoot, getServiceConfiguration, getServiceInfo, isLoggingDebug, isLoggingError, isLoggingInfo, isLoggingTrace, isLoggingWarning, isRunning, logDebug, logDebug, logDebug, logError, logError, logError, logInfo, logInfo, logInfo, logTrace, logTrace, logTrace, logWarning, logWarning, logWarning, nameContextElementBound, nameContextElementUnbound, removeLogListener, resolveName, resolveName, resolveName, resolveName, sendLogEvent, setLoggingDebug, setLoggingError, setLoggingInfo, setLoggingTrace, setLoggingWarning, setNucleus, setServiceInfo, startService, stopService
 
Methods inherited from class atg.nucleus.logging.VariableArgumentApplicationLoggingImpl
vlogDebug, vlogDebug, vlogDebug, vlogDebug, vlogError, vlogError, vlogError, vlogError, vlogInfo, vlogInfo, vlogInfo, vlogInfo, vlogTrace, vlogTrace, vlogTrace, vlogTrace, vlogWarning, vlogWarning, vlogWarning, vlogWarning
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

CLASS_VERSION

public static java.lang.String CLASS_VERSION
Class version string


MSG_NO_SUCH_PROFILE

protected static final java.lang.String MSG_NO_SUCH_PROFILE
See Also:
Constant Field Values

MSG_ERR_SENDING_EMAIL

protected static final java.lang.String MSG_ERR_SENDING_EMAIL
See Also:
Constant Field Values
Constructor Detail

ForgotPasswordHandler

public ForgotPasswordHandler()
Method Detail

setSendEmailInSeparateThread

public void setSendEmailInSeparateThread(boolean pSendEmailInSeparateThread)
Sets boolean indicating whether the email is sent in a separate thread.

Parameters:
pUsingPriceLists - boolean indicating whether the email is sent in a separate thread.

isSendEmailInSeparateThread

public boolean isSendEmailInSeparateThread()
Returns boolean indicating whether the email is sent in a separate thread.


setPersistEmails

public void setPersistEmails(boolean pPersistEmails)
Sets boolean indicating whether the email is persisted before it is sent.

Parameters:
pUsingPriceLists - boolean indicating whether the email is persisted before it is sent.

isPersistEmails

public boolean isPersistEmails()
Returns boolean indicating whether the email is persisted before it is sent.


setTemplateEmailSender

public void setTemplateEmailSender(TemplateEmailSender pTemplateEmailSender)
Sets the property TemplateEmailSender


getTemplateEmailSender

public TemplateEmailSender getTemplateEmailSender()
Returns:
The value of the property TemplateEmailSender

setForgotPasswordErrorURL

public void setForgotPasswordErrorURL(java.lang.String pForgotPasswordErrorURL)
Sets the property ForgotPasswordErrorURL.


getForgotPasswordErrorURL

public java.lang.String getForgotPasswordErrorURL()
Returns:
The value of the property ForgotPasswordErrorURL.

setForgotPasswordSuccessURL

public void setForgotPasswordSuccessURL(java.lang.String pForgotPasswordSuccessURL)
Sets the property ForgotPasswordSuccessURL.


getForgotPasswordSuccessURL

public java.lang.String getForgotPasswordSuccessURL()
Returns:
The value of the property ForgotPasswordSuccessURL.

setTemplateEmailInfo

public void setTemplateEmailInfo(TemplateEmailInfoImpl pTemplateEmailInfo)
Sets the property TemplateEmailInfo


getTemplateEmailInfo

public TemplateEmailInfoImpl getTemplateEmailInfo()
Returns:
The value of the property TemplateEmailInfo

setNewPasswordParam

public void setNewPasswordParam(java.lang.String pNewPasswordParam)
Sets the property NewPasswordParam


getNewPasswordParam

public java.lang.String getNewPasswordParam()
Returns:
The value of the property NewPasswordParam

handleForgotPassword

public boolean handleForgotPassword(DynamoHttpServletRequest pRequest,
                                    DynamoHttpServletResponse pResponse)
                             throws javax.servlet.ServletException,
                                    java.io.IOException
Takes a login or email property and, if there were no errors in submitting the form, finds the profile associated, generates a new password, updates the profile, and sends an email to the user.

If any errors occur in the process, form errors will be added. If there were no errors encountered while submitting the form, we optionally redirect to the value of the property forgotPasswordSuccessURL. Otherwise, we optionally redirect to forgotPasswordErrorURL.

Parameters:
pRequest - the servlet's request
pResponse - the servlet's response
Throws:
javax.servlet.ServletException - if there was an error while executing the code
java.io.IOException - if there was an error with servlet io
See Also:
ProfileTools.generateNewPasswordForProfile(RepositoryItem), ProfileTools#sendEmailToUser(MutableRepositoryItem, boolean, boolean, TemplateEmailInfo, Map), generateNewPasswordTemplateParams(DynamoHttpServletRequest, DynamoHttpServletResponse, RepositoryItem, String)

generateNewPasswordTemplateParams

protected java.util.Map generateNewPasswordTemplateParams(DynamoHttpServletRequest pRequest,
                                                          DynamoHttpServletResponse pResponse,
                                                          RepositoryItem pProfile,
                                                          java.lang.String pNewPassword)
Generates the parameters map that's used to send the new password email.

By default, this method adds the parameter for the new password using the name configured in the newPasswordParam property.

Extend this method to add additional parameters to the email template.

Parameters:
pRequest -
pResponse -
pProfile - the profile that had the new password generated.
pNewPassword - the new password in clear text
Returns:
Map of template parameters

preForgotPassword

protected void preForgotPassword(DynamoHttpServletRequest pRequest,
                                 DynamoHttpServletResponse pResponse)
                          throws javax.servlet.ServletException,
                                 java.io.IOException
Operation called just before the forgot password logic is executed

Parameters:
pRequest - the servlet's request
pResponse - the servlet's response
Throws:
javax.servlet.ServletException - if there was an error while executing the code
java.io.IOException - if there was an error with servlet io

postForgotPassword

protected void postForgotPassword(DynamoHttpServletRequest pRequest,
                                  DynamoHttpServletResponse pResponse)
                           throws javax.servlet.ServletException,
                                  java.io.IOException
Operation called just after the forgot password logic is executed

Parameters:
pRequest - the servlet's request
pResponse - the servlet's response
Throws:
javax.servlet.ServletException - if there was an error while executing the code
java.io.IOException - if there was an error with servlet io

lookupUsers

public MutableRepositoryItem[] lookupUsers(java.lang.String login,
                                           java.lang.String email)
Lookup an array of users from the given login or email. First attempts to find the user associated with the given login. If nothing is returned, attempt to lookup the user(s) associated with the given email. Return null if no users found.

Parameters:
login - - login passed from web form
email - - email address passed from web form
Returns: