Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
有来技术
youlai-mall
提交
9e833985
Y
youlai-mall
项目概览
有来技术
/
youlai-mall
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Y
youlai-mall
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
9e833985
编写于
9月 19, 2022
作者:
总有刁民想害朕2
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(youlai-admin): 角色添加dataScope字段
角色添加dataScope字段
上级
72b4906d
变更
12
展开全部
隐藏空白更改
内联
并排
Showing
12 changed file
with
311 addition
and
223 deletion
+311
-223
docs/sql/mysql5.x/youlai.sql
docs/sql/mysql5.x/youlai.sql
+120
-111
docs/sql/mysql8.x/youlai.sql
docs/sql/mysql8.x/youlai.sql
+112
-110
youlai-admin/admin-api/src/main/java/com/youlai/admin/dto/UserAuthDTO.java
...n-api/src/main/java/com/youlai/admin/dto/UserAuthDTO.java
+6
-0
youlai-admin/admin-boot/src/main/java/com/youlai/admin/pojo/entity/SysRole.java
...t/src/main/java/com/youlai/admin/pojo/entity/SysRole.java
+2
-0
youlai-admin/admin-boot/src/main/java/com/youlai/admin/pojo/form/RoleForm.java
...ot/src/main/java/com/youlai/admin/pojo/form/RoleForm.java
+3
-0
youlai-admin/admin-boot/src/main/java/com/youlai/admin/pojo/vo/role/RolePageVO.java
...c/main/java/com/youlai/admin/pojo/vo/role/RolePageVO.java
+3
-0
youlai-admin/admin-boot/src/main/java/com/youlai/admin/service/impl/SysRoleServiceImpl.java
...ava/com/youlai/admin/service/impl/SysRoleServiceImpl.java
+1
-1
youlai-admin/admin-boot/src/main/resources/mapper/SysUserMapper.xml
...in/admin-boot/src/main/resources/mapper/SysUserMapper.xml
+5
-1
youlai-auth/src/main/java/com/youlai/auth/security/config/AuthorizationServerConfig.java
...oulai/auth/security/config/AuthorizationServerConfig.java
+1
-0
youlai-auth/src/main/java/com/youlai/auth/security/core/userdetails/user/SysUserDetails.java
...i/auth/security/core/userdetails/user/SysUserDetails.java
+7
-0
youlai-common/common-mybatis/src/main/java/com/youlai/common/mybatis/handler/MyDataPermissionHandler.java
...oulai/common/mybatis/handler/MyDataPermissionHandler.java
+35
-0
youlai-common/common-web/src/main/java/com/youlai/common/web/util/UserUtils.java
...b/src/main/java/com/youlai/common/web/util/UserUtils.java
+16
-0
未找到文件。
docs/sql/mysql5.x/youlai.sql
浏览文件 @
9e833985
此差异已折叠。
点击以展开。
docs/sql/mysql8.x/youlai.sql
浏览文件 @
9e833985
此差异已折叠。
点击以展开。
youlai-admin/admin-api/src/main/java/com/youlai/admin/dto/UserAuthDTO.java
浏览文件 @
9e833985
package
com.youlai.admin.dto
;
import
lombok.Data
;
import
java.util.List
;
...
...
@@ -43,4 +44,9 @@ public class UserAuthDTO {
*/
private
Long
deptId
;
/**
* 用户角色数据权限集合
*/
private
List
<
Integer
>
dataScopes
;
}
youlai-admin/admin-boot/src/main/java/com/youlai/admin/pojo/entity/SysRole.java
浏览文件 @
9e833985
...
...
@@ -25,6 +25,8 @@ public class SysRole extends BaseEntity {
private
Integer
status
;
private
Integer
dataScope
;
@ApiModelProperty
(
"逻辑删除标识 0-未删除 1-已删除"
)
//@TableLogic(value = "0", delval = "1")
private
Integer
deleted
;
...
...
youlai-admin/admin-boot/src/main/java/com/youlai/admin/pojo/form/RoleForm.java
浏览文件 @
9e833985
...
...
@@ -27,4 +27,7 @@ public class RoleForm {
@ApiModelProperty
(
"角色状态(1-正常;0-停用)"
)
private
Integer
status
;
@ApiModelProperty
(
"数据范围(1:全部数据权限 2:本部门数据权限 3:本部门及以下数据权限 4:本人数据)"
)
private
Integer
dataScope
;
}
youlai-admin/admin-boot/src/main/java/com/youlai/admin/pojo/vo/role/RolePageVO.java
浏览文件 @
9e833985
...
...
@@ -16,4 +16,7 @@ public class RolePageVO {
@ApiModelProperty
(
"角色编码"
)
private
String
code
;
@ApiModelProperty
(
"角色数据权限"
)
private
Integer
dataScope
;
}
youlai-admin/admin-boot/src/main/java/com/youlai/admin/service/impl/SysRoleServiceImpl.java
浏览文件 @
9e833985
...
...
@@ -69,7 +69,7 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
.
or
()
.
like
(
StrUtil
.
isNotBlank
(
keywords
),
SysRole:
:
getCode
,
keywords
)
.
ne
(!
UserUtils
.
isRoot
(),
SysRole:
:
getCode
,
GlobalConstants
.
ROOT_ROLE_CODE
)
// 非超级管理员不显示超级管理员角色
.
select
(
SysRole:
:
getId
,
SysRole:
:
getName
,
SysRole:
:
getCode
)
.
select
(
SysRole:
:
getId
,
SysRole:
:
getName
,
SysRole:
:
getCode
,
SysRole:
:
getDataScope
)
);
// 实体转换
...
...
youlai-admin/admin-boot/src/main/resources/mapper/SysUserMapper.xml
浏览文件 @
9e833985
...
...
@@ -86,6 +86,9 @@
<collection
property=
"roles"
ofType=
"string"
javaType=
"list"
>
<result
column=
"roleCode"
></result>
</collection>
<collection
property=
"dataScopes"
ofType=
"int"
javaType=
"list"
>
<result
column=
"dataScope"
></result>
</collection>
</resultMap>
<!-- 根据用户名获取认证信息 -->
...
...
@@ -97,7 +100,8 @@
t1.PASSWORD,
t1.STATUS,
t1.dept_id deptId,
t3.CODE roleCode
t3.CODE roleCode,
t3.data_scope dataScope
FROM
sys_user t1
LEFT JOIN sys_user_role t2 ON t2.user_id = t1.id
...
...
youlai-auth/src/main/java/com/youlai/auth/security/config/AuthorizationServerConfig.java
浏览文件 @
9e833985
...
...
@@ -187,6 +187,7 @@ public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdap
additionalInfo
.
put
(
"userId"
,
sysUserDetails
.
getUserId
());
additionalInfo
.
put
(
"username"
,
sysUserDetails
.
getUsername
());
additionalInfo
.
put
(
"deptId"
,
sysUserDetails
.
getDeptId
());
additionalInfo
.
put
(
"dataScopes"
,
sysUserDetails
.
getDataScopes
());
// 认证身份标识(username:用户名;)
if
(
StrUtil
.
isNotBlank
(
sysUserDetails
.
getAuthenticationIdentity
()))
{
additionalInfo
.
put
(
"authenticationIdentity"
,
sysUserDetails
.
getAuthenticationIdentity
());
...
...
youlai-auth/src/main/java/com/youlai/auth/security/core/userdetails/user/SysUserDetails.java
浏览文件 @
9e833985
...
...
@@ -11,6 +11,7 @@ import org.springframework.security.core.userdetails.UserDetails;
import
java.util.ArrayList
;
import
java.util.Collection
;
import
java.util.List
;
/**
...
...
@@ -39,6 +40,11 @@ public class SysUserDetails implements UserDetails {
*/
private
Long
deptId
;
/**
* 用户角色数据权限集合
*/
private
List
<
Integer
>
dataScopes
;
/**
* 默认字段
*/
...
...
@@ -54,6 +60,7 @@ public class SysUserDetails implements UserDetails {
this
.
setUserId
(
user
.
getUserId
());
this
.
setUsername
(
user
.
getUsername
());
this
.
setDeptId
(
user
.
getDeptId
());
this
.
setDataScopes
(
user
.
getDataScopes
());
this
.
setPassword
(
PasswordEncoderTypeEnum
.
BCRYPT
.
getPrefix
()
+
user
.
getPassword
());
this
.
setEnabled
(
GlobalConstants
.
STATUS_YES
.
equals
(
user
.
getStatus
()));
if
(
CollectionUtil
.
isNotEmpty
(
user
.
getRoles
()))
{
...
...
youlai-common/common-mybatis/src/main/java/com/youlai/common/mybatis/handler/MyDataPermissionHandler.java
浏览文件 @
9e833985
...
...
@@ -28,6 +28,28 @@ import java.util.List;
@Slf4j
public
class
MyDataPermissionHandler
implements
DataPermissionHandler
{
/**
* 全部数据权限
*/
public
static
final
Integer
DATA_SCOPE_ALL
=
1
;
/**
* 部门数据权限
*/
public
static
final
Integer
DATA_SCOPE_DEPT
=
2
;
/**
* 部门及以下数据权限
*/
public
static
final
Integer
DATA_SCOPE_DEPT_AND_CHILD
=
3
;
/**
* 仅本人数据权限
*/
public
static
final
Integer
DATA_SCOPE_SELF
=
4
;
@Override
public
Expression
getSqlSegment
(
Expression
where
,
String
mappedStatementId
)
{
try
{
...
...
@@ -61,6 +83,19 @@ public class MyDataPermissionHandler implements DataPermissionHandler {
* @return 构建后查询条件
*/
public
static
Expression
dataScopeFilter
(
String
deptAlias
,
Expression
where
)
{
// 获取当前的用户数据权限
List
<
Integer
>
dataScopes
=
UserUtils
.
getDataScopes
();
for
(
Integer
dataScope:
dataScopes
)
{
if
(
dataScope
==
DATA_SCOPE_ALL
){
}
else
if
(
dataScope
==
DATA_SCOPE_DEPT
){
}
else
if
(
dataScope
==
DATA_SCOPE_DEPT_AND_CHILD
){
}
else
if
(
dataScope
==
DATA_SCOPE_SELF
){
}
}
Expression
expression
=
new
EqualsTo
(
new
Column
(
StrUtil
.
isEmpty
(
deptAlias
)
?
"id"
:
deptAlias
+
".id"
),
getDeptId
());
LikeExpression
likeExpression
=
new
LikeExpression
();
Function
left
=
new
Function
();
...
...
youlai-common/common-web/src/main/java/com/youlai/common/web/util/UserUtils.java
浏览文件 @
9e833985
...
...
@@ -77,6 +77,22 @@ public class UserUtils {
return
roles
;
}
/**
* JWT获取用户数据权限列表
*
* @return 角色数据权限列表
*/
public
static
List
<
Integer
>
getDataScopes
()
{
List
<
Integer
>
dataScopes
;
JSONObject
payload
=
JwtUtils
.
getJwtPayload
();
if
(
payload
.
containsKey
(
"dataScopes"
))
{
dataScopes
=
payload
.
getJSONArray
(
"dataScopes"
).
toList
(
Integer
.
class
);
}
else
{
dataScopes
=
Collections
.
emptyList
();
}
return
dataScopes
;
}
/**
* 是否「超级管理员」
*
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录