/* * Copyright (c) 2015 Felix Husse under MIT License * see LICENSE file */ package de.fatalix.bookery.bl.model; import de.fatalix.bookery.bl.EntityIntf; import de.fatalix.bookery.bl.authentication.AppUserAuthenticationInfo; import de.fatalix.bookery.bl.authentication.AppUserAuthorizationInfo; import java.io.Serializable; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import org.apache.shiro.authc.AuthenticationInfo; import org.apache.shiro.authz.AuthorizationInfo; import org.apache.shiro.crypto.hash.Sha512Hash; /** * * @author felix.husse */ @Entity @NamedQueries({ @NamedQuery(name=AppUser.FIND_BY_USERNAME, query="SELECT s FROM AppUser s WHERE s.username =:username"), }) public class AppUser implements EntityIntf, Serializable{ public static final String FIND_BY_USERNAME = "AppUser.findByUserName"; @Id @GeneratedValue(strategy=GenerationType.AUTO) private int id; private String username; private String password; private String eMail; private String fullname; private String roles; private String salt; private String currentLogin; private String lastLogin; @Override public Integer getId() { return id; } @Override public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public String geteMail() { return eMail; } public void seteMail(String eMail) { this.eMail = eMail; } public String getFullname() { return fullname; } public void setFullname(String fullname) { this.fullname = fullname; } public String getRoles() { return roles; } public void setRoles(String roles) { this.roles = roles; } public String getSalt() { return salt; } public void setSalt(String salt) { this.salt = salt; } public String getLastLogin() { return lastLogin; } public void setLastLogin(String lastLogin) { this.lastLogin = lastLogin; } public String getCurrentLogin() { return currentLogin; } public void setCurrentLogin(String currentLogin) { this.currentLogin = currentLogin; } /** * Sets the password in human readable format. The password will internally * be hashed. * * @param password */ public void setHumanReadablePassword(String password) { this.password = new Sha512Hash(password, AppUserAuthenticationInfo.PW_SALT) .toHex(); } /* * This getter shouldn't exist but it's here because apache commons bean * utils will fail otherwise. */ public String getHumanReadablePassword() { return null; } public void setPassword(String password) { if (password.length() != 128) { setHumanReadablePassword(password); } else { this.password = password; } } public AuthenticationInfo getAsAuthenticationInfo() { return new AppUserAuthenticationInfo(this); } public AuthorizationInfo getAsAuthorizationInfo() { return new AppUserAuthorizationInfo(this); } }