package odera.projects.appointmentssoftware.services; import java.util.Collection; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; import odera.projects.appointmentssoftware.models.User; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; import com.fasterxml.jackson.annotation.JsonIgnore; public class UserDetailsImpl implements UserDetails { private static final long serialVersionUID = 1L; private final Long id; private final String username; private final String email; @JsonIgnore private final String password; public UserDetailsImpl(Long id, String username, String email, String password) { this.id = id; this.username = username; this.email = email; this.password = password; } public static UserDetailsImpl build(User user) { return new UserDetailsImpl( user.getUserId(), user.getUsername(), user.getEmail(), user.getPassword()); } public Long getId() { return id; } public String getEmail() { return email; } @Override public Collection<? extends GrantedAuthority> getAuthorities() { return null; } @Override public String getPassword() { return password; } @Override public String getUsername() { return username; } @Override public boolean isAccountNonExpired() { return true; } @Override public boolean isAccountNonLocked() { return true; } @Override public boolean isCredentialsNonExpired() { return true; } @Override public boolean isEnabled() { return true; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; UserDetailsImpl user = (UserDetailsImpl) o; return Objects.equals(id, user.id); } }