package action;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import org.springframework.beans.factory.annotation.Autowired;
import model.User;
import service.UserService;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport {
/**
* 注册
*/
private static final long serialVersionUID = 1L;
private String username;
private String password;
private String old;
private String repeat;
private String nickname;
private String email;
@Autowired
private UserService service;
private User user;
public User getUser() { return user; }
private List<User> users;
public List<User> getUsers() { return users; }
public void setUsername(String username){ this.username = username; }
public void setPassword(String password){ this.password = password; }
public void setOld(String old) { this.old = old; }
public void setRepeat(String repeat) { this.repeat = repeat; }
public void setNickname(String nickname){ this.nickname = nickname; }
public void setEmail(String email) { this.email = email; }
private void sessionSetUser(User user) {
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession(false);
session.setAttribute("user", user);
}
private User sessionGetUser() {
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession(false);
return (User) session.getAttribute("user");
}
private void setInfo(String info) {
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession(false);
session.setAttribute("Info", info);
}
public String login() {
try {
System.out.println("log in....");
if ((user = service.findUser(username)) == null
|| !service.checkUser(user, password))
this.setInfo("Invalid username or password.");
else {
this.sessionSetUser(user);
if (user.getPrivilege().equals("admin"))
return "power";
else
return "home";
}
} catch (Exception e) {
System.out.println(e);
}
return "login";
}
public String register() {
System.out.println("Register...");
try {
if (username.length()<3)
this.setInfo("The length of username should be no less than 3");
else if (username.length()>10)
this.setInfo("The length of username should be no large than 10");
else if (!repeat.equals(password))
this.setInfo("Repeat password must be the same as password.");
else if (service.findUser(username) != null)
this.setInfo("username is exist");
else {
user = new User();
user.setUsername(username);
user.setPassword(password);
user.setNickname(nickname);
user.setEmail(email);
user.setPrivilege("user");
service.addUser(user);
this.sessionSetUser(user);
return "home";
}
} catch (Exception e) {
System.out.println(e);
}
return "register";
}
public String modifyProfile() {
System.out.println("Modify Profile...");
try {
user = this.sessionGetUser();
user.setNickname(nickname);
user.setEmail(email);
service.setUser(user);
this.sessionSetUser(user);
return user.getPrivilege().equals("admin")?"power":"home";
} catch (Exception e) {
System.out.println(e);
return "modify";
}
}
public String modifyPassword() {
System.out.println("Modify Password...");
try {
user = this.sessionGetUser();
if (!old.equals(user.getPassword()))
this.setInfo("Invalid old password.");
else if (!repeat.equals(password))
this.setInfo("Repeat password must be the same as password.");
else {
user.setPassword(password);
service.setUser(user);
this.sessionSetUser(user);
return user.getPrivilege().equals("admin")?"power":"home";
}
} catch (Exception e) {
System.out.println(e);
}
return "modify";
}
public String logout() {
System.out.println("Log out...");
this.sessionSetUser(null);
return "login";
}
public String delete() {
System.out.println("Delete User...");
try {
user = service.findUser(username);
service.deleteUser(user);
} catch (Exception e) {
System.out.println(e);
}
return "power";
}
public String modify() {
System.out.println("Modify User...");
try {
user = service.findUser(username);
user.setNickname(nickname);
user.setEmail(email);
service.setUser(user);
} catch (Exception e) {
System.out.println(e);
}
return "power";
}
public String set() {
try {
System.out.println(username);
user = service.findUser(username);
} catch (Exception e) {
System.out.println(e);
}
return "power";
}
public String showAll() {
System.out.println("show all users...");
try {
users = service.showAll();
} catch (Exception e) {
System.out.println(e);
}
return SUCCESS;
}
}