Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
H
holmes
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
QA
holmes
Commits
5ba76bdb
Commit
5ba76bdb
authored
May 28, 2021
by
黎博
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update
parent
67cc15d7
Changes
25
Show whitespace changes
Inline
Side-by-side
Showing
25 changed files
with
408 additions
and
22 deletions
+408
-22
HttpLogAspect.java
src/main/java/cn/qg/holmes/aspect/HttpLogAspect.java
+2
-0
PermissionAspect.java
src/main/java/cn/qg/holmes/aspect/PermissionAspect.java
+73
-0
Logical.java
src/main/java/cn/qg/holmes/config/annotation/Logical.java
+5
-0
RequiresPermissions.java
...a/cn/qg/holmes/config/annotation/RequiresPermissions.java
+14
-0
LoginController.java
...in/java/cn/qg/holmes/controller/auth/LoginController.java
+16
-10
AutoProjectController.java
...a/cn/qg/holmes/controller/auto/AutoProjectController.java
+4
-0
UserInfoVo.java
src/main/java/cn/qg/holmes/entity/auth/UserInfoVo.java
+3
-3
UnauthorizedException.java
...in/java/cn/qg/holmes/exception/UnauthorizedException.java
+7
-0
LdapService.java
src/main/java/cn/qg/holmes/service/auth/LdapService.java
+1
-1
LoginService.java
src/main/java/cn/qg/holmes/service/auth/LoginService.java
+1
-1
PermissionService.java
...ain/java/cn/qg/holmes/service/auth/PermissionService.java
+7
-0
RolePermissionService.java
...java/cn/qg/holmes/service/auth/RolePermissionService.java
+12
-0
RoleService.java
src/main/java/cn/qg/holmes/service/auth/RoleService.java
+7
-0
TokenService.java
src/main/java/cn/qg/holmes/service/auth/TokenService.java
+12
-0
UserRoleService.java
src/main/java/cn/qg/holmes/service/auth/UserRoleService.java
+10
-0
UserService.java
src/main/java/cn/qg/holmes/service/auth/UserService.java
+4
-1
LdapServiceImpl.java
.../java/cn/qg/holmes/service/auth/impl/LdapServiceImpl.java
+2
-3
LoginServiceImpl.java
...java/cn/qg/holmes/service/auth/impl/LoginServiceImpl.java
+3
-3
PermissionServiceImpl.java
...cn/qg/holmes/service/auth/impl/PermissionServiceImpl.java
+11
-0
RolePermissionServiceImpl.java
...g/holmes/service/auth/impl/RolePermissionServiceImpl.java
+38
-0
RoleServiceImpl.java
.../java/cn/qg/holmes/service/auth/impl/RoleServiceImpl.java
+11
-0
TokenServiceImpl.java
...java/cn/qg/holmes/service/auth/impl/TokenServiceImpl.java
+77
-0
UserRoleServiceImpl.java
...a/cn/qg/holmes/service/auth/impl/UserRoleServiceImpl.java
+31
-0
UserServiceImpl.java
.../java/cn/qg/holmes/service/auth/impl/UserServiceImpl.java
+52
-0
UserMapper.xml
src/main/resources/mapper/auth/UserMapper.xml
+5
-0
No files found.
src/main/java/cn/qg/holmes/aspect/HttpLogAspect.java
View file @
5ba76bdb
...
...
@@ -10,6 +10,7 @@ import org.aspectj.lang.annotation.Before;
import
org.aspectj.lang.annotation.Pointcut
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.core.annotation.Order
;
import
org.springframework.stereotype.Component
;
import
org.springframework.web.context.request.RequestContextHolder
;
import
org.springframework.web.context.request.ServletRequestAttributes
;
...
...
@@ -24,6 +25,7 @@ import java.util.Map;
*/
@Aspect
@Component
@Order
(
1
)
public
class
HttpLogAspect
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
HttpLogAspect
.
class
);
...
...
src/main/java/cn/qg/holmes/aspect/PermissionAspect.java
0 → 100644
View file @
5ba76bdb
package
cn
.
qg
.
holmes
.
aspect
;
import
cn.qg.holmes.config.annotation.Logical
;
import
cn.qg.holmes.config.annotation.RequiresPermissions
;
import
cn.qg.holmes.entity.auth.UserInfoVo
;
import
cn.qg.holmes.exception.UnauthorizedException
;
import
cn.qg.holmes.service.auth.TokenService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.aspectj.lang.JoinPoint
;
import
org.aspectj.lang.Signature
;
import
org.aspectj.lang.annotation.Aspect
;
import
org.aspectj.lang.annotation.Before
;
import
org.aspectj.lang.reflect.MethodSignature
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.core.annotation.Order
;
import
org.springframework.stereotype.Component
;
import
org.springframework.web.context.request.RequestContextHolder
;
import
org.springframework.web.context.request.ServletRequestAttributes
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.Arrays
;
import
java.util.Set
;
@Aspect
@Slf4j
@Component
@Order
(
3
)
public
class
PermissionAspect
{
@Autowired
TokenService
tokenService
;
@Before
(
"@annotation(cn.qg.holmes.config.annotation.RequiresPermissions)"
)
public
void
before
(
JoinPoint
joinPoint
)
{
log
.
debug
(
"开始执行权限检查"
);
ServletRequestAttributes
attributes
=
(
ServletRequestAttributes
)
RequestContextHolder
.
getRequestAttributes
();
HttpServletRequest
request
=
attributes
.
getRequest
();
String
token
=
request
.
getHeader
(
"x-auth-token"
);
if
(
token
==
null
)
{
throw
new
UnauthorizedException
();
}
UserInfoVo
userInfoVo
=
tokenService
.
getUserInfoFromCache
(
token
);
Set
<
String
>
myCodes
=
userInfoVo
.
getPermissionCodeList
();
Signature
signature
=
joinPoint
.
getSignature
();
MethodSignature
methodSignature
=
(
MethodSignature
)
signature
;
RequiresPermissions
a
=
methodSignature
.
getMethod
().
getAnnotation
(
RequiresPermissions
.
class
);
String
[]
perms
=
a
.
value
();
log
.
debug
(
"校验权限code: {}"
,
Arrays
.
toString
(
perms
));
log
.
debug
(
"用户已有权限: {}"
,
myCodes
);
// 对比[要求]的code和[用户实际拥有]的code
if
(
a
.
logical
()
==
Logical
.
AND
)
{
// 必须包含要求的每个权限
for
(
String
perm:
perms
)
{
if
(!
myCodes
.
contains
(
perm
))
{
log
.
warn
(
"用户缺少权限 code : {}"
,
perm
);
throw
new
UnauthorizedException
();
//抛出[权限不足]的异常
}
}
}
else
{
// 多个权限只需包含其中一种即可
boolean
flag
=
false
;
for
(
String
perm
:
perms
)
{
if
(
myCodes
.
contains
(
perm
))
{
flag
=
true
;
break
;
}
}
if
(!
flag
)
{
log
.
warn
(
"用户缺少权限 code= : {} (任意有一种即可)"
,
Arrays
.
toString
(
perms
));
throw
new
UnauthorizedException
();
//抛出[权限不足]的异常
}
}
}
}
src/main/java/cn/qg/holmes/config/annotation/Logical.java
0 → 100644
View file @
5ba76bdb
package
cn
.
qg
.
holmes
.
config
.
annotation
;
public
enum
Logical
{
AND
,
OR
}
src/main/java/cn/qg/holmes/config/annotation/RequiresPermissions.java
0 → 100644
View file @
5ba76bdb
package
cn
.
qg
.
holmes
.
config
.
annotation
;
import
java.lang.annotation.ElementType
;
import
java.lang.annotation.Retention
;
import
java.lang.annotation.RetentionPolicy
;
import
java.lang.annotation.Target
;
@Target
({
ElementType
.
TYPE
,
ElementType
.
METHOD
})
@Retention
(
RetentionPolicy
.
RUNTIME
)
public
@interface
RequiresPermissions
{
String
[]
value
();
Logical
logical
()
default
Logical
.
AND
;
}
src/main/java/cn/qg/holmes/controller/
login
/LoginController.java
→
src/main/java/cn/qg/holmes/controller/
auth
/LoginController.java
View file @
5ba76bdb
package
cn
.
qg
.
holmes
.
controller
.
login
;
package
cn
.
qg
.
holmes
.
controller
.
auth
;
import
cn.qg.holmes.common.JsonResult
;
import
cn.qg.holmes.entity.auth.User
;
import
cn.qg.holmes.mapper.auth.UserMapper
;
import
cn.qg.holmes.service.ldap.LoginService
;
import
cn.qg.holmes.service.ldap.TokenService
;
import
cn.qg.holmes.service.ldap.UserService
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
cn.qg.holmes.service.auth.LoginService
;
import
cn.qg.holmes.service.auth.TokenService
;
import
cn.qg.holmes.service.auth.UserService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.util.DigestUtils
;
import
org.springframework.web.bind.annotation.CrossOrigin
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
sun.security.provider.MD5
;
import
java.nio.charset.StandardCharsets
;
import
java.util.HashMap
;
...
...
@@ -40,13 +37,22 @@ public class LoginController {
User
user
=
userService
.
getUserByUsername
(
username
);
// 用户不存在,则创建新用户
if
(
user
==
null
)
{
user
.
setUsername
(
username
);
user
.
setPassword
(
DigestUtils
.
md5DigestAsHex
(
password
.
getBytes
(
StandardCharsets
.
UTF_8
)));
userService
.
save
(
user
);
User
newUser
=
new
User
();
newUser
.
setUsername
(
username
);
newUser
.
setPassword
(
DigestUtils
.
md5DigestAsHex
(
password
.
getBytes
(
StandardCharsets
.
UTF_8
)));
userService
.
save
(
newUser
);
}
user
=
userService
.
getUserByUsername
(
username
);
String
token
=
tokenService
.
generateToken
(
user
.
getId
());
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"token"
,
token
);
map
.
put
(
"data"
,
userService
.
getUserInfoByUsername
(
username
));
return
JsonResult
.
buildSuccessResult
(
map
);
}
@PostMapping
(
"/logout"
)
public
JsonResult
logout
(
String
token
)
{
tokenService
.
invalidateToken
(
token
);
return
JsonResult
.
buildSuccessResult
(
"登出成功!"
,
true
);
}
}
src/main/java/cn/qg/holmes/controller/auto/AutoProjectController.java
View file @
5ba76bdb
package
cn
.
qg
.
holmes
.
controller
.
auto
;
import
cn.qg.holmes.common.JsonResult
;
import
cn.qg.holmes.config.annotation.RequiresPermissions
;
import
cn.qg.holmes.entity.auto.AutoProject
;
import
cn.qg.holmes.service.auto.AutoProjectService
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
...
...
@@ -45,6 +46,7 @@ public class AutoProjectController {
* @param autoProject 项目实体
* @return
*/
@RequiresPermissions
(
"project:add"
)
@PostMapping
(
"/add"
)
public
JsonResult
autoProjectAdd
(
@RequestBody
AutoProject
autoProject
)
{
// 判断项目是否已存在
...
...
@@ -62,6 +64,7 @@ public class AutoProjectController {
* @param autoProject 项目实体
* @return
*/
@RequiresPermissions
(
"project:edit"
)
@PostMapping
(
"/modify"
)
public
JsonResult
autoProjectModify
(
@RequestBody
AutoProject
autoProject
)
{
if
(
autoProjectService
.
getById
(
autoProject
.
getId
())
==
null
)
{
...
...
@@ -75,6 +78,7 @@ public class AutoProjectController {
* 删除项目
* @param projectId 项目id
*/
@RequiresPermissions
(
"project:del"
)
@GetMapping
(
"/delete"
)
public
JsonResult
autoProjectDelete
(
@RequestParam
Integer
projectId
)
{
if
(
autoProjectService
.
getById
(
projectId
)
==
null
)
{
...
...
src/main/java/cn/qg/holmes/entity/auth/
SessionUserInf
o.java
→
src/main/java/cn/qg/holmes/entity/auth/
UserInfoV
o.java
View file @
5ba76bdb
...
...
@@ -6,10 +6,10 @@ import java.util.List;
import
java.util.Set
;
@Data
public
class
SessionUserInf
o
{
public
class
UserInfoV
o
{
private
Integer
userId
;
private
String
username
;
private
List
<
Integer
>
roleIds
;
private
Set
<
String
>
menuList
;
private
Set
<
String
>
permissionList
;
//
private Set<String> menuList;
private
Set
<
String
>
permission
Code
List
;
}
src/main/java/cn/qg/holmes/exception/UnauthorizedException.java
0 → 100644
View file @
5ba76bdb
package
cn
.
qg
.
holmes
.
exception
;
public
class
UnauthorizedException
extends
RuntimeException
{
public
UnauthorizedException
()
{
super
(
"用户无此接口权限"
);
}
}
src/main/java/cn/qg/holmes/service/
ldap
/LdapService.java
→
src/main/java/cn/qg/holmes/service/
auth
/LdapService.java
View file @
5ba76bdb
package
cn
.
qg
.
holmes
.
service
.
ldap
;
package
cn
.
qg
.
holmes
.
service
.
auth
;
public
interface
LdapService
{
...
...
src/main/java/cn/qg/holmes/service/
ldap
/LoginService.java
→
src/main/java/cn/qg/holmes/service/
auth
/LoginService.java
View file @
5ba76bdb
package
cn
.
qg
.
holmes
.
service
.
ldap
;
package
cn
.
qg
.
holmes
.
service
.
auth
;
public
interface
LoginService
{
...
...
src/main/java/cn/qg/holmes/service/auth/PermissionService.java
0 → 100644
View file @
5ba76bdb
package
cn
.
qg
.
holmes
.
service
.
auth
;
import
cn.qg.holmes.entity.auth.Permission
;
import
com.baomidou.mybatisplus.extension.service.IService
;
public
interface
PermissionService
extends
IService
<
Permission
>
{
}
src/main/java/cn/qg/holmes/service/auth/RolePermissionService.java
0 → 100644
View file @
5ba76bdb
package
cn
.
qg
.
holmes
.
service
.
auth
;
import
cn.qg.holmes.entity.auth.RolePermission
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
java.util.List
;
import
java.util.Set
;
public
interface
RolePermissionService
extends
IService
<
RolePermission
>
{
Set
<
String
>
getPermissionSetForRoleIds
(
List
<
Integer
>
roleIds
);
}
src/main/java/cn/qg/holmes/service/auth/RoleService.java
0 → 100644
View file @
5ba76bdb
package
cn
.
qg
.
holmes
.
service
.
auth
;
import
cn.qg.holmes.entity.auth.Role
;
import
com.baomidou.mybatisplus.extension.service.IService
;
public
interface
RoleService
extends
IService
<
Role
>
{
}
src/main/java/cn/qg/holmes/service/
ldap
/TokenService.java
→
src/main/java/cn/qg/holmes/service/
auth
/TokenService.java
View file @
5ba76bdb
package
cn
.
qg
.
holmes
.
service
.
ldap
;
package
cn
.
qg
.
holmes
.
service
.
auth
;
import
cn.qg.holmes.entity.auth.
SessionUserInf
o
;
import
cn.qg.holmes.entity.auth.
UserInfoV
o
;
public
interface
TokenService
{
String
generateToken
(
Integer
userId
);
SessionUserInfo
getUserInfoFromCache
(
String
token
);
UserInfoVo
getUserInfoFromCache
(
String
token
);
void
invalidateToken
(
String
token
);
}
src/main/java/cn/qg/holmes/service/auth/UserRoleService.java
0 → 100644
View file @
5ba76bdb
package
cn
.
qg
.
holmes
.
service
.
auth
;
import
cn.qg.holmes.entity.auth.UserRole
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
java.util.List
;
public
interface
UserRoleService
extends
IService
<
UserRole
>
{
List
<
Integer
>
getRoleIdsByUserId
(
Integer
userId
);
}
src/main/java/cn/qg/holmes/service/
ldap
/UserService.java
→
src/main/java/cn/qg/holmes/service/
auth
/UserService.java
View file @
5ba76bdb
package
cn
.
qg
.
holmes
.
service
.
ldap
;
package
cn
.
qg
.
holmes
.
service
.
auth
;
import
cn.qg.holmes.entity.auth.User
;
import
cn.qg.holmes.entity.auth.UserInfoVo
;
import
com.baomidou.mybatisplus.extension.service.IService
;
public
interface
UserService
extends
IService
<
User
>
{
User
getUserByUsername
(
String
username
);
UserInfoVo
getUserInfoByUsername
(
String
username
);
}
src/main/java/cn/qg/holmes/service/
ldap
/impl/LdapServiceImpl.java
→
src/main/java/cn/qg/holmes/service/
auth
/impl/LdapServiceImpl.java
View file @
5ba76bdb
package
cn
.
qg
.
holmes
.
service
.
ldap
.
impl
;
package
cn
.
qg
.
holmes
.
service
.
auth
.
impl
;
import
cn.qg.holmes.service.
ldap
.LdapService
;
import
cn.qg.holmes.service.
auth
.LdapService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.exception.ExceptionUtils
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.boot.CommandLineRunner
;
import
org.springframework.stereotype.Service
;
...
...
src/main/java/cn/qg/holmes/service/
ldap
/impl/LoginServiceImpl.java
→
src/main/java/cn/qg/holmes/service/
auth
/impl/LoginServiceImpl.java
View file @
5ba76bdb
package
cn
.
qg
.
holmes
.
service
.
ldap
.
impl
;
package
cn
.
qg
.
holmes
.
service
.
auth
.
impl
;
import
cn.qg.holmes.service.
ldap
.LdapService
;
import
cn.qg.holmes.service.
ldap
.LoginService
;
import
cn.qg.holmes.service.
auth
.LdapService
;
import
cn.qg.holmes.service.
auth
.LoginService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
...
...
src/main/java/cn/qg/holmes/service/auth/impl/PermissionServiceImpl.java
0 → 100644
View file @
5ba76bdb
package
cn
.
qg
.
holmes
.
service
.
auth
.
impl
;
import
cn.qg.holmes.entity.auth.Permission
;
import
cn.qg.holmes.mapper.auth.PermissionMapper
;
import
cn.qg.holmes.service.auth.PermissionService
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
org.springframework.stereotype.Service
;
@Service
public
class
PermissionServiceImpl
extends
ServiceImpl
<
PermissionMapper
,
Permission
>
implements
PermissionService
{
}
src/main/java/cn/qg/holmes/service/auth/impl/RolePermissionServiceImpl.java
0 → 100644
View file @
5ba76bdb
package
cn
.
qg
.
holmes
.
service
.
auth
.
impl
;
import
cn.qg.holmes.entity.auth.RolePermission
;
import
cn.qg.holmes.mapper.auth.PermissionMapper
;
import
cn.qg.holmes.mapper.auth.RolePermissionMapper
;
import
cn.qg.holmes.service.auth.RolePermissionService
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Set
;
@Service
public
class
RolePermissionServiceImpl
extends
ServiceImpl
<
RolePermissionMapper
,
RolePermission
>
implements
RolePermissionService
{
@Autowired
RolePermissionMapper
rolePermissionMapper
;
@Autowired
PermissionMapper
permissionMapper
;
@Override
public
Set
<
String
>
getPermissionSetForRoleIds
(
List
<
Integer
>
roleIds
)
{
Set
<
String
>
permissionCodeSet
=
new
HashSet
<>();
for
(
Integer
roleId:
roleIds
)
{
QueryWrapper
<
RolePermission
>
rolePermissionQueryWrapper
=
new
QueryWrapper
<>();
rolePermissionQueryWrapper
.
eq
(
"role_id"
,
roleId
);
List
<
RolePermission
>
rolePermissionList
=
rolePermissionMapper
.
selectList
(
rolePermissionQueryWrapper
);
rolePermissionList
.
forEach
(
rolePermission
->
{
permissionCodeSet
.
add
(
permissionMapper
.
selectById
(
rolePermission
.
getPermissionId
()).
getPermissionCode
());
});
}
return
permissionCodeSet
;
}
}
src/main/java/cn/qg/holmes/service/auth/impl/RoleServiceImpl.java
0 → 100644
View file @
5ba76bdb
package
cn
.
qg
.
holmes
.
service
.
auth
.
impl
;
import
cn.qg.holmes.entity.auth.Role
;
import
cn.qg.holmes.mapper.auth.RoleMapper
;
import
cn.qg.holmes.service.auth.RoleService
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
org.springframework.stereotype.Service
;
@Service
public
class
RoleServiceImpl
extends
ServiceImpl
<
RoleMapper
,
Role
>
implements
RoleService
{
}
src/main/java/cn/qg/holmes/service/
ldap
/impl/TokenServiceImpl.java
→
src/main/java/cn/qg/holmes/service/
auth
/impl/TokenServiceImpl.java
View file @
5ba76bdb
package
cn
.
qg
.
holmes
.
service
.
ldap
.
impl
;
package
cn
.
qg
.
holmes
.
service
.
auth
.
impl
;
import
cn.qg.holmes.entity.auth.SessionUserInfo
;
import
cn.qg.holmes.entity.auth.User
;
import
cn.qg.holmes.entity.auth.UserInfoVo
;
import
cn.qg.holmes.mapper.auth.UserMapper
;
import
cn.qg.holmes.service.ldap.TokenService
;
import
cn.qg.holmes.service.auth.TokenService
;
import
cn.qg.holmes.service.auth.UserService
;
import
cn.qg.holmes.utils.RedisUtils
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
javax.naming.ContextNotEmptyException
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.UUID
;
import
java.util.*
;
@Slf4j
@Service
...
...
@@ -27,6 +27,9 @@ public class TokenServiceImpl implements TokenService {
@Autowired
UserMapper
userMapper
;
@Autowired
UserService
userService
;
/**
* 生成token并存放到redis
* @param userId 用户id
...
...
@@ -35,12 +38,10 @@ public class TokenServiceImpl implements TokenService {
@Override
public
String
generateToken
(
Integer
userId
)
{
String
token
=
UUID
.
randomUUID
().
toString
().
replace
(
"-"
,
""
).
substring
(
0
,
20
);
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
User
user
=
userMapper
.
selectById
(
userId
);
map
.
put
(
"userId"
,
userId
);
map
.
put
(
"username"
,
user
.
getUsername
());
UserInfoVo
userInfoVo
=
userService
.
getUserInfoByUsername
(
user
.
getUsername
());
//设置用户信息缓存
redisUtils
.
set
(
TOKEN_PREFIX
+
token
,
map
);
redisUtils
.
set
(
TOKEN_PREFIX
+
token
,
userInfoVo
);
return
token
;
}
...
...
@@ -50,11 +51,27 @@ public class TokenServiceImpl implements TokenService {
* @return
*/
@Override
public
SessionUserInf
o
getUserInfoFromCache
(
String
token
)
{
public
UserInfoV
o
getUserInfoFromCache
(
String
token
)
{
if
(
StringUtils
.
isEmpty
(
token
))
{
return
null
;
}
SessionUserInfo
sessionUserInfo
=
(
SessionUserInfo
)
redisUtils
.
get
(
token
);
return
sessionUserInfo
;
UserInfoVo
userInfoVo
=
new
UserInfoVo
();
Map
redisValue
=
(
Map
)
redisUtils
.
get
(
TOKEN_PREFIX
+
token
);
userInfoVo
.
setUserId
((
Integer
)
redisValue
.
get
(
"userId"
));
userInfoVo
.
setUsername
(
redisValue
.
get
(
"username"
).
toString
());
userInfoVo
.
setRoleIds
((
List
<
Integer
>)
redisValue
.
get
(
"roleIds"
));
Set
<
String
>
permissionCodeSet
=
new
HashSet
<>();
List
<
String
>
permissionCodeList
=
(
List
<
String
>)
redisValue
.
get
(
"permissionCodeList"
);
permissionCodeList
.
forEach
(
permissionCode
->
{
permissionCodeSet
.
add
(
permissionCode
);
});
userInfoVo
.
setPermissionCodeList
(
permissionCodeSet
);
return
userInfoVo
;
}
@Override
public
void
invalidateToken
(
String
token
)
{
redisUtils
.
del
(
TOKEN_PREFIX
+
token
);
}
}
src/main/java/cn/qg/holmes/service/auth/impl/UserRoleServiceImpl.java
0 → 100644
View file @
5ba76bdb
package
cn
.
qg
.
holmes
.
service
.
auth
.
impl
;
import
cn.qg.holmes.entity.auth.UserRole
;
import
cn.qg.holmes.mapper.auth.UserRoleMapper
;
import
cn.qg.holmes.service.auth.UserRoleService
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.List
;
@Service
public
class
UserRoleServiceImpl
extends
ServiceImpl
<
UserRoleMapper
,
UserRole
>
implements
UserRoleService
{
@Autowired
UserRoleMapper
userRoleMapper
;
@Override
public
List
<
Integer
>
getRoleIdsByUserId
(
Integer
userId
)
{
QueryWrapper
<
UserRole
>
userRoleQueryWrapper
=
new
QueryWrapper
<>();
userRoleQueryWrapper
.
eq
(
"user_id"
,
userId
);
List
<
UserRole
>
userRoleList
=
userRoleMapper
.
selectList
(
userRoleQueryWrapper
);
List
<
Integer
>
roleIds
=
new
ArrayList
<>();
userRoleList
.
forEach
(
userRole
->
{
roleIds
.
add
(
userRole
.
getRoleId
());
});
return
roleIds
;
}
}
src/main/java/cn/qg/holmes/service/
ldap
/impl/UserServiceImpl.java
→
src/main/java/cn/qg/holmes/service/
auth
/impl/UserServiceImpl.java
View file @
5ba76bdb
package
cn
.
qg
.
holmes
.
service
.
ldap
.
impl
;
package
cn
.
qg
.
holmes
.
service
.
auth
.
impl
;
import
cn.qg.holmes.entity.auth.User
;
import
cn.qg.holmes.entity.auth.UserInfoVo
;
import
cn.qg.holmes.mapper.auth.UserMapper
;
import
cn.qg.holmes.service.ldap.UserService
;
import
cn.qg.holmes.mapper.auth.UserRoleMapper
;
import
cn.qg.holmes.service.auth.RolePermissionService
;
import
cn.qg.holmes.service.auth.UserRoleService
;
import
cn.qg.holmes.service.auth.UserService
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Set
;
@Service
public
class
UserServiceImpl
extends
ServiceImpl
<
UserMapper
,
User
>
implements
UserService
{
@Autowired
UserMapper
userMapper
;
@Autowired
UserRoleService
userRoleService
;
@Autowired
RolePermissionService
rolePermissionService
;
@Override
public
User
getUserByUsername
(
String
username
)
{
QueryWrapper
<
User
>
userQueryWrapper
=
new
QueryWrapper
<>();
userQueryWrapper
.
eq
(
"username"
,
username
);
return
userMapper
.
selectOne
(
userQueryWrapper
);
}
@Override
public
UserInfoVo
getUserInfoByUsername
(
String
username
)
{
UserInfoVo
userInfoVo
=
new
UserInfoVo
();
userInfoVo
.
setUsername
(
username
);
QueryWrapper
<
User
>
userQueryWrapper
=
new
QueryWrapper
<>();
userQueryWrapper
.
eq
(
"username"
,
username
);
User
user
=
userMapper
.
selectOne
(
userQueryWrapper
);
return
user
;
userInfoVo
.
setUserId
(
user
.
getId
());
List
<
Integer
>
roleIds
=
userRoleService
.
getRoleIdsByUserId
(
user
.
getId
());
userInfoVo
.
setRoleIds
(
roleIds
);
Set
<
String
>
permissionCodeSet
=
rolePermissionService
.
getPermissionSetForRoleIds
(
roleIds
);
userInfoVo
.
setPermissionCodeList
(
permissionCodeSet
);
return
userInfoVo
;
}
}
src/main/resources/mapper/auth/UserMapper.xml
0 → 100644
View file @
5ba76bdb
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper
namespace=
"cn.qg.holmes.mapper.auth.UserMapper"
>
</mapper>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment