package com.ga.common.auth; import lombok.Builder; import lombok.Getter; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; import java.util.Collection; import java.util.List; /** * 로그인한 사용자를 나타내는 인증 주체(principal). 스프링 시큐리티의 SecurityContext에 저장되어, * 어디서든 "현재 누가 요청 중인지"를 꺼낼 수 있게 한다(예: {@code SecurityUtil.getCurrentUserId()}). * *
UserDetails 구현: 스프링 시큐리티가 인증 주체로 인식하려면 이 인터페이스를 구현해야 한다.
* 이 시스템은 토큰(JWT) 기반이라 비밀번호 비교 등은 쓰지 않으므로, 계정 상태 메서드들은 모두 true를 반환한다.
*/
@Getter
@Builder
public class LoginUser implements UserDetails {
private final Long userId; // 내부 사용자 PK
private final String loginId; // 로그인 아이디
private final String userName; // 사용자 이름(표시용)
private final Long agentId; // 소속 설계사/대리점 ID(정산 권한 범위 판단 등에 사용)
private final List