KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > appfuse > webapp > action > PasswordHintController


1 package org.appfuse.webapp.action;
2
3 import java.util.ArrayList JavaDoc;
4 import java.util.List JavaDoc;
5
6 import javax.servlet.http.HttpServletRequest JavaDoc;
7 import javax.servlet.http.HttpServletResponse JavaDoc;
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 /**
25  * Simple class to retrieve and send a password hint to users.
26  *
27  * <p>
28  * <a HREF="PasswordHintController.java.htm"><i>View Source</i></a>
29  * </p>
30  *
31  * @author <a HREF="mailto:matt@raibledesigns.com">Matt Raible</a>
32  */

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 JavaDoc request,
57                                       HttpServletResponse JavaDoc response)
58     throws Exception JavaDoc {
59         if (log.isDebugEnabled()) {
60             log.debug("entering 'handleRequest' method...");
61         }
62
63         String JavaDoc username = request.getParameter("username");
64         MessageSourceAccessor text =
65             new MessageSourceAccessor(messageSource, request.getLocale());
66
67         // ensure that the username has been sent
68
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 JavaDoc[] {
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         // look up the user's information
85
try {
86             User user = (User) mgr.getUserByUsername(username);
87
88             StringBuffer JavaDoc msg = new StringBuffer JavaDoc();
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 JavaDoc 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 JavaDoc[] { username, user.getEmail() }));
102         } catch (Exception JavaDoc e) {
103             saveError(request,
104                       text.getMessage("login.passwordHint.error",
105                                       new Object JavaDoc[] { username }));
106         }
107
108         return new ModelAndView(new RedirectView(request.getContextPath()));
109     }
110
111     public void saveError(HttpServletRequest JavaDoc request, String JavaDoc error) {
112         List JavaDoc errors = (List JavaDoc) request.getSession().getAttribute("errors");
113         if (errors == null) {
114             errors = new ArrayList JavaDoc();
115         }
116         errors.add(error);
117         request.getSession().setAttribute("errors", errors);
118     }
119
120     // this method is also in BaseForm Controller
121
public void saveMessage(HttpServletRequest JavaDoc request, String JavaDoc msg) {
122         List JavaDoc messages = (List JavaDoc) request.getSession().getAttribute("messages");
123         if (messages == null) {
124             messages = new ArrayList JavaDoc();
125         }
126         messages.add(msg);
127         request.getSession().setAttribute("messages", messages);
128     }
129 }
130
Popular Tags