1 package pk.lucidxpo.ynami.spring.security; 2 3 import com.fasterxml.jackson.annotation.JsonIgnore; 4 import lombok.AllArgsConstructor; 5 import lombok.EqualsAndHashCode; 6 import lombok.Getter; 7 import org.springframework.security.core.GrantedAuthority; 8 import org.springframework.security.core.authority.SimpleGrantedAuthority; 9 import org.springframework.security.core.userdetails.UserDetails; 10 import pk.lucidxpo.ynami.persistence.model.security.User; 11 12 import java.util.Collection; 13 import java.util.List; 14 15 import static java.util.stream.Collectors.toList; 16 17 @Getter 18 @AllArgsConstructor 19 @EqualsAndHashCode 20 public class UserPrincipal implements UserDetails { 21 private String id; 22 23 private String name; 24 25 private String username; 26 27 @JsonIgnore 28 private String email; 29 30 @JsonIgnore 31 private String password; 32 33 private Collection<? extends GrantedAuthority> authorities; 34 35 public static UserPrincipal create(final User user) { 36 final List<GrantedAuthority> authorities = user.getRoles() 37 .stream() 38 .map(role -> new SimpleGrantedAuthority(role.getName().name())) 39 .collect(toList()); 40 return new UserPrincipal( 41 user.getId(), 42 user.getName(), 43 user.getUsername(), 44 user.getEmail(), 45 user.getPassword(), 46 authorities 47 ); 48 } 49 50 @Override 51 public boolean isAccountNonExpired() { 52 return true; 53 } 54 55 @Override 56 public boolean isAccountNonLocked() { 57 return true; 58 } 59 60 @Override 61 public boolean isCredentialsNonExpired() { 62 return true; 63 } 64 65 @Override 66 public boolean isEnabled() { 67 return true; 68 } 69 }