package hamaster.gradesign.jsf.bean;
import hamaster.gradesign.dao.UserDAO;
import hamaster.gradesign.entity.User;
import hamaster.gradesign.jsf.validator.StringValidator;
import java.io.Serializable;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.ValidatorException;
@SessionScoped
@ManagedBean(name = "viewUserBean")
public class ViewUserBean implements Serializable {
private static final long serialVersionUID = -5974556005970370000L;
@ManagedProperty("#{userDAO}")
private transient UserDAO userDAO;
private String password;
private String email;
private User user;
public ViewUserBean() {
}
public String login() {
user = userDAO.login(getEmail(), getPassword());
if (user == null) {
return "failure";
}
return "success";
}
public void validatePassword(FacesContext context, UIComponent component, Object value) throws ValidatorException {
if (value == null || String.valueOf(value).length() < 4) {
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "密码长度过短", "密码长度过短");
throw new ValidatorException(message);
}
}
public void validateEmail(FacesContext context, UIComponent component, Object value) throws ValidatorException {
if (value == null) {
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "电子邮件地址不能为空", "电子邮件地址不能为空");
throw new ValidatorException(message);
}
String email = value.toString();
if (!email.matches(StringValidator.EMAIL_REGEX)) {
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "电子邮件地址格式错误", "电子邮件地址格式错误");
throw new ValidatorException(message);
}
}
public UserDAO getUserDAO() {
return userDAO;
}
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}