1
2
3
4
5
6 package org.tailormap.api.security;
7
8 import java.time.ZoneId;
9 import java.time.ZonedDateTime;
10 import java.util.Collection;
11 import java.util.HashSet;
12 import java.util.List;
13 import org.apache.commons.lang3.StringUtils;
14 import org.springframework.security.core.GrantedAuthority;
15 import org.springframework.security.core.authority.SimpleGrantedAuthority;
16 import org.springframework.security.core.userdetails.UserDetails;
17 import org.tailormap.api.persistence.Group;
18 import org.tailormap.api.persistence.User;
19 import org.tailormap.api.persistence.json.AdminAdditionalProperty;
20
21 public class TailormapUserDetails implements UserDetails {
22
23 private final User user;
24
25 public TailormapUserDetails(User user) {
26 this.user = user;
27 }
28
29 @Override
30 public Collection<? extends GrantedAuthority> getAuthorities() {
31 Collection<GrantedAuthority> authorities = new HashSet<>();
32 user.getGroups().stream()
33 .map(Group::getName)
34 .map(SimpleGrantedAuthority::new)
35 .forEach(authorities::add);
36
37 user.getGroups().stream()
38 .map(Group::getAliasForGroup)
39 .filter(StringUtils::isNotBlank)
40 .map(SimpleGrantedAuthority::new)
41 .forEach(authorities::add);
42 return authorities;
43 }
44
45 @Override
46 public String getPassword() {
47 return user.getPassword();
48 }
49
50 @Override
51 public String getUsername() {
52 return user.getUsername();
53 }
54
55 @Override
56 public boolean isAccountNonExpired() {
57 return user.getValidUntil() == null || user.getValidUntil().isAfter(ZonedDateTime.now(ZoneId.systemDefault()));
58 }
59
60 @Override
61 public boolean isEnabled() {
62 return user.isEnabled();
63 }
64
65 public List<AdminAdditionalProperty> getAdditionalProperties() {
66 return user.getAdditionalProperties();
67 }
68 }