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; FacesContext.getCurrentInstance().getExternalContext().invalidateSession(); return "/index.xhtml?faces-redirect=true"; } 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 ""; } }