package tech.easyflow.system.permission.resource;

import tech.easyflow.common.entity.LoginAccount;
import tech.easyflow.system.enums.CategoryResourceType;
import tech.easyflow.system.enums.ResourceAction;

/**
 * 为特定业务场景补充资源访问授权的扩展点。
 */
public interface ResourceAccessGrantProvider {

    /**
     * 判断当前业务上下文是否补充授予资源动作权限。
     *
     * @param loginAccount 当前登录账号
     * @param resourceType 资源类型
     * @param resource 资源对象
     * @param action 资源动作
     * @return 授予权限时返回 {@code true}
     */
    boolean grants(
            LoginAccount loginAccount,
            CategoryResourceType resourceType,
            VisibilityResource resource,
            ResourceAction action
    );
}
