You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
1.4 KiB
35 lines
1.4 KiB
package com.crm.auth.security;
|
|
|
|
import com.crm.auth.domain.entity.SysMenu;
|
|
|
|
import java.util.List;
|
|
|
|
/**
|
|
* 权限解析引擎:每请求把一个用户的全部授权事实一次算清(ADR-0011)。
|
|
*
|
|
* <p>深模块:调用方只见两个方法,「用户 → 角色 → 授权 → 资源」的查询链、
|
|
* 档位取舍、子树展开、权限码并集的断路规则全部藏在实现里。</p>
|
|
*
|
|
* <p>fail-closed(ADR-0006):解析失败即抛异常,由请求入口拒绝该请求;
|
|
* 不存在「部分成功」的第三状态。</p>
|
|
*/
|
|
public interface PermissionResolver {
|
|
|
|
/**
|
|
* 解析用户的数据可见性与全部授权码。纯取值——不装载任何线程上下文,
|
|
* 装载 {@link com.crm.base.security.DataVisibilityContext} 由调用方按请求生命周期负责。
|
|
*
|
|
* @param userId 本地用户 ID
|
|
* @return 可见性 + 权限码并集 + 角色编码;无角色用户返回最窄档可见性与空授权集合
|
|
*/
|
|
PermissionGrant resolve(Long userId);
|
|
|
|
/**
|
|
* 用户可见菜单树(catalog/menu 节点,按角色授权过滤、排除 button、按 sort 排序)。
|
|
* 登录后渲染侧边栏用,不参与每请求解析。
|
|
*
|
|
* @param userId 本地用户 ID
|
|
* @return 组好父子关系的菜单树;无任何授权时返回空列表
|
|
*/
|
|
List<SysMenu> visibleMenuTree(Long userId);
|
|
}
|
|
|