package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users; import jakarta.persistence.*; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.enumerations.Role; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; import java.time.LocalDateTime; import java.util.Collection; import java.util.List; @Entity @Data @NoArgsConstructor @AllArgsConstructor @Inheritance(strategy = InheritanceType.JOINED) @Table(name = "users") public abstract class User implements UserDetails { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; protected String email; protected String password; @Enumerated(EnumType.STRING) protected Role role; @Column(name = "has_access") protected boolean hasAccess; protected LocalDateTime registeredOn; @Override public Collection getAuthorities() { return List.of(new SimpleGrantedAuthority(role.name())); } @Override public String getUsername() { return this.email; } public abstract String getName(); @Override public boolean isAccountNonExpired() { return true; } @Override public boolean isAccountNonLocked() { return true; } @Override public boolean isCredentialsNonExpired() { return true; } @Override public boolean isEnabled() { return true; } }