1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package fr.ifremer.coser.web.actions.auth;
23
24 import fr.ifremer.coser.web.CoserWebConfig;
25 import fr.ifremer.coser.web.actions.common.AbstractCoserAction;
26 import org.apache.commons.logging.Log;
27 import org.apache.commons.logging.LogFactory;
28 import org.apache.struts2.convention.annotation.Result;
29 import org.apache.struts2.interceptor.SessionAware;
30 import org.nuiton.util.StringUtil;
31
32 import java.util.Map;
33
34
35
36
37
38
39
40
41
42
43 @Result(type = "redirect", location = "/admin/index")
44 public class PerformLoginAction extends AbstractCoserAction implements SessionAware {
45
46 private static final long serialVersionUID = 1L;
47
48
49 private static final Log log = LogFactory.getLog(PerformLoginAction.class);
50
51 protected String login;
52
53 protected String password;
54
55 protected transient Map<String, Object> session;
56
57 public void setLogin(String login) {
58 this.login = login;
59 }
60
61 public void setPassword(String password) {
62 this.password = password;
63 }
64
65 @Override
66 public void setSession(Map<String, Object> session) {
67 this.session = session;
68 }
69
70 @Override
71 public String execute() throws Exception {
72 CoserWebConfig config = getService().getConfig();
73 String result;
74 if (config.getAdminLogin().equals(login) && equalsSHA1Password(config, password)) {
75 if (log.isInfoEnabled()) {
76 log.info("Successfull login: "+login);
77 }
78 session.put(LoginInterceptor.SESSION_PARAMETER_LOGIN, login);
79
80 result = SUCCESS;
81 } else {
82 addActionError("Invalid login/password");
83 result = INPUT;
84 }
85 return result;
86 }
87
88
89
90
91
92
93
94
95
96
97 protected boolean equalsSHA1Password(CoserWebConfig config, String password) {
98
99
100 String configSha1Password = config.getAdminPassword();
101 String sha1Password = StringUtil.encodeSHA1(password);
102 boolean result = configSha1Password.equals(sha1Password);
103
104
105 if (!result) {
106 configSha1Password = StringUtil.encodeSHA1(configSha1Password);
107 result = configSha1Password.equals(sha1Password);
108 }
109
110 return result;
111 }
112
113 }