97 lines
2.7 KiB
Java
97 lines
2.7 KiB
Java
package com.demo.action;
|
|
|
|
import com.opensymphony.xwork2.ActionSupport;
|
|
import org.apache.struts2.interceptor.SessionAware;
|
|
|
|
import java.time.LocalDateTime;
|
|
import java.time.format.DateTimeFormatter;
|
|
import java.util.Map;
|
|
|
|
public class LoginAction extends ActionSupport implements SessionAware {
|
|
|
|
public static final String SESSION_USER = "demoUser";
|
|
public static final String SESSION_ROLE = "demoRole";
|
|
public static final String SESSION_LOGIN_TIME = "demoLoginTime";
|
|
|
|
private static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
|
private Map<String, Object> session;
|
|
private String username;
|
|
private String password;
|
|
private String displayName;
|
|
private String loginTime;
|
|
|
|
@Override
|
|
public String execute() {
|
|
username = normalize(username);
|
|
password = normalize(password);
|
|
|
|
if (!hasSubmitted()) {
|
|
return INPUT;
|
|
}
|
|
|
|
if ("admin".equals(username) && "123456".equals(password)) {
|
|
displayName = "ops-admin";
|
|
loginTime = LocalDateTime.now().format(TIME_FORMATTER);
|
|
session.put(SESSION_USER, displayName);
|
|
session.put(SESSION_ROLE, "admin");
|
|
session.put(SESSION_LOGIN_TIME, loginTime);
|
|
return SUCCESS;
|
|
}
|
|
|
|
addActionError("演示账号或密码不正确,请使用 admin / 123456。/ Invalid demo credentials. Use admin / 123456.");
|
|
return INPUT;
|
|
}
|
|
|
|
@Override
|
|
public void validate() {
|
|
if (!hasSubmitted()) {
|
|
return;
|
|
}
|
|
if (username == null || username.length() < 3) {
|
|
addFieldError("username", "用户名至少 3 个字符。/ Username must be at least 3 characters.");
|
|
}
|
|
if (password == null || password.length() < 6) {
|
|
addFieldError("password", "密码至少 6 个字符。/ Password must be at least 6 characters.");
|
|
}
|
|
}
|
|
|
|
private boolean hasSubmitted() {
|
|
return (username != null && !username.trim().isEmpty())
|
|
|| (password != null && !password.trim().isEmpty());
|
|
}
|
|
|
|
private String normalize(String value) {
|
|
return value == null ? null : value.trim();
|
|
}
|
|
|
|
public String getUsername() {
|
|
return username;
|
|
}
|
|
|
|
public void setUsername(String username) {
|
|
this.username = username;
|
|
}
|
|
|
|
public String getPassword() {
|
|
return password;
|
|
}
|
|
|
|
public void setPassword(String password) {
|
|
this.password = password;
|
|
}
|
|
|
|
public String getDisplayName() {
|
|
return displayName;
|
|
}
|
|
|
|
public String getLoginTime() {
|
|
return loginTime;
|
|
}
|
|
|
|
@Override
|
|
public void setSession(Map<String, Object> session) {
|
|
this.session = session;
|
|
}
|
|
}
|