Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Y
yudao-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
hblj
yudao-cloud
Commits
2daea006
提交
2daea006
authored
7月 12, 2020
作者:
YunaiV
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
将当前管理员相关的信息、权限等接口,迁移到 Passport 模块,更加统一
上级
74d05557
显示空白字符变更
内嵌
并排
正在显示
18 个修改的文件
包含
235 行增加
和
203 行删除
+235
-203
ValidationUtil.java
...java/cn/iocoder/common/framework/util/ValidationUtil.java
+13
-0
AdminController.java
.../mall/managementweb/controller/admin/AdminController.java
+0
-9
PassportController.http
...managementweb/controller/passport/PassportController.http
+14
-0
PassportController.java
...managementweb/controller/passport/PassportController.java
+33
-8
PassportLoginDTO.java
...nagementweb/controller/passport/dto/PassportLoginDTO.java
+1
-1
AdminPassportVO.java
...managementweb/controller/passport/vo/AdminPassportVO.java
+0
-50
PassportAccessTokenVO.java
...mentweb/controller/passport/vo/PassportAccessTokenVO.java
+22
-0
PassportAdminMenuTreeNodeVO.java
...b/controller/passport/vo/PassportAdminMenuTreeNodeVO.java
+3
-3
PassportAdminVO.java
...managementweb/controller/passport/vo/PassportAdminVO.java
+18
-0
ResourceController.http
...nagementweb/controller/permission/ResourceController.http
+0
-10
ResourceController.java
...nagementweb/controller/permission/ResourceController.java
+0
-16
AdminPassportConvert.java
.../managementweb/convert/passport/AdminPassportConvert.java
+7
-8
ResourceConvert.java
...all/managementweb/convert/permission/ResourceConvert.java
+2
-2
AdminPassportManager.java
.../managementweb/manager/passport/AdminPassportManager.java
+0
-37
PassportManager.java
.../mall/managementweb/manager/passport/PassportManager.java
+114
-0
ResourceManager.java
...all/managementweb/manager/permission/ResourceManager.java
+2
-58
AdminDO.java
...all/systemservice/dal/mysql/dataobject/admin/AdminDO.java
+4
-0
ResourceService.java
...all/systemservice/service/permission/ResourceService.java
+2
-1
没有找到文件。
common/common-framework/src/main/java/cn/iocoder/common/framework/util/ValidationUtil.java
浏览文件 @
2daea006
package
cn
.
iocoder
.
common
.
framework
.
util
;
import
java.util.regex.Pattern
;
/**
* 校验工具类
*/
public
class
ValidationUtil
{
private
static
Pattern
PATTERN_URL
=
Pattern
.
compile
(
"^(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]"
);
public
static
boolean
isMobile
(
String
mobile
)
{
if
(
mobile
==
null
||
mobile
.
length
()
!=
11
)
{
return
false
;
...
...
@@ -13,4 +17,13 @@ public class ValidationUtil {
return
true
;
}
public
static
boolean
isURL
(
String
url
)
{
return
StringUtils
.
hasText
(
url
)
&&
PATTERN_URL
.
matcher
(
url
).
matches
();
}
public
static
void
main
(
String
[]
args
)
{
System
.
out
.
println
(
isURL
(
"http://www.iocoder.cn"
));
}
}
management-web-app/src/main/java/cn/iocoder/mall/managementweb/controller/admin/AdminController.java
浏览文件 @
2daea006
...
...
@@ -8,7 +8,6 @@ import cn.iocoder.mall.managementweb.controller.admin.dto.AdminPageDTO;
import
cn.iocoder.mall.managementweb.controller.admin.dto.AdminUpdateInfoDTO
;
import
cn.iocoder.mall.managementweb.controller.admin.dto.AdminUpdateStatusDTO
;
import
cn.iocoder.mall.managementweb.controller.admin.vo.AdminPageItemVO
;
import
cn.iocoder.mall.managementweb.controller.admin.vo.AdminVO
;
import
cn.iocoder.mall.managementweb.manager.admin.AdminManager
;
import
cn.iocoder.mall.security.admin.core.context.AdminSecurityContextHolder
;
import
cn.iocoder.security.annotations.RequiresPermissions
;
...
...
@@ -62,12 +61,4 @@ public class AdminController {
return
success
(
true
);
}
// =========== 当前管理员 API ===========
@GetMapping
(
"/info"
)
@ApiOperation
(
value
=
"更新管理员状态"
)
public
CommonResult
<
AdminVO
>
info
()
{
return
success
(
adminManager
.
getAdmin
(
AdminSecurityContextHolder
.
getAdminId
()));
}
}
management-web-app/src/main/java/cn/iocoder/mall/managementweb/controller/passport/
Admin
PassportController.http
→
management-web-app/src/main/java/cn/iocoder/mall/managementweb/controller/passport/PassportController.http
浏览文件 @
2daea006
...
...
@@ -10,4 +10,18 @@ Content-Type: application/x-www-form-urlencoded
username=admin&password=1024
### /passport/info 成功
GET {{baseUrl}}/passport/info
Authorization: Bearer {{accessToken}}
### /passport/tree-admin-menu 成功
GET {{baseUrl}}/passport/tree-admin-menu
Content-Type: application/x-www-form-urlencoded
Authorization: Bearer {{accessToken}}
### /passport/list-admin-permission 成功
GET {{baseUrl}}/passport/list-admin-permission
Content-Type: application/x-www-form-urlencoded
Authorization: Bearer {{accessToken}}
###
management-web-app/src/main/java/cn/iocoder/mall/managementweb/controller/passport/
Admin
PassportController.java
→
management-web-app/src/main/java/cn/iocoder/mall/managementweb/controller/passport/PassportController.java
浏览文件 @
2daea006
...
...
@@ -2,35 +2,60 @@ package cn.iocoder.mall.managementweb.controller.passport;
import
cn.iocoder.common.framework.util.HttpUtil
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.mall.managementweb.controller.passport.dto.AdminPassportLoginDTO
;
import
cn.iocoder.mall.managementweb.controller.passport.vo.AdminPassportVO
;
import
cn.iocoder.mall.managementweb.manager.passport.AdminPassportManager
;
import
cn.iocoder.mall.managementweb.controller.passport.dto.PassportLoginDTO
;
import
cn.iocoder.mall.managementweb.controller.passport.vo.PassportAccessTokenVO
;
import
cn.iocoder.mall.managementweb.controller.passport.vo.PassportAdminMenuTreeNodeVO
;
import
cn.iocoder.mall.managementweb.controller.passport.vo.PassportAdminVO
;
import
cn.iocoder.mall.managementweb.manager.passport.PassportManager
;
import
cn.iocoder.mall.security.admin.core.context.AdminSecurityContextHolder
;
import
cn.iocoder.security.annotations.RequiresNone
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.List
;
import
java.util.Set
;
import
static
cn
.
iocoder
.
common
.
framework
.
vo
.
CommonResult
.
success
;
@Api
(
tags
=
"管理员 Passport API"
)
@RestController
@RequestMapping
(
"/passport"
)
public
class
Admin
PassportController
{
public
class
PassportController
{
@Autowired
private
AdminPassportManager
adminP
assportManager
;
private
PassportManager
p
assportManager
;
@ApiOperation
(
"账号密码登陆"
)
@PostMapping
(
"/login"
)
@ApiOperation
(
"账号密码登陆"
)
@RequiresNone
public
CommonResult
<
AdminPassportVO
>
login
(
Admin
PassportLoginDTO
loginDTO
,
public
CommonResult
<
PassportAccessTokenVO
>
login
(
PassportLoginDTO
loginDTO
,
HttpServletRequest
request
)
{
return
success
(
adminPassportManager
.
login
(
loginDTO
,
HttpUtil
.
getIp
(
request
)));
return
success
(
passportManager
.
login
(
loginDTO
,
HttpUtil
.
getIp
(
request
)));
}
@GetMapping
(
"/info"
)
@ApiOperation
(
value
=
"获得当前管理员信息"
)
public
CommonResult
<
PassportAdminVO
>
info
()
{
return
success
(
passportManager
.
getAdmin
(
AdminSecurityContextHolder
.
getAdminId
()));
}
@GetMapping
(
"/tree-admin-menu"
)
@ApiOperation
(
"获得当前管理员的菜单树"
)
public
CommonResult
<
List
<
PassportAdminMenuTreeNodeVO
>>
treeAdminMenu
()
{
return
success
(
passportManager
.
treeAdminMenu
(
AdminSecurityContextHolder
.
getAdminId
()));
}
@GetMapping
(
"/list-admin-permission"
)
@ApiOperation
(
"获得当前管理员的权限列表"
)
public
CommonResult
<
Set
<
String
>>
listAdminPermission
()
{
return
success
(
passportManager
.
listAdminPermission
(
AdminSecurityContextHolder
.
getAdminId
()));
}
}
management-web-app/src/main/java/cn/iocoder/mall/managementweb/controller/passport/dto/
Admin
PassportLoginDTO.java
→
management-web-app/src/main/java/cn/iocoder/mall/managementweb/controller/passport/dto/PassportLoginDTO.java
浏览文件 @
2daea006
...
...
@@ -13,7 +13,7 @@ import java.io.Serializable;
@ApiModel
(
"管理登录 DTO"
)
@Data
@Accessors
(
chain
=
true
)
public
class
Admin
PassportLoginDTO
implements
Serializable
{
public
class
PassportLoginDTO
implements
Serializable
{
@ApiModelProperty
(
value
=
"用户名"
,
required
=
true
,
example
=
"yudaoyuanma"
)
@NotEmpty
(
message
=
"登陆账号不能为空"
)
...
...
management-web-app/src/main/java/cn/iocoder/mall/managementweb/controller/passport/vo/AdminPassportVO.java
deleted
100644 → 0
浏览文件 @
74d05557
package
cn
.
iocoder
.
mall
.
managementweb
.
controller
.
passport
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.util.Date
;
@ApiModel
(
"管理员通信证信息 VO"
)
@Data
@Accessors
(
chain
=
true
)
public
class
AdminPassportVO
{
@ApiModel
(
"认证信息"
)
@Data
@Accessors
(
chain
=
true
)
public
static
class
Authentication
{
@ApiModelProperty
(
value
=
"访问令牌"
,
required
=
true
,
example
=
"001e8f49b20e47f7b3a2de774497cd50"
)
private
String
accessToken
;
@ApiModelProperty
(
value
=
"刷新令牌"
,
required
=
true
,
example
=
"001e8f49b20e47f7b3a2de774497cd50"
)
private
String
refreshToken
;
@ApiModelProperty
(
value
=
"过期时间"
,
required
=
true
)
private
Date
expiresTime
;
}
@ApiModel
(
"管理员信息"
)
@Data
@Accessors
(
chain
=
true
)
public
static
class
Admin
{
@ApiModelProperty
(
value
=
"用户编号"
,
required
=
true
,
example
=
"1"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"真实姓名"
,
required
=
true
,
example
=
"小王"
)
private
String
name
;
}
/**
* 管理员信息
*/
private
Admin
admin
;
/**
* 认证信息
*/
private
Authentication
authorization
;
}
management-web-app/src/main/java/cn/iocoder/mall/managementweb/controller/passport/vo/PassportAccessTokenVO.java
0 → 100644
浏览文件 @
2daea006
package
cn
.
iocoder
.
mall
.
managementweb
.
controller
.
passport
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
java.util.Date
;
@ApiModel
(
"访问令牌信息 VO"
)
@Data
@Accessors
(
chain
=
true
)
public
class
PassportAccessTokenVO
{
@ApiModelProperty
(
value
=
"访问令牌"
,
required
=
true
,
example
=
"001e8f49b20e47f7b3a2de774497cd50"
)
private
String
accessToken
;
@ApiModelProperty
(
value
=
"刷新令牌"
,
required
=
true
,
example
=
"001e8f49b20e47f7b3a2de774497cd50"
)
private
String
refreshToken
;
@ApiModelProperty
(
value
=
"过期时间"
,
required
=
true
)
private
Date
expiresTime
;
}
management-web-app/src/main/java/cn/iocoder/mall/managementweb/controller/p
ermission/vo/
AdminMenuTreeNodeVO.java
→
management-web-app/src/main/java/cn/iocoder/mall/managementweb/controller/p
assport/vo/Passport
AdminMenuTreeNodeVO.java
浏览文件 @
2daea006
package
cn
.
iocoder
.
mall
.
managementweb
.
controller
.
p
ermission
.
vo
;
package
cn
.
iocoder
.
mall
.
managementweb
.
controller
.
p
assport
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
...
...
@@ -10,7 +10,7 @@ import java.util.List;
@ApiModel
(
value
=
"管理员拥有的菜单树"
,
description
=
"一般用于首页菜单"
)
@Data
@Accessors
(
chain
=
true
)
public
class
AdminMenuTreeNodeVO
{
public
class
Passport
AdminMenuTreeNodeVO
{
@ApiModelProperty
(
value
=
"菜单编号"
,
required
=
true
,
example
=
"1"
)
private
Integer
id
;
...
...
@@ -28,6 +28,6 @@ public class AdminMenuTreeNodeVO {
/**
* 子节点数组
*/
private
List
<
AdminMenuTreeNodeVO
>
children
;
private
List
<
Passport
AdminMenuTreeNodeVO
>
children
;
}
management-web-app/src/main/java/cn/iocoder/mall/managementweb/controller/passport/vo/PassportAdminVO.java
0 → 100644
浏览文件 @
2daea006
package
cn
.
iocoder
.
mall
.
managementweb
.
controller
.
passport
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
@ApiModel
(
"管理员信息 VO"
)
@Data
@Accessors
(
chain
=
true
)
public
class
PassportAdminVO
{
@ApiModelProperty
(
value
=
"真实名字"
,
required
=
true
,
example
=
"小王"
)
private
String
name
;
@ApiModelProperty
(
value
=
"头像"
,
required
=
true
,
example
=
"http://www.iocoder.cn/xxx.jpg"
)
private
String
avatar
;
}
management-web-app/src/main/java/cn/iocoder/mall/managementweb/controller/permission/ResourceController.http
浏览文件 @
2daea006
...
...
@@ -34,14 +34,4 @@ GET {{baseUrl}}/resource/tree
Content-Type: application/x-www-form-urlencoded
Authorization: Bearer {{accessToken}}
### /resource/tree-admin-menu 成功
GET {{baseUrl}}/resource/tree-admin-menu
Content-Type: application/x-www-form-urlencoded
Authorization: Bearer {{accessToken}}
### /resource/list-admin-permission 成功
GET {{baseUrl}}/resource/list-admin-permission
Content-Type: application/x-www-form-urlencoded
Authorization: Bearer {{accessToken}}
###
management-web-app/src/main/java/cn/iocoder/mall/managementweb/controller/permission/ResourceController.java
浏览文件 @
2daea006
...
...
@@ -3,7 +3,6 @@ package cn.iocoder.mall.managementweb.controller.permission;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.mall.managementweb.controller.permission.dto.ResourceCreateDTO
;
import
cn.iocoder.mall.managementweb.controller.permission.dto.ResourceUpdateDTO
;
import
cn.iocoder.mall.managementweb.controller.permission.vo.AdminMenuTreeNodeVO
;
import
cn.iocoder.mall.managementweb.controller.permission.vo.ResourceTreeNodeVO
;
import
cn.iocoder.mall.managementweb.controller.permission.vo.ResourceVO
;
import
cn.iocoder.mall.managementweb.manager.permission.ResourceManager
;
...
...
@@ -17,7 +16,6 @@ import org.springframework.web.bind.annotation.*;
import
javax.validation.Valid
;
import
java.util.List
;
import
java.util.Set
;
import
static
cn
.
iocoder
.
common
.
framework
.
vo
.
CommonResult
.
success
;
...
...
@@ -73,18 +71,4 @@ public class ResourceController {
return
success
(
resourceManager
.
treeResource
());
}
// =========== 当前管理员相关 API ===========
@GetMapping
(
"/tree-admin-menu"
)
@ApiOperation
(
"获得当前登陆的管理员的菜单树"
)
public
CommonResult
<
List
<
AdminMenuTreeNodeVO
>>
treeAdminMenu
()
{
return
success
(
resourceManager
.
treeAdminMenu
(
AdminSecurityContextHolder
.
getAdminId
()));
}
@GetMapping
(
"/list-admin-permission"
)
@ApiOperation
(
"获得当前登陆的管理员的权限列表"
)
public
CommonResult
<
Set
<
String
>>
listAdminPermission
()
{
return
success
(
resourceManager
.
listAdminPermission
(
AdminSecurityContextHolder
.
getAdminId
()));
}
}
management-web-app/src/main/java/cn/iocoder/mall/managementweb/convert/passport/AdminPassportConvert.java
浏览文件 @
2daea006
package
cn
.
iocoder
.
mall
.
managementweb
.
convert
.
passport
;
import
cn.iocoder.mall.managementweb.controller.passport.dto.AdminPassportLoginDTO
;
import
cn.iocoder.mall.managementweb.controller.passport.vo.AdminPassportVO
;
import
cn.iocoder.mall.managementweb.controller.passport.dto.PassportLoginDTO
;
import
cn.iocoder.mall.managementweb.controller.passport.vo.PassportAccessTokenVO
;
import
cn.iocoder.mall.managementweb.controller.passport.vo.PassportAdminVO
;
import
cn.iocoder.mall.systemservice.rpc.admin.dto.AdminVerifyPasswordDTO
;
import
cn.iocoder.mall.systemservice.rpc.admin.vo.AdminVO
;
import
cn.iocoder.mall.systemservice.rpc.oauth.vo.OAuth2AccessTokenVO
;
...
...
@@ -13,12 +14,10 @@ public interface AdminPassportConvert {
AdminPassportConvert
INSTANCE
=
Mappers
.
getMapper
(
AdminPassportConvert
.
class
);
AdminVerifyPasswordDTO
convert
(
AdminPassportLoginDTO
loginDTO
);
AdminVerifyPasswordDTO
convert
(
PassportLoginDTO
bean
);
default
AdminPassportVO
convert
(
AdminVO
adminVO
,
OAuth2AccessTokenVO
accessTokenVO
)
{
return
new
AdminPassportVO
().
setAdmin
(
convert
(
adminVO
)).
setAuthorization
(
convert
(
accessTokenVO
));
}
AdminPassportVO
.
Admin
convert
(
AdminVO
adminVO
);
AdminPassportVO
.
Authentication
convert
(
OAuth2AccessTokenVO
accessTokenVO
);
PassportAccessTokenVO
convert
(
OAuth2AccessTokenVO
bean
);
PassportAdminVO
convert
(
AdminVO
bean
);
}
management-web-app/src/main/java/cn/iocoder/mall/managementweb/convert/permission/ResourceConvert.java
浏览文件 @
2daea006
package
cn
.
iocoder
.
mall
.
managementweb
.
convert
.
permission
;
import
cn.iocoder.mall.managementweb.controller.p
ermission.vo.
AdminMenuTreeNodeVO
;
import
cn.iocoder.mall.managementweb.controller.p
assport.vo.Passport
AdminMenuTreeNodeVO
;
import
cn.iocoder.mall.managementweb.controller.permission.vo.ResourceTreeNodeVO
;
import
cn.iocoder.mall.managementweb.controller.permission.vo.ResourceVO
;
import
cn.iocoder.mall.systemservice.rpc.permission.dto.ResourceCreateDTO
;
...
...
@@ -25,6 +25,6 @@ public interface ResourceConvert {
ResourceTreeNodeVO
convertTreeNode
(
cn
.
iocoder
.
mall
.
systemservice
.
rpc
.
permission
.
vo
.
ResourceVO
bean
);
List
<
AdminMenuTreeNodeVO
>
convert
(
List
<
ResourceTreeNodeVO
>
list
);
List
<
Passport
AdminMenuTreeNodeVO
>
convert
(
List
<
ResourceTreeNodeVO
>
list
);
}
management-web-app/src/main/java/cn/iocoder/mall/managementweb/manager/passport/AdminPassportManager.java
deleted
100644 → 0
浏览文件 @
74d05557
package
cn
.
iocoder
.
mall
.
managementweb
.
manager
.
passport
;
import
cn.iocoder.common.framework.enums.UserTypeEnum
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.mall.managementweb.controller.passport.dto.AdminPassportLoginDTO
;
import
cn.iocoder.mall.managementweb.controller.passport.vo.AdminPassportVO
;
import
cn.iocoder.mall.managementweb.convert.passport.AdminPassportConvert
;
import
cn.iocoder.mall.systemservice.rpc.admin.AdminRpc
;
import
cn.iocoder.mall.systemservice.rpc.admin.vo.AdminVO
;
import
cn.iocoder.mall.systemservice.rpc.oauth.OAuth2Rpc
;
import
cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2CreateAccessTokenDTO
;
import
cn.iocoder.mall.systemservice.rpc.oauth.vo.OAuth2AccessTokenVO
;
import
org.apache.dubbo.config.annotation.Reference
;
import
org.springframework.stereotype.Service
;
@Service
public
class
AdminPassportManager
{
@Reference
(
version
=
"${dubbo.consumer.AdminRpc.version}"
,
validation
=
"false"
)
private
AdminRpc
adminRpc
;
@Reference
(
version
=
"${dubbo.consumer.OAuth2Rpc.version}"
,
validation
=
"false"
)
private
OAuth2Rpc
oauth2Rpc
;
public
AdminPassportVO
login
(
AdminPassportLoginDTO
loginDTO
,
String
ip
)
{
// 校验管理员密码
CommonResult
<
AdminVO
>
verifyPasswordResult
=
adminRpc
.
verifyPassword
(
AdminPassportConvert
.
INSTANCE
.
convert
(
loginDTO
).
setIp
(
ip
));
verifyPasswordResult
.
checkError
();
// 创建访问令牌
CommonResult
<
OAuth2AccessTokenVO
>
createAccessTokenResult
=
oauth2Rpc
.
createAccessToken
(
new
OAuth2CreateAccessTokenDTO
().
setUserId
(
verifyPasswordResult
.
getData
().
getId
())
.
setUserType
(
UserTypeEnum
.
ADMIN
.
getValue
()).
setCreateIp
(
ip
));
createAccessTokenResult
.
checkError
();
// 返回
return
AdminPassportConvert
.
INSTANCE
.
convert
(
verifyPasswordResult
.
getData
(),
createAccessTokenResult
.
getData
());
}
}
management-web-app/src/main/java/cn/iocoder/mall/managementweb/manager/passport/PassportManager.java
0 → 100644
浏览文件 @
2daea006
package
cn
.
iocoder
.
mall
.
managementweb
.
manager
.
passport
;
import
cn.iocoder.common.framework.enums.UserTypeEnum
;
import
cn.iocoder.common.framework.util.CollectionUtils
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.mall.managementweb.controller.passport.dto.PassportLoginDTO
;
import
cn.iocoder.mall.managementweb.controller.passport.vo.PassportAccessTokenVO
;
import
cn.iocoder.mall.managementweb.controller.passport.vo.PassportAdminMenuTreeNodeVO
;
import
cn.iocoder.mall.managementweb.controller.passport.vo.PassportAdminVO
;
import
cn.iocoder.mall.managementweb.controller.permission.vo.ResourceTreeNodeVO
;
import
cn.iocoder.mall.managementweb.convert.passport.AdminPassportConvert
;
import
cn.iocoder.mall.managementweb.convert.permission.ResourceConvert
;
import
cn.iocoder.mall.managementweb.manager.permission.ResourceManager
;
import
cn.iocoder.mall.systemservice.enums.permission.ResourceTypeEnum
;
import
cn.iocoder.mall.systemservice.rpc.admin.AdminRpc
;
import
cn.iocoder.mall.systemservice.rpc.admin.vo.AdminVO
;
import
cn.iocoder.mall.systemservice.rpc.oauth.OAuth2Rpc
;
import
cn.iocoder.mall.systemservice.rpc.oauth.dto.OAuth2CreateAccessTokenDTO
;
import
cn.iocoder.mall.systemservice.rpc.oauth.vo.OAuth2AccessTokenVO
;
import
cn.iocoder.mall.systemservice.rpc.permission.ResourceRpc
;
import
cn.iocoder.mall.systemservice.rpc.permission.RoleRpc
;
import
cn.iocoder.mall.systemservice.rpc.permission.vo.ResourceVO
;
import
org.apache.dubbo.config.annotation.Reference
;
import
org.springframework.stereotype.Service
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Set
;
@Service
public
class
PassportManager
{
@Reference
(
version
=
"${dubbo.consumer.AdminRpc.version}"
,
validation
=
"false"
)
private
AdminRpc
adminRpc
;
@Reference
(
version
=
"${dubbo.consumer.OAuth2Rpc.version}"
,
validation
=
"false"
)
private
OAuth2Rpc
oauth2Rpc
;
@Reference
(
version
=
"${dubbo.consumer.RoleRpc.version}"
,
validation
=
"false"
)
private
RoleRpc
roleRpc
;
@Reference
(
version
=
"${dubbo.consumer.ResourceRpc.version}"
,
validation
=
"false"
)
private
ResourceRpc
resourceRpc
;
public
PassportAccessTokenVO
login
(
PassportLoginDTO
loginDTO
,
String
ip
)
{
// 校验管理员密码
CommonResult
<
AdminVO
>
verifyPasswordResult
=
adminRpc
.
verifyPassword
(
AdminPassportConvert
.
INSTANCE
.
convert
(
loginDTO
).
setIp
(
ip
));
verifyPasswordResult
.
checkError
();
// 创建访问令牌
CommonResult
<
OAuth2AccessTokenVO
>
createAccessTokenResult
=
oauth2Rpc
.
createAccessToken
(
new
OAuth2CreateAccessTokenDTO
().
setUserId
(
verifyPasswordResult
.
getData
().
getId
())
.
setUserType
(
UserTypeEnum
.
ADMIN
.
getValue
()).
setCreateIp
(
ip
));
createAccessTokenResult
.
checkError
();
// 返回
return
AdminPassportConvert
.
INSTANCE
.
convert
(
createAccessTokenResult
.
getData
());
}
public
PassportAdminVO
getAdmin
(
Integer
adminId
)
{
CommonResult
<
AdminVO
>
getAdminResult
=
adminRpc
.
getAdmin
(
adminId
);
getAdminResult
.
checkError
();
return
AdminPassportConvert
.
INSTANCE
.
convert
(
getAdminResult
.
getData
());
}
/**
* 获得指定管理员的权限列表
*
* @param adminId 管理员编号
* @return 权限列表
*/
public
Set
<
String
>
listAdminPermission
(
Integer
adminId
)
{
// 获得管理员拥有的角色编号列表
CommonResult
<
Set
<
Integer
>>
listAdminRoleIdsResult
=
roleRpc
.
listAdminRoleIds
(
adminId
);
listAdminRoleIdsResult
.
checkError
();
if
(
CollectionUtils
.
isEmpty
(
listAdminRoleIdsResult
.
getData
()))
{
return
Collections
.
emptySet
();
}
// 获得角色拥有的资源列表
CommonResult
<
List
<
ResourceVO
>>
resourceVOResult
=
resourceRpc
.
listRoleResource
(
listAdminRoleIdsResult
.
getData
(),
null
);
resourceVOResult
.
checkError
();
return
CollectionUtils
.
convertSet
(
resourceVOResult
.
getData
(),
cn
.
iocoder
.
mall
.
systemservice
.
rpc
.
permission
.
vo
.
ResourceVO
::
getPermission
);
}
/**
* 获得管理员的菜单树
*
* @param adminId 管理员编号
* @return 菜单树
*/
public
List
<
PassportAdminMenuTreeNodeVO
>
treeAdminMenu
(
Integer
adminId
)
{
// 获得管理员拥有的角色编号列表
CommonResult
<
Set
<
Integer
>>
listAdminRoleIdsResult
=
roleRpc
.
listAdminRoleIds
(
adminId
);
listAdminRoleIdsResult
.
checkError
();
if
(
CollectionUtils
.
isEmpty
(
listAdminRoleIdsResult
.
getData
()))
{
return
Collections
.
emptyList
();
}
// 获得角色拥有的资源(菜单)列表
CommonResult
<
List
<
cn
.
iocoder
.
mall
.
systemservice
.
rpc
.
permission
.
vo
.
ResourceVO
>>
resourceVOResult
=
resourceRpc
.
listRoleResource
(
listAdminRoleIdsResult
.
getData
(),
ResourceTypeEnum
.
MENU
.
getType
());
resourceVOResult
.
checkError
();
// 构建菜单树
return
this
.
buildAdminMenuTree
(
resourceVOResult
.
getData
());
}
/**
* 构建菜单树
*
* @param resourceVOs 资源(都是菜单)列表
* @return 菜单树
*/
private
List
<
PassportAdminMenuTreeNodeVO
>
buildAdminMenuTree
(
List
<
cn
.
iocoder
.
mall
.
systemservice
.
rpc
.
permission
.
vo
.
ResourceVO
>
resourceVOs
)
{
List
<
ResourceTreeNodeVO
>
treeNodeVOS
=
ResourceManager
.
buildResourceTree
(
resourceVOs
);
// 虽然多了一层转换,但是可维护性更好。
return
ResourceConvert
.
INSTANCE
.
convert
(
treeNodeVOS
);
}
}
management-web-app/src/main/java/cn/iocoder/mall/managementweb/manager/permission/ResourceManager.java
浏览文件 @
2daea006
package
cn
.
iocoder
.
mall
.
managementweb
.
manager
.
permission
;
import
cn.iocoder.common.framework.util.CollectionUtils
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.mall.managementweb.controller.permission.dto.ResourceCreateDTO
;
import
cn.iocoder.mall.managementweb.controller.permission.dto.ResourceUpdateDTO
;
import
cn.iocoder.mall.managementweb.controller.permission.vo.AdminMenuTreeNodeVO
;
import
cn.iocoder.mall.managementweb.controller.permission.vo.ResourceTreeNodeVO
;
import
cn.iocoder.mall.managementweb.controller.permission.vo.ResourceVO
;
import
cn.iocoder.mall.managementweb.convert.permission.ResourceConvert
;
import
cn.iocoder.mall.systemservice.enums.permission.ResourceIdEnum
;
import
cn.iocoder.mall.systemservice.enums.permission.ResourceTypeEnum
;
import
cn.iocoder.mall.systemservice.rpc.permission.ResourceRpc
;
import
cn.iocoder.mall.systemservice.rpc.permission.RoleRpc
;
import
lombok.extern.slf4j.Slf4j
;
...
...
@@ -97,40 +94,7 @@ public class ResourceManager {
CommonResult
<
List
<
cn
.
iocoder
.
mall
.
systemservice
.
rpc
.
permission
.
vo
.
ResourceVO
>>
listResourceResult
=
resourceRpc
.
listResource
();
listResourceResult
.
checkError
();
// 构建菜单树
return
this
.
buildResourceTree
(
listResourceResult
.
getData
());
}
/**
* 获得管理员的菜单树
*
* @param adminId 管理员编号
* @return 菜单树
*/
public
List
<
AdminMenuTreeNodeVO
>
treeAdminMenu
(
Integer
adminId
)
{
// 获得管理员拥有的角色编号列表
CommonResult
<
Set
<
Integer
>>
listAdminRoleIdsResult
=
roleRpc
.
listAdminRoleIds
(
adminId
);
listAdminRoleIdsResult
.
checkError
();
if
(
CollectionUtils
.
isEmpty
(
listAdminRoleIdsResult
.
getData
()))
{
return
Collections
.
emptyList
();
}
// 获得角色拥有的资源(菜单)列表
CommonResult
<
List
<
cn
.
iocoder
.
mall
.
systemservice
.
rpc
.
permission
.
vo
.
ResourceVO
>>
resourceVOResult
=
resourceRpc
.
listRoleResource
(
listAdminRoleIdsResult
.
getData
(),
ResourceTypeEnum
.
MENU
.
getType
());
resourceVOResult
.
checkError
();
// 构建菜单树
return
this
.
buildAdminMenuTree
(
resourceVOResult
.
getData
());
}
/**
* 构建菜单树
*
* @param resourceVOs 资源(都是菜单)列表
* @return 菜单树
*/
private
List
<
AdminMenuTreeNodeVO
>
buildAdminMenuTree
(
List
<
cn
.
iocoder
.
mall
.
systemservice
.
rpc
.
permission
.
vo
.
ResourceVO
>
resourceVOs
)
{
List
<
ResourceTreeNodeVO
>
treeNodeVOS
=
this
.
buildResourceTree
(
resourceVOs
);
// 虽然多了一层转换,但是可维护性更好。
return
ResourceConvert
.
INSTANCE
.
convert
(
treeNodeVOS
);
return
buildResourceTree
(
listResourceResult
.
getData
());
}
/**
...
...
@@ -139,7 +103,7 @@ public class ResourceManager {
* @param resourceVOs 资源列表
* @return 资源树
*/
p
rivate
List
<
ResourceTreeNodeVO
>
buildResourceTree
(
List
<
cn
.
iocoder
.
mall
.
systemservice
.
rpc
.
permission
.
vo
.
ResourceVO
>
resourceVOs
)
{
p
ublic
static
List
<
ResourceTreeNodeVO
>
buildResourceTree
(
List
<
cn
.
iocoder
.
mall
.
systemservice
.
rpc
.
permission
.
vo
.
ResourceVO
>
resourceVOs
)
{
// 排序,保证菜单的有序性
resourceVOs
.
sort
(
Comparator
.
comparing
(
cn
.
iocoder
.
mall
.
systemservice
.
rpc
.
permission
.
vo
.
ResourceVO
::
getSort
));
// 构建菜单树
...
...
@@ -164,24 +128,4 @@ public class ResourceManager {
return
treeNodeMap
.
values
().
stream
().
filter
(
node
->
node
.
getPid
().
equals
(
ResourceIdEnum
.
ROOT
.
getId
())).
collect
(
Collectors
.
toList
());
}
/**
* 获得指定管理员的权限列表
*
* @param adminId 管理员编号
* @return 权限列表
*/
public
Set
<
String
>
listAdminPermission
(
Integer
adminId
)
{
// 获得管理员拥有的角色编号列表
CommonResult
<
Set
<
Integer
>>
listAdminRoleIdsResult
=
roleRpc
.
listAdminRoleIds
(
adminId
);
listAdminRoleIdsResult
.
checkError
();
if
(
CollectionUtils
.
isEmpty
(
listAdminRoleIdsResult
.
getData
()))
{
return
Collections
.
emptySet
();
}
// 获得角色拥有的资源列表
CommonResult
<
List
<
cn
.
iocoder
.
mall
.
systemservice
.
rpc
.
permission
.
vo
.
ResourceVO
>>
resourceVOResult
=
resourceRpc
.
listRoleResource
(
listAdminRoleIdsResult
.
getData
(),
null
);
resourceVOResult
.
checkError
();
return
CollectionUtils
.
convertSet
(
resourceVOResult
.
getData
(),
cn
.
iocoder
.
mall
.
systemservice
.
rpc
.
permission
.
vo
.
ResourceVO
::
getPermission
);
}
}
system-service-project/system-service-app/src/main/java/cn/iocoder/mall/systemservice/dal/mysql/dataobject/admin/AdminDO.java
浏览文件 @
2daea006
...
...
@@ -26,6 +26,10 @@ public class AdminDO extends BaseDO {
* 真实名字
*/
private
String
name
;
/**
* 头像
*/
private
String
avatar
;
/**
* 部门编号
*
...
...
system-service-project/system-service-app/src/main/java/cn/iocoder/mall/systemservice/service/permission/ResourceService.java
浏览文件 @
2daea006
...
...
@@ -217,10 +217,11 @@ public class ResourceService {
* @param resource 资源
*/
private
void
initResourceProperty
(
ResourceDO
resource
)
{
//
初始化资源为按钮类型时,无需 route 和 icon 属性
//
资源为按钮类型时,无需 route、icon、view 属性,进行置空
if
(
ResourceTypeEnum
.
BUTTON
.
getType
().
equals
(
resource
.
getType
()))
{
resource
.
setRoute
(
null
);
resource
.
setIcon
(
null
);
resource
.
setView
(
null
);
}
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论