package org.appfuse.webapp.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.util.MessageResources;
import org.appfuse.model.User;
import org.appfuse.service.MailEngine;
import org.appfuse.service.UserManager;
import org.appfuse.webapp.util.RequestUtil;
import org.springframework.mail.SimpleMailMessage;
public final class PasswordHintAction extends BaseAction {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
MessageResources resources = getResources(request);
ActionMessages errors = new ActionMessages();
String username = request.getParameter("username");
if (username == null) {
log.warn("Username not specified, notifying user that it's a required field.");
errors.add(ActionMessages.GLOBAL_MESSAGE,
new ActionMessage("errors.required",
resources.getMessage("userForm.username")));
saveErrors(request, errors);
return mapping.findForward("previousPage");
}
if (log.isDebugEnabled()) {
log.debug("Processing Password Hint...");
}
ActionMessages messages = new ActionMessages();
try {
UserManager userMgr = (UserManager) getBean("userManager");
User user = userMgr.getUserByUsername(username);
StringBuffer msg = new StringBuffer();
msg.append("Your password hint is: " + user.getPasswordHint());
msg.append("\n\nLogin at: " + RequestUtil.getAppURL(request));
SimpleMailMessage message = (SimpleMailMessage) getBean("mailMessage");
message.setTo(user.getEmail());
String subject = '[' + resources.getMessage("webapp.name") + "] " +
resources.getMessage("userForm.passwordHint");
message.setSubject(subject);
message.setText(msg.toString());
MailEngine mailEngine = (MailEngine) getBean("mailEngine");
mailEngine.send(message);
messages.add(ActionMessages.GLOBAL_MESSAGE,
new ActionMessage("login.passwordHint.sent", username,
user.getEmail()));
saveMessages(request.getSession(), messages);
} catch (Exception e) {
e.printStackTrace();
errors.add(ActionMessages.GLOBAL_MESSAGE,
new ActionMessage("login.passwordHint.error", username));
saveErrors(request, errors);
}
return mapping.findForward("previousPage");
}
}