package org.qinan.safetyeval.infrastructure.adapter.auth;

import com.jjb.saas.framework.auth.model.SSOUser;
import com.jjb.saas.framework.auth.utils.AuthContext;

/**
 * AuthContext 全局适配：统一从 {@link AuthContext#getCurrentUser()} 解析用户信息。
 * <p>
 * 业务代码通过静态方法获取用户上下文，避免 SSOUser 字段调整导致大面积改动。
 * </p>
 */
public final class AuthUserContextAdapter {

    private AuthUserContextAdapter() {
    }

    /**
     * 获取当前登录用户；未登录返回 null。
     */
    public static AuthUserInfo getCurrentUser() {
        return AuthUserInfo.from(AuthContext.getCurrentUser());
    }

    /**
     * 获取原始用户信息
     * @return
     */
    public static SSOUser getCurrentUserOri(){
        return AuthContext.getCurrentUser();
    }

    public static Long getCurrentUserId() {
        AuthUserInfo user = getCurrentUser();
        return user == null ? null : user.getUserId();
    }

    public static String getCurrentUserName() {
        AuthUserInfo user = getCurrentUser();
        return user == null ? null : user.getUserName();
    }

    public static Long getCurrentTenantId() {
        AuthUserInfo user = getCurrentUser();
        return user == null ? null : user.getTenantId();
    }

    public static Long getCurrentOrgId() {
        AuthUserInfo user = getCurrentUser();
        return user == null ? null : user.getOrgId();
    }

    public static boolean isLoggedIn() {
        return getCurrentUser() != null;
    }

    /**
     * 透传原始 SSOUser，仅在适配类内部扩展字段时使用。
     */
    static SSOUser getRawUser() {
        return AuthContext.getCurrentUser();
    }
}
