package com.njcn.rdms.module.project.framework.security.service;

/**
 * 对象级权限服务。
 */
public interface ObjectPermissionService {

    /**
     * 返回支持的对象类型。
     */
    String getObjectType();

    /**
     * 校验当前登录用户是否具备对象权限。
     *
     * @param objectId 对象编号
     * @param permission 权限码
     * @param memberOnly 是否只要求成员身份
     */
    void checkPermission(Long objectId, String permission, boolean memberOnly);

    /**
     * 判断当前登录用户是否具备指定对象上的指定权限码（非抛模式）。
     *
     * 与 {@link #checkPermission(Long, String, boolean)} 区别：
     * 本方法不抛异常，纯返回 boolean，用于"无权限就走降级路径"而非"无权限就 403"的场景。
     *
     * @param objectId   对象 ID（如 projectId）
     * @param permission 权限码，如 {@code project:task:list-all}
     * @return true=具备，false=不具备
     */
    boolean hasPermission(Long objectId, String permission);

}
