package gov.samhsa.consent2share.domain.account;
import java.io.Serializable;
import java.util.Calendar;
import java.util.Set;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.SpringSecurityCoreVersion;
public class Users implements Serializable,
org.springframework.security.core.userdetails.UserDetails{
private static final long serialVersionUID = SpringSecurityCoreVersion.SERIAL_VERSION_UID;
private int failedLoginAttempts;
private String password;
private Calendar lockoutTime;
final Logger logger = LoggerFactory.getLogger(this.getClass());
private final String username;
private final Set<GrantedAuthority> authorities;
private final boolean accountNonExpired;
private boolean accountNonLocked;
private final boolean credentialsNonExpired;
private final boolean enabled;
public Users(String username, String password, boolean enabled, boolean accountNonExpired,
boolean credentialsNonExpired, Set<GrantedAuthority> authorities) {
this(0,username, password, enabled, enabled, true, credentialsNonExpired, authorities,null);
}
public Users(String username, String password, Set<GrantedAuthority> authorities) {
this(0,username, password, true, true, true, true, authorities,null);
}
public Users(int failedLoginAttempts,String username, String password, boolean enabled, boolean accountNonExpired,
boolean credentialsNonExpired, Set<GrantedAuthority> authorities) {
this(failedLoginAttempts,username, password, enabled, accountNonExpired, true, credentialsNonExpired, authorities,null);
}
public Users(int failedLoginAttempts,String username, String password, boolean enabled, boolean accountNonExpired,
boolean credentialsNonExpired, Set<GrantedAuthority> authorities,Calendar cal) {
this(failedLoginAttempts,username, password, enabled, accountNonExpired, true, credentialsNonExpired, authorities, cal);
}
public Users(int failedLoginAttempts,String username, String password, boolean enabled, boolean accountNonExpired, boolean accountNonLocked,
boolean credentialsNonExpired, Set<GrantedAuthority> authorities,Calendar cal) {
if (((username == null) || "".equals(username)) || (password == null)) {
throw new IllegalArgumentException("Cannot pass null or empty values to constructor");
}
this.failedLoginAttempts=failedLoginAttempts;
this.username = username;
this.password = password;
this.enabled = enabled;
this.accountNonExpired = accountNonExpired;
this.accountNonLocked = accountNonLocked;
this.credentialsNonExpired = credentialsNonExpired;
this.authorities = authorities;
this.lockoutTime=cal;
}
public void increaseFailedLoginAttempts(){
failedLoginAttempts++;
}
public void setFailedLoginAttemptsToZero(){
failedLoginAttempts=0;
}
public int getFailedLoginAttempts() {
return failedLoginAttempts;
}
public void setFailedLoginAttempts(int failedLoginAttempts) {
this.failedLoginAttempts = failedLoginAttempts;
}
@Override
public Set<GrantedAuthority> getAuthorities() {
return this.authorities;
}
@Override
public String getPassword() {
return this.password;
}
@Override
public String getUsername() {
return this.username;
}
@Override
public boolean isAccountNonExpired() {
return this.accountNonExpired;
}
@Override
public boolean isCredentialsNonExpired() {
return this.credentialsNonExpired;
}
@Override
public boolean isEnabled() {
return this.enabled;
}
public Calendar getLockoutTime() {
return lockoutTime;
}
public void setLockoutTime(Calendar lockoutTime) {
this.lockoutTime = lockoutTime;
}
public void setAccountNonLocked(boolean isAccountNonLocked){
this.accountNonLocked = isAccountNonLocked;
}
@Override
public boolean isAccountNonLocked() {
return accountNonLocked;
}
@Override
public int hashCode() {
return username.hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj instanceof Users) {
return username.equals(((Users) obj).username);
}
return false;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(super.toString()).append(": ");
sb.append("Username: ").append(this.username).append("; ");
sb.append("Password: [PROTECTED]; ");
sb.append("Enabled: ").append(this.enabled).append("; ");
sb.append("AccountNonExpired: ").append(this.accountNonExpired).append("; ");
sb.append("credentialsNonExpired: ").append(this.credentialsNonExpired).append("; ");
return sb.toString();
}
}