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

import cn.nianxx.thhotel.platform.security.common.dto.AuthenticatedUserContext;
import cn.nianxx.thhotel.platform.security.service.CurrentUserContextService;
import java.util.Optional;
import org.springframework.stereotype.Service;

/**
 * 当前用户上下文服务实现。第一版仅读取过滤器注入的 ThreadLocal 上下文。
 */
@Service
public class CurrentUserContextServiceImpl implements CurrentUserContextService {

    /**
     * 获取当前请求用户上下文。未登录或 token 无效时返回空。
     */
    @Override
    public Optional<AuthenticatedUserContext> currentUser() {
        return Optional.ofNullable(CurrentUserContextHolder.get());
    }

    /**
     * 判断当前请求用户是否拥有指定权限码。
     */
    @Override
    public boolean hasPermission(String permissionCode) {
        if (permissionCode == null || permissionCode.isBlank()) {
            return false;
        }
        return currentUser()
                .map(context -> context.permissionCodes().contains(permissionCode))
                .orElse(false);
    }
}
