package com.microservice.api.models;
import java.sql.Date;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import org.hibernate.annotations.Generated;
import org.hibernate.annotations.GenerationTime;
import org.hibernate.annotations.Type;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.jpa.repository.Temporal;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
@Entity
@Table(name = "user")
public class ApiUserModel implements UserDetails
{
static final long serialVersionUID = 1L;
private static final Logger logger = LoggerFactory.getLogger(ApiUserModel.class);
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ID", nullable = false)
private int id;
@Column(name = "Name", length = 127)
private String last_name;
@Column(name = "Vorname", length = 127)
private String first_name;
@NotNull
@Column(name = "login", length = 63, nullable = false, unique = true)
private String login;
@NotNull
@Column(name = "passwort", length = 255, nullable = false)
private String password;
@Column(name = "firma_id", length = 11)
private int company_id;
@Column(name = "lang", length = 2, nullable = false)
private int lang;
@Column(name = "session", length = 63)
private String activationCode;
@Column(name = "auphone", length = 30)
private String phone;
@Column(name = "aufax", length = 30)
private String fax;
@NotNull
@Column(name = "status", length = 1, nullable = false)
private int status;
@NotNull
@Generated(value=GenerationTime.ALWAYS)
@Column(name = "lastchange", columnDefinition = "DATETIME default '1900-01-01 00:00:00'", nullable = false)
private LocalDate lastchanged;
private String username;
@Override
public Collection<? extends GrantedAuthority> getAuthorities()
{
List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
return authorities;
}
@Override
public String getUsername()
{
logger.info("Username is: " + this.login);
return this.login;
}
@Override
public boolean isAccountNonExpired()
{
return true;
}
@Override
public boolean isAccountNonLocked()
{
logger.debug("isAccountNonLocked ... .. .");
if (this.status == 1)
{
return true;
}
else
{
return false;
}
}
@Override
public boolean isCredentialsNonExpired()
{
return true;
}
@Override
public boolean isEnabled()
{
logger.debug("isEnabled ... .. .");
if (this.status != 1)
{
return false;
}
else
{
return true;
}
}
public long getId() {
return id;
}
public String getLast_name() {
return last_name;
}
public void setLast_name(String last_name) {
this.last_name = last_name;
}
public String getFirst_name() {
return first_name;
}
public void setFirst_name(String first_name) {
this.first_name = first_name;
}
public String getLogin() {
return login;
}
public void setLogin(String login)
{
this.login = login;
this.username = login;
}
@Override
public String getPassword()
{
String passwordA = password.replaceFirst("2y", "2a");
return passwordA;
}
public void setPassword(String password) {
this.password = password;
}
public int getCompany_id() {
return company_id;
}
public void setCompany_id(int company_id) {
this.company_id = company_id;
}
public int getLang() {
return lang;
}
public void setLang(int lang) {
this.lang = lang;
}
public String getActivationCode() {
return activationCode;
}
public void setActivationCode(String activationCode) {
this.activationCode = activationCode;
}
public String getPhone()
{
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getFax() {
return fax;
}
public void setFax(String fax) {
this.fax = fax;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public LocalDate getLastchanged() {
return lastchanged;
}
public void setLastchanged(LocalDate lastchanged) {
this.lastchanged = lastchanged;
}
public void setUsername(String username)
{
this.username = username;
this.login = username;
}
}