package com.clouck.model; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.List; import org.springframework.data.annotation.TypeAlias; import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; @TypeAlias(value = "user") @Document(collection = "user") @SuppressWarnings("serial") public class User extends AbstractModel implements UserDetails { private String email; private String password; private String fullName; private List<String> accountIds = new ArrayList<>(); private Collection<Role> roles = new HashSet<>(); public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getFullName() { return fullName; } public void setFullName(String fullName) { this.fullName = fullName; } public List<String> getAccountIds() { return accountIds; } public void setAccountIds(List<String> accountIds) { this.accountIds = accountIds; } public Collection<Role> getRoles() { return roles; } public void setRoles(Collection<Role> roles) { this.roles = roles; } @Override public Collection<? extends GrantedAuthority> getAuthorities() { Collection<SimpleGrantedAuthority> result = new HashSet<>(); for (Role role : roles) { result.add(new SimpleGrantedAuthority(role.name())); } return result; } @Override public String getUsername() { return email; } @Override public boolean isAccountNonExpired() { return true; } @Override public boolean isAccountNonLocked() { return true; } @Override public boolean isCredentialsNonExpired() { return true; } @Override public boolean isEnabled() { return true; } }