package web.multitask.trismegistoservices.model; import javax.persistence.*; import lombok.*; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; import java.util.Collection; import java.util.List; @Data @NoArgsConstructor @Getter @Setter @Entity(name = "users") public class User implements UserDetails { @Id @GeneratedValue(strategy = javax.persistence.GenerationType.IDENTITY) private Long id; @NonNull private String username; @NonNull private String password; @ManyToMany(fetch = javax.persistence.FetchType.EAGER, cascade = CascadeType.ALL) @JoinTable(name = "user_roles", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name="role_id")) private java.util.Set<Role> roles = new java.util.HashSet<>(); @Override public Collection<? extends GrantedAuthority> getAuthorities() { List<SimpleGrantedAuthority> authorities = new java.util.ArrayList<>(); for (Role role : roles) { authorities.add(new SimpleGrantedAuthority(role.getDescripcion())); } return authorities; } @Override public boolean isAccountNonExpired() { return true; } @Override public boolean isAccountNonLocked() { return true; } @Override public boolean isCredentialsNonExpired() { return true; } @Override public boolean isEnabled() { return true; } }