Java

CustomUserDetails, CustomUserDetailsService

doopang 2023. 1. 10. 09:02

CustomUserDetails

@Getter
public class CustomUserDetails implements UserDetails {

  private Long userSeq;
  private String userId;
  private String role;

  private Set<GrantedAuthority> authorities;

  public CustomUserDetails(User user) {
    this.userSeq = user.getUserSeq();
    this.userId = user.getUserId();
    this.role = user.getRole();
    setAuthorities(user.getRole());
  }

  @Override
  public Collection<? extends GrantedAuthority> getAuthorities() {
    return this.authorities;
  }

  public void setAuthorities(String role) {
    SimpleGrandtedAuthority auth = new SimpleGrantedAuthority(role);
    Set<GrantedAuthority> authList = new HashSet<>();
    authList.add(auth);
    this.authorities = authList;
  }

  @Override
  public String getPassword() {
    return null;
  }

  @Override
  public String getUsername() {
    return this.userId;
  }

  @Override
  public boolean isAccountNonExpired() {
    return false;
  }

  @Override
  public boolean isAccountNonLocked() {
    return false;
  }

  @Override
  public boolean isCredentialsNonExpired() {
    return false;
  }

  @Override
  public boolean isEnabled() {
    return false;
  }
}

 

CustomUserDetailsService

@RequiredArgsConstructor
@Service
public class CustomUserDetailsService implements UserDetailsService {

  private final UserService userService;

  @Override
  public UserDetails loadUserByUsername(Stirng userId) throws UsernameNotFoundException {
    User user = userService.findByUserId(userId).orElseThrow(CustomUserNotFoundException::new);
    return new CustomUserDetails(user);
  }
}