Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
iBiz4j Spring R7
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
iBiz-R7后台标准模板
iBiz4j Spring R7
提交
2200c2e0
提交
2200c2e0
编写于
5月 20, 2020
作者:
zhouweidong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
权限调整
上级
809a1613
变更
1
显示空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
104 行增加
和
104 行删除
+104
-104
AuthPermissionEvaluator.java.ftl
...S_PKGPATH%/util/security/AuthPermissionEvaluator.java.ftl
+104
-104
未找到文件。
SLN/%PUBPRJ%-util/src/main/java/%SYS_PKGPATH%/util/security/AuthPermissionEvaluator.java.ftl
浏览文件 @
2200c2e0
...
...
@@ -42,10 +42,10 @@ public class AuthPermissionEvaluator implements PermissionEvaluator {
*
实体行为操作标识
*/
private
String
DEActionType
=
"DEACTION"
;
/**
*
实体数据集操作标识
*/
private
String
DataSetTag
=
"DATASET"
;
<#--/**-->
<#--*
实体数据集操作标识
-->
<#--*/-->
<#--
private
String
DataSetTag
=
"DATASET"
;-->
/**
*
实体主键标识
*/
...
...
@@ -66,63 +66,63 @@ public class AuthPermissionEvaluator implements PermissionEvaluator {
@
Override
public
boolean
hasPermission
(
Authentication
authentication
,
Object
deAction
,
Object
gridParam
)
{
//
未开启权限校验、超级管理员则不进行权限检查
if
(
AuthenticationUser
.
getAuthenticationUser
().
getSuperuser
()==
1
||
!enablePermissionValid)
return
true
;
<#--//
未开启权限校验、超级管理员则不进行权限检查
-->
<#--
if
(
AuthenticationUser
.
getAuthenticationUser
().
getSuperuser
()==
1
||
!enablePermissionValid)-->
<#--
return
true
;-->
String
action
=
""
;
String
deStorageMode
;
if
(
deAction
instanceof
String
)
action
=
(
String
)
deAction
;
<#--
String
action
=
""
;-->
<#--
String
deStorageMode
;-->
<#--
if
(
deAction
instanceof
String
)-->
<#--
action
=
(
String
)
deAction
;-->
if
(
StringUtils
.
isEmpty
(
action
))
return
false
;
<#--
if
(
StringUtils
.
isEmpty
(
action
))-->
<#--
return
false
;-->
//
获取当前用户权限列表
JSONObject
userPermission
=
AuthenticationUser
.
getAuthenticationUser
().
getPermissionList
();
<#--//
获取当前用户权限列表
-->
<#--
JSONObject
userPermission
=
AuthenticationUser
.
getAuthenticationUser
().
getPermissionList
();-->
if
(
userPermission
==
null
)
return
false
;
<#--
if
(
userPermission
==
null
)-->
<#--
return
false
;-->
List
gridParamList
=
(
ArrayList
)
gridParam
;
if
(
action
.
equalsIgnoreCase
(
"remove"
)){
//
准备参数
Object
srfKey
=
gridParamList
.
get
(
0
);
EntityBase
entity
=
(
EntityBase
)
gridParamList
.
get
(
1
);
deStorageMode
=
(
String
)
gridParamList
.
get
(
2
);
String
entityName
=
entity
.
getClass
().
getSimpleName
();
<#--
List
gridParamList
=
(
ArrayList
)
gridParam
;-->
<#--
if
(
action
.
equalsIgnoreCase
(
"remove"
)){-->
<#--//
准备参数
-->
<#--
Object
srfKey
=
gridParamList
.
get
(
0
);-->
<#--
EntityBase
entity
=
(
EntityBase
)
gridParamList
.
get
(
1
);-->
<#--
deStorageMode
=
(
String
)
gridParamList
.
get
(
2
);-->
<#--
String
entityName
=
entity
.
getClass
().
getSimpleName
();-->
//
获取实体行为权限信息
JSONObject
permissionList
=
userPermission
.
getJSONObject
(
"entities"
);
<#--//
获取实体行为权限信息
-->
<#--
JSONObject
permissionList
=
userPermission
.
getJSONObject
(
"entities"
);-->
//
检查是否有操作权限
[
create
.
update
.
delete
.
read
]
if
(
!validDEActionHasPermission(permissionList,entityName,action)){
return
false
;
}
//
检查是否有数据权限
return
deActionPermissionValidRouter
(
deStorageMode
,
entity
,
action
,
srfKey
,
permissionList
);
}
else
{
//
准备参数
Object
searchContext
=
gridParamList
.
get
(
0
);
String
dataSetName
=
String
.
valueOf
(
gridParamList
.
get
(
1
));
EntityBase
entity
=
(
EntityBase
)
gridParamList
.
get
(
2
);
deStorageMode
=
(
String
)
gridParamList
.
get
(
3
);
String
entityName
=
entity
.
getClass
().
getSimpleName
();
//
获取数据集权限信息
JSONObject
permissionList
=
userPermission
.
getJSONObject
(
"entities"
);
if
(
StringUtils
.
isEmpty
(
entityName
)||
StringUtils
.
isEmpty
(
dataSetName
))
return
false
;
//
检查是否有访问数据集的权限
if
(
!validDataSetHasPermission(permissionList,entityName,dataSetName)){
return
false
;
}
<#--
//
拼接权限条件
-->
<#--
deDataSetFillPermissionSQLRouter
(
deStorageMode
,
searchContext
,
entity
,
dataSetName
,
permissionList
)
;-->
}
<#--//
检查是否有操作权限
[
create
.
update
.
delete
.
read
]-->
<#--
if
(
!validDEActionHasPermission(permissionList,entityName,action)){-->
<#--
return
false
;-->
<#--}-->
<#--//
检查是否有数据权限
-->
<#--
return
deActionPermissionValidRouter
(
deStorageMode
,
entity
,
action
,
srfKey
,
permissionList
);-->
<#--}-->
<#--
else
{-->
<#--//
准备参数
-->
<#--
Object
searchContext
=
gridParamList
.
get
(
0
);-->
<#--
String
dataSetName
=
String
.
valueOf
(
gridParamList
.
get
(
1
));-->
<#--
EntityBase
entity
=
(
EntityBase
)
gridParamList
.
get
(
2
);-->
<#--
deStorageMode
=
(
String
)
gridParamList
.
get
(
3
);-->
<#--
String
entityName
=
entity
.
getClass
().
getSimpleName
();-->
<#--//
获取数据集权限信息
-->
<#--
JSONObject
permissionList
=
userPermission
.
getJSONObject
(
"entities"
);-->
<#--
if
(
StringUtils
.
isEmpty
(
entityName
)||
StringUtils
.
isEmpty
(
dataSetName
))-->
<#--
return
false
;-->
<#--//
检查是否有访问数据集的权限
-->
<#--
if
(
!validDataSetHasPermission(permissionList,entityName,dataSetName)){-->
<#--
return
false
;-->
<#--}-->
<#--
&
lt
;#&
ndash
;//
拼接权限条件
&
ndash
;&
gt
;
-->
<#--
&
lt
;#&
ndash
;
deDataSetFillPermissionSQLRouter
(
deStorageMode
,
searchContext
,
entity
,
dataSetName
,
permissionList
);&
ndash
;&
gt
;-->
<#--}-->
return
true
;
}
...
...
@@ -216,33 +216,33 @@ public class AuthPermissionEvaluator implements PermissionEvaluator {
return
hasPermission
;
}
/**
*
数据集合权限校验
*
@
param
userPermission
*
@
param
entityName
*
@
param
dataSetName
*
userPermission
:{
"ENTITY"
:{
"DEACTION"
:{
"READ"
:[
"CURORG"
]},
"DATASET"
:{
"Default"
:[
"CURORG"
]}}}
*
@
return
*/
private
boolean
validDataSetHasPermission
(
JSONObject
userPermission
,
String
entityName
,
String
dataSetName
){
boolean
hasPermission
=
false
;
if
(
userPermission
==
null
)
return
false
;
if
(
!userPermission.containsKey(entityName))
return
false
;
JSONObject
entity
=
userPermission
.
getJSONObject
(
entityName
);//
获取实体
if
(
!entity.containsKey(DataSetTag))
return
false
;
JSONObject
dataSetList
=
entity
.
getJSONObject
(
DataSetTag
);//
获取数据集
if
(
!dataSetList.containsKey(dataSetName))
return
false
;
JSONArray
dataRange
=
dataSetList
.
getJSONArray
(
dataSetName
);//
获取数据范围
if
(
dataRange
!=null && dataRange.size()>0){
hasPermission
=
true
;
}
return
hasPermission
;
}
<#--/**-->
<#--*
数据集合权限校验
-->
<#--*
@
param
userPermission
-->
<#--*
@
param
entityName
-->
<#--*
@
param
dataSetName
-->
<#--*
userPermission
:{
"ENTITY"
:{
"DEACTION"
:{
"READ"
:[
"CURORG"
]},
"DATASET"
:{
"Default"
:[
"CURORG"
]}}}-->
<#--*
@
return
-->
<#--*/-->
<#--
private
boolean
validDataSetHasPermission
(
JSONObject
userPermission
,
String
entityName
,
String
dataSetName
){-->
<#--
boolean
hasPermission
=
false
;-->
<#--
if
(
userPermission
==
null
)-->
<#--
return
false
;-->
<#--
if
(
!userPermission.containsKey(entityName))-->
<#--
return
false
;-->
<#--
JSONObject
entity
=
userPermission
.
getJSONObject
(
entityName
);//
获取实体
-->
<#--
if
(
!entity.containsKey(DataSetTag))-->
<#--
return
false
;-->
<#--
JSONObject
dataSetList
=
entity
.
getJSONObject
(
DataSetTag
);//
获取数据集
-->
<#--
if
(
!dataSetList.containsKey(dataSetName))-->
<#--
return
false
;-->
<#--
JSONArray
dataRange
=
dataSetList
.
getJSONArray
(
dataSetName
);//
获取数据范围
-->
<#--
if
(
dataRange
!=null && dataRange.size()>0){-->
<#--
hasPermission
=
true
;-->
<#--}-->
<#--
return
hasPermission
;-->
<#--}-->
/**
*
根据实体存储模式,进行鉴权
...
...
@@ -442,28 +442,28 @@ public class AuthPermissionEvaluator implements PermissionEvaluator {
for
(
int
i
=
0
;
i
<
oppriList
.
size
();
i
++){
String
permissionCond
=
oppriList
.
getString
(
i
);//
权限配置条件
if
(
permissionCond
.
equals
(
"
CURORG
"
)){
//
本单位
if
(
permissionCond
.
equals
(
"
curorg
"
)){
//
本单位
permissionSQL
.
or
(
new
QueryBuilder
().
and
(
orgField
).
is
(
AuthenticationUser
.
getAuthenticationUser
().
getOrgid
()).
get
());
}
else
if
(
permissionCond
.
equals
(
"
PORG
"
)){//
上级单位
else
if
(
permissionCond
.
equals
(
"
porg
"
)){//
上级单位
permissionSQL
.
or
(
new
QueryBuilder
().
and
(
orgField
).
in
(
formatStringArr
(
orgParent
)).
get
());
}
else
if
(
permissionCond
.
equals
(
"
SORG
"
)){//
下级单位
else
if
(
permissionCond
.
equals
(
"
sorg
"
)){//
下级单位
permissionSQL
.
or
(
new
QueryBuilder
().
and
(
orgField
).
in
(
formatStringArr
(
orgChild
)).
get
());
}
else
if
(
permissionCond
.
equals
(
"
CREATEMAN
"
)){//
建立人
else
if
(
permissionCond
.
equals
(
"
createman
"
)){//
建立人
permissionSQL
.
or
(
new
QueryBuilder
().
and
(
createManField
).
is
(
AuthenticationUser
.
getAuthenticationUser
().
getUserid
()).
get
());
}
else
if
(
permissionCond
.
equals
(
"
CURORGDEPT
"
)){//
本部门
else
if
(
permissionCond
.
equals
(
"
curorgdept
"
)){//
本部门
permissionSQL
.
or
(
new
QueryBuilder
().
and
(
orgDeptField
).
is
(
AuthenticationUser
.
getAuthenticationUser
().
getMdeptid
()).
get
());
}
else
if
(
permissionCond
.
equals
(
"
PORGDEPT
"
)){//
上级部门
else
if
(
permissionCond
.
equals
(
"
porgdept
"
)){//
上级部门
permissionSQL
.
or
(
new
QueryBuilder
().
and
(
orgDeptField
).
in
(
formatStringArr
(
orgDeptParent
)).
get
());
}
else
if
(
permissionCond
.
equals
(
"
SORGDEPT
"
)){//
下级部门
else
if
(
permissionCond
.
equals
(
"
sorgdept
"
)){//
下级部门
permissionSQL
.
or
(
new
QueryBuilder
().
and
(
orgDeptField
).
in
(
formatStringArr
(
orgDeptChild
)).
get
());
}
else
if
(
permissionCond
.
equals
(
"
ALL
"
)){
else
if
(
permissionCond
.
equals
(
"
all
"
)){
permissionSQL
.
or
(
new
QueryBuilder
().
get
());
}
}
...
...
@@ -493,28 +493,28 @@ public class AuthPermissionEvaluator implements PermissionEvaluator {
for
(
int
i
=
0
;
i
<
oppriList
.
size
();
i
++){
permissionSQL
.
append
(
"OR"
);
String
permissionCond
=
oppriList
.
getString
(
i
);//
权限配置条件
if
(
permissionCond
.
equals
(
"
CURORG
"
)){
//
本单位
if
(
permissionCond
.
equals
(
"
curorg
"
)){
//
本单位
permissionSQL
.
append
(
String
.
format
(
"(%s='%s')"
,
orgField
,
AuthenticationUser
.
getAuthenticationUser
().
getOrgid
()));
}
else
if
(
permissionCond
.
equals
(
"
PORG
"
)){//
上级单位
else
if
(
permissionCond
.
equals
(
"
porg
"
)){//
上级单位
permissionSQL
.
append
(
String
.
format
(
" %s in(%s) "
,
orgField
,
formatStringArr
(
orgParent
)));
}
else
if
(
permissionCond
.
equals
(
"
SORG
"
)){//
下级单位
else
if
(
permissionCond
.
equals
(
"
sorg
"
)){//
下级单位
permissionSQL
.
append
(
String
.
format
(
" %s in(%s) "
,
orgField
,
formatStringArr
(
orgChild
)));
}
else
if
(
permissionCond
.
equals
(
"
CREATEMAN
"
)){//
建立人
else
if
(
permissionCond
.
equals
(
"
createman
"
)){//
建立人
permissionSQL
.
append
(
String
.
format
(
"(%s='%s')"
,
createManField
,
AuthenticationUser
.
getAuthenticationUser
().
getUserid
()));
}
else
if
(
permissionCond
.
equals
(
"
CURORGDEPT
"
)){//
本部门
else
if
(
permissionCond
.
equals
(
"
curorgdept
"
)){//
本部门
permissionSQL
.
append
(
String
.
format
(
"(%s='%s')"
,
orgDeptField
,
AuthenticationUser
.
getAuthenticationUser
().
getMdeptid
()));
}
else
if
(
permissionCond
.
equals
(
"
PORGDEPT
"
)){//
上级部门
else
if
(
permissionCond
.
equals
(
"
porgdept
"
)){//
上级部门
permissionSQL
.
append
(
String
.
format
(
" %s in (%s) "
,
orgDeptField
,
formatStringArr
(
orgDeptParent
)));
}
else
if
(
permissionCond
.
equals
(
"
SORGDEPT
"
)){//
下级部门
else
if
(
permissionCond
.
equals
(
"
sorgdept
"
)){//
下级部门
permissionSQL
.
append
(
String
.
format
(
" %s in (%s) "
,
orgDeptField
,
formatStringArr
(
orgDeptChild
)));
}
else
if
(
permissionCond
.
equals
(
"
ALL
"
)){//
全部数据
else
if
(
permissionCond
.
equals
(
"
all
"
)){//
全部数据
permissionSQL
.
append
(
"(1=1)"
);
}
else
{
...
...
编辑
预览
Markdown
格式
0%
请重试
or
添加新附件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录