提交 ccf5d0a0 编写于 作者: zhouweidong's avatar zhouweidong

权限调整

上级 d64ffe15
......@@ -118,8 +118,8 @@ public class AuthPermissionEvaluator implements PermissionEvaluator {
if(!validDataSetHasPermission(permissionList,entityName,dataSetName)){
return false;
}
//拼接权限条件
deDataSetFillPermissionSQLRouter(deStorageMode, searchContext, entity , dataSetName , permissionList);
<#--//拼接权限条件-->
<#--deDataSetFillPermissionSQLRouter(deStorageMode, searchContext, entity , dataSetName , permissionList);-->
}
return true;
}
......@@ -347,80 +347,77 @@ public class AuthPermissionEvaluator implements PermissionEvaluator {
}
}
/**
* 根据实体存储类型,拼接权限条件
* @param deStorageMode
* @param searchContext
* @param entity
* @param dataSetName
* @param permissionList
*/
private void deDataSetFillPermissionSQLRouter(String deStorageMode , Object searchContext, EntityBase entity ,String dataSetName ,JSONObject permissionList){
//检查是否有数据权限[单行删除]
if(deStorageMode.equalsIgnoreCase("sql")){
sqlPermissionBuilder(searchContext, entity , dataSetName, permissionList);
}
else if(deStorageMode.equalsIgnoreCase("nosql")){
noSqlPermissionBuilder(searchContext, entity , dataSetName, permissionList);
}
else if(deStorageMode.equalsIgnoreCase("serviceapi")){
}
else {
throw new RuntimeException(String.format("未能识别[%s]实体对应存储模式[%s]",entity.getClass().getSimpleName(),deStorageMode));
}
}
/**
* NoSQL存储模式的表格查询填充权限条件
* @param searchContext
* @param entity
* @param dataSetName
* @param permissionList
*/
private void noSqlPermissionBuilder(Object searchContext, EntityBase entity, String dataSetName, JSONObject permissionList) {
if(searchContext instanceof QueryBuildContext){
//获取权限表达式[全部数据、本单位、本部门等]
String entityName=entity.getClass().getSimpleName();
JSONObject entityObj=permissionList.getJSONObject(entityName);
JSONObject permissionType=entityObj.getJSONObject(DataSetTag);
JSONArray dataRange=permissionType.getJSONArray(dataSetName);
if(dataRange.size()==0)
return ;
//根据权限表达式生成查询条件,并将查询条件设置到SearchContext
fillNoSqlPermissionCond(dataRange,entity,((QueryBuildContext) searchContext).getSelectCond());
}
}
/**
* SQL存储模式的表格查询填充权限条件
* @param searchContext
* @param entity
* @param dataSetName
* @param permissionList
*/
private void sqlPermissionBuilder(Object searchContext, EntityBase entity, String dataSetName, JSONObject permissionList){
//获取权限表达式[全部数据、本单位、本部门等]
String entityName=entity.getClass().getSimpleName();
JSONObject entityObj=permissionList.getJSONObject(entityName);//获取实体
JSONObject permissionType=entityObj.getJSONObject(DataSetTag);
JSONArray dataRange=permissionType.getJSONArray(dataSetName);//获取实体数据集
if(dataRange.size()==0)
return ;
//根据权限条件获取SQL
String permissionSQL=getPermissionSQL(entity,dataRange);
//SQL拼接到SearchContext
if(searchContext instanceof QueryWrapperContext){
QueryWrapperContext queryWrapperContext = (QueryWrapperContext) searchContext;
QueryWrapper queryWrapper = queryWrapperContext.getSelectCond();
queryWrapper.apply(permissionSQL);
}
}
<#--/**-->
<#--* 根据实体存储类型,拼接权限条件-->
<#--* @param deStorageMode-->
<#--* @param searchContext-->
<#--* @param entity-->
<#--* @param dataSetName-->
<#--* @param permissionList-->
<#--*/-->
<#--private void deDataSetFillPermissionSQLRouter(String deStorageMode , Object searchContext, EntityBase entity ,String dataSetName ,JSONObject permissionList){-->
<#--//检查是否有数据权限[单行删除]-->
<#--if(deStorageMode.equalsIgnoreCase("sql")){-->
<#--sqlPermissionBuilder(searchContext, entity , dataSetName, permissionList);-->
<#--}-->
<#--else if(deStorageMode.equalsIgnoreCase("nosql")){-->
<#--noSqlPermissionBuilder(searchContext, entity , dataSetName, permissionList);-->
<#--}-->
<#--else if(deStorageMode.equalsIgnoreCase("serviceapi")){-->
<#--}-->
<#--else {-->
<#--throw new RuntimeException(String.format("未能识别[%s]实体对应存储模式[%s]",entity.getClass().getSimpleName(),deStorageMode));-->
<#--}-->
<#--}-->
<#--/**-->
<#--* NoSQL存储模式的表格查询填充权限条件-->
<#--* @param searchContext-->
<#--* @param entity-->
<#--* @param dataSetName-->
<#--* @param permissionList-->
<#--*/-->
<#--private void noSqlPermissionBuilder(Object searchContext, EntityBase entity, String dataSetName, JSONObject permissionList) {-->
<#--if(searchContext instanceof QueryBuildContext){-->
<#--//获取权限表达式[全部数据、本单位、本部门等]-->
<#--String entityName=entity.getClass().getSimpleName();-->
<#--JSONObject entityObj=permissionList.getJSONObject(entityName);-->
<#--JSONObject permissionType=entityObj.getJSONObject(DataSetTag);-->
<#--JSONArray dataRange=permissionType.getJSONArray(dataSetName);-->
<#--if(dataRange.size()==0)-->
<#--return ;-->
<#--//根据权限表达式生成查询条件,并将查询条件设置到SearchContext-->
<#--fillNoSqlPermissionCond(dataRange,entity,((QueryBuildContext) searchContext).getSelectCond());-->
<#--}-->
<#--}-->
<#--/**-->
<#--* SQL存储模式的表格查询填充权限条件-->
<#--* @param searchContext-->
<#--* @param entity-->
<#--* @param dataSetName-->
<#--* @param permissionList-->
<#--*/-->
<#--private void sqlPermissionBuilder(Object searchContext, EntityBase entity, String dataSetName, JSONObject permissionList){-->
<#--//获取权限表达式[全部数据、本单位、本部门等]-->
<#--String entityName=entity.getClass().getSimpleName();-->
<#--JSONObject entityObj=permissionList.getJSONObject(entityName);//获取实体-->
<#--JSONObject permissionType=entityObj.getJSONObject(DataSetTag);-->
<#--JSONArray dataRange=permissionType.getJSONArray(dataSetName);//获取实体数据集-->
<#--if(dataRange.size()==0)-->
<#--return ;-->
<#--//根据权限条件获取SQL-->
<#--String permissionSQL=getPermissionSQL(entity,dataRange);-->
<#--//SQL拼接到SearchContext-->
<#--if(searchContext instanceof QueryWrapperContext){-->
<#--QueryWrapperContext queryWrapperContext = (QueryWrapperContext) searchContext;-->
<#--QueryWrapper queryWrapper = queryWrapperContext.getSelectCond();-->
<#--queryWrapper.apply(permissionSQL);-->
<#--}-->
<#--}-->
/**
* NoSQL存储模式的表格查询填充权限条件
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册