1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.promotego.controllers;
20
21 import javax.servlet.http.HttpServletRequest;
22 import javax.servlet.http.HttpServletResponse;
23
24 import org.promotego.beans.User;
25 import org.promotego.beans.UserHolder;
26 import org.promotego.dao.interfaces.UserDao;
27 import org.promotego.interfaces.PasswordHashTool;
28 import org.promotego.viewbeans.LoginBean;
29 import org.springframework.beans.factory.annotation.Required;
30 import org.springframework.validation.BindException;
31 import org.springframework.web.servlet.ModelAndView;
32 import org.springframework.web.servlet.mvc.SimpleFormController;
33 import org.springframework.web.servlet.view.RedirectView;
34
35 public class LoginController extends SimpleFormController
36 {
37 private UserDao m_userDao;
38 private PasswordHashTool m_passwordHashTool;
39 private UserHolder m_userHolder;
40
41 @Override
42 public ModelAndView onSubmit(HttpServletRequest request,
43 HttpServletResponse response, Object command, BindException errors)
44 {
45 LoginBean loginBean = (LoginBean) command;
46 String username = loginBean.getUsername();
47 String password = loginBean.getPassword();
48
49 if (username != null && password != null)
50 {
51
52 username = username.toLowerCase();
53
54 User theUser = m_userDao.getUserByUsername(username);
55 if (theUser != null)
56 {
57 if (m_passwordHashTool.match(theUser.getCryptedPassword(),
58 password))
59 {
60
61 request.getSession().invalidate();
62
63
64 m_userHolder.setUser(theUser);
65
66 String redirect = request.getParameter("redirect");
67 if (redirect != null && redirect.length() > 0)
68 {
69 if (!redirect.matches("^[a-zA-Z0-9]*:.*"))
70 {
71
72
73 return new ModelAndView(new RedirectView(redirect,
74 false, true, false));
75 }
76 }
77
78 return new ModelAndView("welcome");
79 }
80 }
81 }
82
83 errors.reject("login.invalid", "Username or password invalid");
84 return new ModelAndView("login", errors.getModel());
85 }
86
87 @Required
88 public void setUserDao(UserDao userDao)
89 {
90 m_userDao = userDao;
91 }
92
93 @Required
94 public void setPasswordHashTool(PasswordHashTool passwordHashTool)
95 {
96 m_passwordHashTool = passwordHashTool;
97 }
98
99 @Required
100 public void setUserHolder(UserHolder theUserHolder)
101 {
102 m_userHolder = theUserHolder;
103 }
104 }