package com.newyetai.security.decision.manager;
import java.util.Collection;
import org.springframework.security.access.ConfigAttribute;
import org.springframework.security.core.userdetails.UserDetails;
import com.newyetai.usercenter.authority.dto.PermissionQueryDTO;
import com.newyetai.usercenter.dto.Resource;
/**
* 权限决策管理器。
* 实现{@link org.springframework.security.access.SecurityMetadataSource}来
* 提供自己定义资源的权限信息,就可以实现权限决策判断
*
* @author on 2019-11-05
*/
public interface SecurityDecisionManager {
/**
* 决策给定的资源,当前登录用户是否有权限
*
* @param resource 资源
* @return 结果。true为有权限,否则没有
*/
boolean decide(Resource resource, PermissionQueryDTO permissionQueryDTO);
/**
* 根据资源获取权限信息
*
* @param resource 资源
* @return 权限列表
*/
Collection findConfigAttributes(Resource resource, PermissionQueryDTO permissionQueryDTO);
/**
* 决策给定的资源,给定用户是否有权限
*
* @param userDetails 用户实体
* @param resource 资源
* @return 结果。true为有权限,否则没有
* @author sr on 2019-10-16
*/
boolean decide(UserDetails userDetails, Resource resource, PermissionQueryDTO permissionQueryDTO);
}