package com.spring.infra.security.jwt;

import lombok.Getter;
import lombok.RequiredArgsConstructor;

/**
 * JWT 토큰 관련 규칙을 정의하는 열거형입니다.
 * 
 * <p>이 열거형은 JWT 토큰 처리에 필요한 다양한 상수 값들을 정의합니다.</p>
 * 
 * @author mindol
 * @version 1.0
 */
@RequiredArgsConstructor
@Getter
public enum JwtTokenRule {

    /**
     * JWT 토큰 발급 시 사용되는 HTTP 헤더 이름입니다.
     */
    JWT_ISSUE_HEADER("Set-Cookie"),

    /**
     * 액세스 토큰의 접두사입니다.
     */
    ACCESS_PREFIX("accessToken"),

    /**
     * 리프레시 토큰의 접두사입니다.
     */
    REFRESH_PREFIX("refreshToken"),

    /**
     * Bearer 인증 스키마의 접두사입니다.
     */
    BEARER_PREFIX("Bearer "),

    /**
     * JWT 클레임에서 권한 정보를 나타내는 키입니다.
     */
    AUTHORITIES_KEY("auth"),

    /**
     * JWT 클레임에서 사용자ID 정보를 나타내는 키입니다.
     */
    USER_ID("userId"),

    /**
     * JWT 클레임에서 사용자명 정보를 나타내는 키입니다.
     */
    USER_NAME("userName");

    private final String value;

}
