package finki.it.phoneluxbackend.entities; import finki.it.phoneluxbackend.data.UserRole; import lombok.*; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; import javax.persistence.*; import java.util.Collection; import java.util.Collections; @Getter @Setter @EqualsAndHashCode @NoArgsConstructor @AllArgsConstructor @Entity(name = "users") public class User implements UserDetails { @SequenceGenerator( name = "user_sequence", sequenceName = "user_sequence", allocationSize = 1 ) @Id @GeneratedValue( strategy = GenerationType.SEQUENCE, generator = "user_sequence" ) private Long id; private String firstName; private String lastName; private String email; private String password; @Enumerated(EnumType.STRING) private UserRole userRole; private Boolean locked = false; private Boolean enabled = false; public User(String firstName, String lastName, String email, String password, UserRole userRole) { this.firstName = firstName; this.lastName = lastName; this.email = email; this.password = password; this.userRole = userRole; } @Override public Collection getAuthorities() { SimpleGrantedAuthority authority = new SimpleGrantedAuthority(userRole.name()); return Collections.singletonList(authority); } @Override public String getPassword() { return password; } @Override public String getUsername() { return email; } @Override public boolean isAccountNonExpired() { return true; } @Override public boolean isAccountNonLocked() { return !locked; } @Override public boolean isCredentialsNonExpired() { return true; } @Override public boolean isEnabled() { return enabled; } }