package cn.nianxx.thhotel.platform.security.service.impl;

import cn.nianxx.thhotel.platform.security.common.dto.AuthenticatedUserContext;

/**
 * 请求线程内当前用户上下文。过滤器负责设置和清理。
 */
public final class CurrentUserContextHolder {

    private static final ThreadLocal<AuthenticatedUserContext> CURRENT_USER = new ThreadLocal<>();

    private CurrentUserContextHolder() {
    }

    /**
     * 设置当前请求用户上下文。
     */
    public static void set(AuthenticatedUserContext context) {
        CURRENT_USER.set(context);
    }

    /**
     * 获取当前请求用户上下文。
     */
    public static AuthenticatedUserContext get() {
        return CURRENT_USER.get();
    }

    /**
     * 清理当前请求用户上下文，避免线程复用导致串号。
     */
    public static void clear() {
        CURRENT_USER.remove();
    }
}
