数据权限扩展
适用范围
Pangea v2.2.0及以上版本
快速上手
首先,您需要检查当前业务模块是否依赖pangea-common-datascope
包,如没有则依赖pangea-common-datascope
,如下代码:
xml
<dependency>
<groupId>com.hisense.pangea</groupId>
<artifactId>pangea-common-datascope</artifactId>
<version>${pangea.version}</version>
</dependency>
实现DataScopeExtend
接口,并重写getDataScope
方法:
java
import com.hisense.pangea.datascope.domain.DataScopeVO;
import com.hisense.pangea.datascope.enums.RuleColumnType;
import com.hisense.pangea.datascope.enums.RuleConditions;
import com.hisense.pangea.datascope.enums.RuleType;
import com.hisense.pangea.datascope.enums.RuleValueType;
import com.hisense.pangea.datascope.extend.DataScopeExtend;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Service //注意:此处添加Service注解, 使之交于IOC容器管理bean
public class DataScopeExtendImpl implements DataScopeExtend {
/**
*
* @param userInfo 当前登录用户信息
* @param menuCode 当前拦截菜单编码
* @return
* @描述 获取业务系统自定义的数据权限
* @使用 业务系统实现此接口并自定义数据权限获取逻辑, 此接口将传入用户信息及菜单编码
*/
@Override
public List<DataScopeVO> getDataScope(UserModel userInfo, String menuCode) {
// userInfo和menuCode参数为框架传入参数,供业务系统使用
// 通过userInfo可以获取以下用户信息
// 用户ID (唯一)
Long userId = userModel.getUserId();
// 账号名 (唯一)
String loginName = userModel.getLoginName();
// 中文名
String userNameZH = userModel.getUserName();
// 角色编码
List<String> roleCodes = userModel.getRoleCodes();
//TODO 此处为模拟业务系统扩展的自定义规则, 仅供参考
List<DataScopeVO> lists = new ArrayList<>();
DataScopeVO vo = new DataScopeVO();
//规则值
vo.setRuleValue("admin");
//菜单编码
vo.setMenuCode("userMenu");
//规则字段
vo.setRuleColumn("lgoinName");
//规则类型
vo.setRuleType(RuleType.COLUMN_RULE);
//规则字段类型
vo.setRuleColumnType(RuleColumnType.CONFIG);
//规则条件
vo.setRuleConditions(RuleConditions.BE_EQUAL_TO); // 等于条件
//规则值类型
vo.setRuleValueType(RuleValueType.CUSTOM_VALUE);
lists.add(vo);
return lists;
}
}
至此,自定义数据权限已完成。