package com.takensoft.common.oauth.vo;

import lombok.RequiredArgsConstructor;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.oauth2.core.user.OAuth2User;

import java.util.Collection;
import java.util.Collections;
import java.util.Map;

/**
 * @author takensoft
 * @since 2025.05.22
 * @modification
 *     since    |    author    | description
 *  2025.05.22  |  takensoft   | 최초 등록
 *
 * OAuth2 사용자 커스텀 클래스
 */
@RequiredArgsConstructor
public class CustomOAuth2UserVO implements OAuth2User {

    private final OAuth2UserInfoVO oAuth2UserInfoVO;
    private final Map<String, Object> attributes;

    @Override
    public Map<String, Object> getAttributes() {
        return attributes;
    }

    @Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
        return Collections.emptyList(); // 권한 설정이 필요한 경우 여기서 처리
    }

    @Override
    public String getName() {
        return oAuth2UserInfoVO.getName();
    }

    public String getId() {
        return oAuth2UserInfoVO.getId();
    }

    public String getEmail() {
        return oAuth2UserInfoVO.getEmail();
    }

    public String getImageUrl() {
        return oAuth2UserInfoVO.getImageUrl();
    }

    public String getProvider() {
        return oAuth2UserInfoVO.getProvider();
    }
}