1 package org.appfuse.webapp.action; 2 3 import java.util.ArrayList ; 4 import java.util.List ; 5 6 import javax.servlet.http.HttpServletRequest ; 7 import javax.servlet.http.HttpServletResponse ; 8 9 import org.apache.commons.logging.Log; 10 import org.apache.commons.logging.LogFactory; 11 12 import org.appfuse.model.User; 13 import org.appfuse.service.MailEngine; 14 import org.appfuse.service.UserManager; 15 import org.appfuse.webapp.util.RequestUtil; 16 17 import org.springframework.context.MessageSource; 18 import org.springframework.context.support.MessageSourceAccessor; 19 import org.springframework.mail.SimpleMailMessage; 20 import org.springframework.web.servlet.ModelAndView; 21 import org.springframework.web.servlet.mvc.Controller; 22 import org.springframework.web.servlet.view.RedirectView; 23 24 33 public class PasswordHintController implements Controller { 34 private transient final Log log = LogFactory.getLog(PasswordHintController.class); 35 private UserManager mgr = null; 36 private MessageSource messageSource = null; 37 protected MailEngine mailEngine = null; 38 protected SimpleMailMessage message = null; 39 40 public void setUserManager(UserManager userManager) { 41 this.mgr = userManager; 42 } 43 44 public void setMessageSource(MessageSource messageSource) { 45 this.messageSource = messageSource; 46 } 47 48 public void setMailEngine(MailEngine mailEngine) { 49 this.mailEngine = mailEngine; 50 } 51 52 public void setMessage(SimpleMailMessage message) { 53 this.message = message; 54 } 55 56 public ModelAndView handleRequest(HttpServletRequest request, 57 HttpServletResponse response) 58 throws Exception { 59 if (log.isDebugEnabled()) { 60 log.debug("entering 'handleRequest' method..."); 61 } 62 63 String username = request.getParameter("username"); 64 MessageSourceAccessor text = 65 new MessageSourceAccessor(messageSource, request.getLocale()); 66 67 if (username == null) { 69 log.warn("Username not specified, notifying user that it's a required field."); 70 71 request.setAttribute("error", 72 text.getMessage("errors.required", 73 new Object [] { 74 text.getMessage("user.username") 75 })); 76 77 return new ModelAndView("login"); 78 } 79 80 if (log.isDebugEnabled()) { 81 log.debug("Processing Password Hint..."); 82 } 83 84 try { 86 User user = (User) mgr.getUserByUsername(username); 87 88 StringBuffer msg = new StringBuffer (); 89 msg.append("Your password hint is: " + user.getPasswordHint()); 90 msg.append("\n\nLogin at: " + RequestUtil.getAppURL(request)); 91 92 message.setTo(user.getEmail()); 93 String subject = '[' + text.getMessage("webapp.name") + "] " + 94 text.getMessage("user.passwordHint"); 95 message.setSubject(subject); 96 message.setText(msg.toString()); 97 mailEngine.send(message); 98 99 saveMessage(request, 100 text.getMessage("login.passwordHint.sent", 101 new Object [] { username, user.getEmail() })); 102 } catch (Exception e) { 103 saveError(request, 104 text.getMessage("login.passwordHint.error", 105 new Object [] { username })); 106 } 107 108 return new ModelAndView(new RedirectView(request.getContextPath())); 109 } 110 111 public void saveError(HttpServletRequest request, String error) { 112 List errors = (List ) request.getSession().getAttribute("errors"); 113 if (errors == null) { 114 errors = new ArrayList (); 115 } 116 errors.add(error); 117 request.getSession().setAttribute("errors", errors); 118 } 119 120 public void saveMessage(HttpServletRequest request, String msg) { 122 List messages = (List ) request.getSession().getAttribute("messages"); 123 if (messages == null) { 124 messages = new ArrayList (); 125 } 126 messages.add(msg); 127 request.getSession().setAttribute("messages", messages); 128 } 129 } 130 | Popular Tags |