package com.unicorn.hgzero.user.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

/**
 * 로그인 응답 DTO
 */
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class LoginResponse {

    /**
     * Access Token
     */
    private String accessToken;

    /**
     * Refresh Token
     */
    private String refreshToken;

    /**
     * 토큰 타입 (Bearer)
     */
    @Builder.Default
    private String tokenType = "Bearer";

    /**
     * Access Token 유효 기간 (초)
     */
    private Long accessTokenValidity;

    /**
     * Refresh Token 유효 기간 (초)
     */
    private Long refreshTokenValidity;

    /**
     * 사용자 정보
     */
    private UserInfo user;

    /**
     * 사용자 정보 내부 클래스
     */
    @Getter
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class UserInfo {
        /**
         * 사용자 ID
         */
        private String userId;

        /**
         * 사용자 이름
         */
        private String username;

        /**
         * 이메일
         */
        private String email;

        /**
         * 권한
         */
        private String authority;
    }
}
