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 }