Internet-Technologien/src/main/java/de/hsel/itech/jsf/UserBean.java

89 lines
2.5 KiB
Java

package de.hsel.itech.jsf;
import de.hsel.itech.db.Database;
import de.hsel.itech.db.pojo.User;
import lombok.Getter;
import lombok.Setter;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import java.io.Serializable;
@ManagedBean
@SessionScoped
public class UserBean implements Serializable {
@Getter
@Setter
private User user = new User();
@Getter
@Setter
@Size(min = 1)
private String username;
@Getter
@Setter
@Pattern(regexp = "(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])")
private String email;
@Getter
@Setter
private String password;
@Getter
private boolean loggedIn = false;
@Getter
private boolean error = false;
public String login() {
Database db = Database.getInstance();
User user = db.user().get(username);
if (user == null) {
error = true;
return "";
}
if (db.user().verify(user, password)) {
loggedIn = true;
setUser(user);
password = null;
username = null;
return "index.xhtml";
}
error = true;
return "";
}
public String logout() {
user = null;
loggedIn = false;
return "index.html";
}
public String register() {
Database db = Database.getInstance();
if(username != null && email != null && password != null) {
if(db.user().get(username) != null) {
FacesContext.getCurrentInstance().addMessage("register:username", new FacesMessage("Dieser Nutzername ist bereits vergeben"));
return "register.xhtml";
}
User user = new User(email, username, password, (short) 1);
db.user().insert(user);
email = null;
username = null;
password = null;
return "login.xhtml";
}
return "";
}
}