package com.nbport.zgwl.auth;

import org.springframework.stereotype.Component;

import java.util.EnumSet;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/**
 * 本地模拟 AuthManager。
 *
 * 目的不是还原正式权限中心，而是把调用方式先固定住：
 * authManager.isUserCanAccessSys(userId, SysEnum.BUSINESS/MANAGE)
 *
 * 后续复制到正式环境时，保留方法签名，替换内部实现即可。
 */
@Component
public class AuthManager {

    /**
     * 写死几套本地用户可访问系统。
     *
     * 约定：
     * 1L -> 超管，可同时访问 manage / business
     * 2L -> manage 侧管理员
     * 3L -> business 侧业务管理员
     * 4L -> business 侧普通用户
     */
    private static final Map<Long, Set<SysEnum>> USER_SYS_ACCESS = new HashMap<>();

    static {
        USER_SYS_ACCESS.put(1L, EnumSet.of(SysEnum.MANAGE, SysEnum.BUSINESS));
        USER_SYS_ACCESS.put(2L, EnumSet.of(SysEnum.MANAGE));
        USER_SYS_ACCESS.put(3L, EnumSet.of(SysEnum.BUSINESS));
        USER_SYS_ACCESS.put(4L, EnumSet.of(SysEnum.BUSINESS));
    }

    public boolean isUserCanAccessSys(Long userId, SysEnum sysEnum) {
        if (userId == null || sysEnum == null) {
            return false;
        }
        Set<SysEnum> accessSet = USER_SYS_ACCESS.get(userId);
        return accessSet != null && accessSet.contains(sysEnum);
    }
}
