package be.mentoringsystems.merke.model.db; import be.mentoringsystems.merke.model.dto.View; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonView; import java.io.Serializable; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.UUID; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Transient; import org.hibernate.annotations.Type; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; /** * * @author anthonyarents */ @Entity public class Login implements UserDetails, Serializable { private static final long serialVersionUID = -5435867605493271271L; private UUID id; private String firstname; private String lastname; private String email; private String password; private Integer group = 2; private String username; private boolean deleted = false; private boolean active = false; private LocalDateTime createdOn = LocalDateTime.now(); private List authorities = new ArrayList(); @JsonIgnore @Column @Type(type = "yes_no") public boolean isDeleted() { return deleted; } public void setDeleted(boolean deleted) { this.deleted = deleted; } @JsonView(View.Public.class) @Id @Column @GeneratedValue( generator = "uuid" ) @Type(type = "uuid-char") public UUID getId() { return id; } public void setId(final UUID id) { this.id = id; } @JsonView(View.Login.class) @Column public LocalDateTime getCreatedOn() { return createdOn; } public void setCreatedOn(final LocalDateTime createdOn) { this.createdOn = createdOn; } @JsonView(View.Login.class) @Column public String getEmail() { return email; } public void setEmail(final String email) { this.email = email; } @JsonView(View.Public.class) @Column public String getFirstname() { return firstname; } public void setFirstname(final String firstname) { this.firstname = firstname; } @JsonView(View.Login.class) @Column(name="`group`", nullable = false) public Integer getGroup() { return group; } public void setGroup(Integer group) { this.group = group; } @JsonView(View.Public.class) @Column public String getLastname() { return lastname; } public void setLastname(final String lastname) { this.lastname = lastname; } @JsonView(View.Login.class) @Column @Override public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } @JsonIgnore @Column(nullable = false) @Override public String getPassword() { return password; } public void setPassword(final String password) { this.password = password; } @JsonView(View.Login.class) @Column @Type(type = "yes_no") public boolean isActive() { return active; } public void setActive(boolean active) { this.active = active; } @JsonIgnore @Override @Transient public Collection getAuthorities() { return authorities; } public void setAuthorities(List authorities) { this.authorities = authorities; } @JsonIgnore @Override @Transient public boolean isAccountNonExpired() { return true; } @JsonIgnore @Override @Transient public boolean isAccountNonLocked() { return true; } @JsonIgnore @Override @Transient public boolean isCredentialsNonExpired() { return true; } @JsonIgnore @Override @Transient public boolean isEnabled() { return this.isActive(); } }