package com.iconplus.smartproc.configuration; import com.iconplus.smartproc.model.projection.UserRoleView; import com.iconplus.smartproc.repository.RolesRepository; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.stereotype.Service; import java.util.List; import java.util.Optional; @Service public class CustomUserDetailsService implements UserDetailsService { private final RolesRepository rolesRepository; public CustomUserDetailsService(RolesRepository rolesRepository) { this.rolesRepository = rolesRepository; } @Override public UserDetails loadUserByUsername(String username) { List authorities = null; Optional userRole = rolesRepository.getUserRoleByUserId(username); if (userRole.isPresent()) { authorities=List.of(new SimpleGrantedAuthority(userRole.get().getRole())); } return new org.springframework.security.core.userdetails.User(username, username, authorities); } }