View Javadoc
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  }