Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
jinli gu
Eladmin
Commits
8c4fd97e
Commit
8c4fd97e
authored
Jan 20, 2019
by
郑杰
Browse files
v1.5 beta版发布,详细查看发行版说明
parent
b066bb99
Changes
198
Hide whitespace changes
Inline
Side-by-side
src/main/java/me/zhengjie/quartz/service/QuartzJobService.java
→
eladmin-system/
src/main/java/me/zhengjie/
modules/
quartz/service/QuartzJobService.java
View file @
8c4fd97e
package
me.zhengjie.quartz.service
;
package
me.zhengjie.
modules.
quartz.service
;
import
me.zhengjie.quartz.domain.QuartzJob
;
import
me.zhengjie.
modules.
quartz.domain.QuartzJob
;
import
org.springframework.cache.annotation.CacheConfig
;
import
org.springframework.cache.annotation.CacheEvict
;
import
org.springframework.cache.annotation.Cacheable
;
/**
* @author
郑杰
* @date 201
8/10/05 19:17:38
* @author
jie
* @date 201
9-01-07
*/
@CacheConfig
(
cacheNames
=
"quartzJob"
)
public
interface
QuartzJobService
{
...
...
src/main/java/me/zhengjie/quartz/service/impl/QuartzJobServiceImpl.java
→
eladmin-system/
src/main/java/me/zhengjie/
modules/
quartz/service/impl/QuartzJobServiceImpl.java
View file @
8c4fd97e
package
me.zhengjie.quartz.service.impl
;
package
me.zhengjie.
modules.
quartz.service.impl
;
import
me.zhengjie.
common.
exception.BadRequestException
;
import
me.zhengjie.
common.utils.ValidationUtil
;
import
me.zhengjie.
quartz.domain.QuartzJob
;
import
me.zhengjie.
quartz.repository.QuartzJobRepository
;
import
me.zhengjie.
quartz.service.QuartzJobServic
e
;
import
me.zhengjie.
quartz.utils.QuartzManage
;
import
me.zhengjie.exception.BadRequestException
;
import
me.zhengjie.
modules.quartz.domain.QuartzJob
;
import
me.zhengjie.
modules.quartz.repository.QuartzJobRepository
;
import
me.zhengjie.
modules.quartz.service.QuartzJobService
;
import
me.zhengjie.
modules.quartz.utils.QuartzManag
e
;
import
me.zhengjie.
utils.ValidationUtil
;
import
org.quartz.CronExpression
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Propagation
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.Optional
;
/**
...
...
src/main/java/me/zhengjie/quartz/service/query/QuartzJobQueryService.java
→
eladmin-system/
src/main/java/me/zhengjie/
modules/
quartz/service/query/QuartzJobQueryService.java
View file @
8c4fd97e
package
me.zhengjie.quartz.service.query
;
package
me.zhengjie.
modules.
quartz.service.query
;
import
me.zhengjie.
common.utils.PageUtil
;
import
me.zhengjie.
quartz.domain.QuartzJob
;
import
me.zhengjie.
quartz.repository.QuartzJobRepository
;
import
me.zhengjie.
modules.quartz.domain.QuartzJob
;
import
me.zhengjie.
modules.quartz.repository.QuartzJobRepository
;
import
me.zhengjie.
utils.PageUtil
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.cache.annotation.CacheConfig
;
import
org.springframework.cache.annotation.Cacheable
;
...
...
src/main/java/me/zhengjie/quartz/service/query/QuartzLogQueryService.java
→
eladmin-system/
src/main/java/me/zhengjie/
modules/
quartz/service/query/QuartzLogQueryService.java
View file @
8c4fd97e
package
me.zhengjie.quartz.service.query
;
package
me.zhengjie.
modules.
quartz.service.query
;
import
me.zhengjie.
common.utils.PageUtil
;
import
me.zhengjie.
quartz.domain.QuartzLog
;
import
me.zhengjie.
quartz.repository.QuartzLogRepository
;
import
me.zhengjie.
modules.quartz.domain.QuartzLog
;
import
me.zhengjie.
modules.quartz.repository.QuartzLogRepository
;
import
me.zhengjie.
utils.PageUtil
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.jpa.domain.Specification
;
...
...
src/main/java/me/zhengjie/quartz/task/TestTask.java
→
eladmin-system/
src/main/java/me/zhengjie/
modules/
quartz/task/TestTask.java
View file @
8c4fd97e
package
me.zhengjie.quartz.task
;
package
me.zhengjie.
modules.
quartz.task
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Component
;
...
...
src/main/java/me/zhengjie/quartz/task/VisitsTask.java
→
eladmin-system/
src/main/java/me/zhengjie/
modules/
quartz/task/VisitsTask.java
View file @
8c4fd97e
package
me.zhengjie.quartz.task
;
package
me.zhengjie.
modules.
quartz.task
;
import
me.zhengjie.monitor.service.VisitsService
;
import
me.zhengjie.
modules.
monitor.service.VisitsService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
...
...
src/main/java/me/zhengjie/quartz/utils/ExecutionJob.java
→
eladmin-system/
src/main/java/me/zhengjie/
modules/
quartz/utils/ExecutionJob.java
View file @
8c4fd97e
package
me.zhengjie.quartz.utils
;
package
me.zhengjie.
modules.
quartz.utils
;
import
me.zhengjie.
common.utils.SpringContextHolder
;
import
me.zhengjie.
common.utils.ThrowableUtil
;
import
me.zhengjie.
quartz.domain.QuartzJob
;
import
me.zhengjie.
quartz.domain.QuartzLog
;
import
me.zhengjie.
quartz.repository.QuartzLogRepository
;
import
me.zhengjie.
quartz.service.QuartzJobService
;
import
me.zhengjie.
modules.quartz.domain.QuartzJob
;
import
me.zhengjie.
modules.quartz.domain.QuartzLog
;
import
me.zhengjie.
modules.quartz.repository.QuartzLogRepository
;
import
me.zhengjie.
modules.quartz.service.QuartzJobService
;
import
me.zhengjie.
utils.SpringContextHolder
;
import
me.zhengjie.
utils.ThrowableUtil
;
import
org.quartz.JobExecutionContext
;
import
org.quartz.Scheduler
;
import
org.slf4j.Logger
;
...
...
src/main/java/me/zhengjie/quartz/utils/QuartzManage.java
→
eladmin-system/
src/main/java/me/zhengjie/
modules/
quartz/utils/QuartzManage.java
View file @
8c4fd97e
package
me.zhengjie.quartz.utils
;
package
me.zhengjie.
modules.
quartz.utils
;
import
lombok.extern.slf4j.Slf4j
;
import
me.zhengjie.
common.
exception.BadRequestException
;
import
me.zhengjie.quartz.domain.QuartzJob
;
import
me.zhengjie.exception.BadRequestException
;
import
me.zhengjie.
modules.
quartz.domain.QuartzJob
;
import
org.quartz.*
;
import
org.quartz.impl.triggers.CronTriggerImpl
;
import
org.springframework.stereotype.Component
;
...
...
@@ -50,7 +50,7 @@ public class QuartzManage {
}
}
catch
(
Exception
e
){
log
.
error
(
"创建定时任务失败"
,
e
);
throw
new
BadRequestException
(
e
.
getMessage
()
);
throw
new
BadRequestException
(
"创建定时任务失败"
);
}
}
...
...
@@ -63,6 +63,11 @@ public class QuartzManage {
try
{
TriggerKey
triggerKey
=
TriggerKey
.
triggerKey
(
JOB_NAME
+
quartzJob
.
getId
());
CronTrigger
trigger
=
(
CronTrigger
)
scheduler
.
getTrigger
(
triggerKey
);
// 如果不存在则创建一个定时任务
if
(
trigger
==
null
){
addJob
(
quartzJob
);
trigger
=
(
CronTrigger
)
scheduler
.
getTrigger
(
triggerKey
);
}
CronScheduleBuilder
scheduleBuilder
=
CronScheduleBuilder
.
cronSchedule
(
quartzJob
.
getCronExpression
());
trigger
=
trigger
.
getTriggerBuilder
().
withIdentity
(
triggerKey
).
withSchedule
(
scheduleBuilder
).
build
();
//重置启动时间
...
...
@@ -75,7 +80,7 @@ public class QuartzManage {
}
}
catch
(
Exception
e
){
log
.
error
(
"更新定时任务失败"
,
e
);
throw
new
BadRequestException
(
e
.
getMessage
()
);
throw
new
BadRequestException
(
"更新定时任务失败"
);
}
}
...
...
@@ -91,7 +96,7 @@ public class QuartzManage {
scheduler
.
deleteJob
(
jobKey
);
}
catch
(
Exception
e
){
log
.
error
(
"删除定时任务失败"
,
e
);
throw
new
BadRequestException
(
e
.
getMessage
()
);
throw
new
BadRequestException
(
"删除定时任务失败"
);
}
}
...
...
@@ -112,7 +117,7 @@ public class QuartzManage {
scheduler
.
resumeJob
(
jobKey
);
}
catch
(
Exception
e
){
log
.
error
(
"恢复定时任务失败"
,
e
);
throw
new
BadRequestException
(
e
.
getMessage
()
);
throw
new
BadRequestException
(
"恢复定时任务失败"
);
}
}
...
...
@@ -135,7 +140,7 @@ public class QuartzManage {
scheduler
.
triggerJob
(
jobKey
,
dataMap
);
}
catch
(
Exception
e
){
log
.
error
(
"定时任务执行失败"
,
e
);
throw
new
BadRequestException
(
e
.
getMessage
()
);
throw
new
BadRequestException
(
"定时任务执行失败"
);
}
}
...
...
@@ -150,7 +155,7 @@ public class QuartzManage {
scheduler
.
pauseJob
(
jobKey
);
}
catch
(
Exception
e
){
log
.
error
(
"定时任务暂停失败"
,
e
);
throw
new
BadRequestException
(
e
.
getMessage
()
);
throw
new
BadRequestException
(
"定时任务暂停失败"
);
}
}
}
src/main/java/me/zhengjie/quartz/utils/QuartzRunnable.java
→
eladmin-system/
src/main/java/me/zhengjie/
modules/
quartz/utils/QuartzRunnable.java
View file @
8c4fd97e
package
me.zhengjie.quartz.utils
;
package
me.zhengjie.
modules.
quartz.utils
;
import
lombok.extern.slf4j.Slf4j
;
import
me.zhengjie.
common.
utils.SpringContextHolder
;
import
me.zhengjie.utils.SpringContextHolder
;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.util.ReflectionUtils
;
import
java.lang.reflect.Method
;
...
...
src/main/java/me/zhengjie/
core
/config/
Web
SecurityConfig.java
→
eladmin-system/
src/main/java/me/zhengjie/
modules/security
/config/SecurityConfig.java
View file @
8c4fd97e
package
me.zhengjie.
core
.config
;
package
me.zhengjie.
modules.security
.config
;
import
me.zhengjie.
core
.security.JwtAuthenticationEntryPoint
;
import
me.zhengjie.
core
.security.JwtAuthorizationTokenFilter
;
import
me.zhengjie.
core
.service.JwtUserDetailsService
;
import
me.zhengjie.
modules.security
.security.JwtAuthenticationEntryPoint
;
import
me.zhengjie.
modules.security
.security.JwtAuthorizationTokenFilter
;
import
me.zhengjie.
modules.security
.service.JwtUserDetailsService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Bean
;
...
...
@@ -23,7 +23,7 @@ import org.springframework.security.web.authentication.UsernamePasswordAuthentic
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity
(
prePostEnabled
=
true
)
public
class
Web
SecurityConfig
extends
WebSecurityConfigurerAdapter
{
public
class
SecurityConfig
extends
WebSecurityConfigurerAdapter
{
@Autowired
private
JwtAuthenticationEntryPoint
unauthorizedHandler
;
...
...
@@ -63,6 +63,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected
void
configure
(
HttpSecurity
httpSecurity
)
throws
Exception
{
httpSecurity
// 禁用 CSRF
...
...
src/main/java/me/zhengjie/
core
/rest/AuthenticationController.java
→
eladmin-system/
src/main/java/me/zhengjie/
modules/security
/rest/AuthenticationController.java
View file @
8c4fd97e
package
me.zhengjie.
core
.rest
;
package
me.zhengjie.
modules.security
.rest
;
import
lombok.extern.slf4j.Slf4j
;
import
me.zhengjie.common.aop.log.Log
;
import
me.zhengjie.core.security.AuthenticationToken
;
import
me.zhengjie.core.security.AuthorizationUser
;
import
me.zhengjie.core.utils.JwtTokenUtil
;
import
me.zhengjie.core.security.JwtUser
;
import
me.zhengjie.core.utils.EncryptUtils
;
import
me.zhengjie.aop.log.Log
;
import
me.zhengjie.modules.security.security.AuthenticationToken
;
import
me.zhengjie.modules.security.security.AuthorizationUser
;
import
me.zhengjie.modules.security.security.JwtUser
;
import
me.zhengjie.utils.EncryptUtils
;
import
me.zhengjie.modules.security.utils.JwtTokenUtil
;
import
me.zhengjie.utils.SecurityContextHolder
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.security.authentication.AccountExpiredException
;
import
org.springframework.security.authentication.AuthenticationManager
;
import
org.springframework.security.core.userdetails.UserDetails
;
import
org.springframework.security.core.userdetails.UserDetailsService
;
import
org.springframework.web.bind.annotation.*
;
import
javax.servlet.http.HttpServletRequest
;
/**
* @author jie
...
...
@@ -31,9 +30,6 @@ public class AuthenticationController {
@Value
(
"${jwt.header}"
)
private
String
tokenHeader
;
@Autowired
private
AuthenticationManager
authenticationManager
;
@Autowired
private
JwtTokenUtil
jwtTokenUtil
;
...
...
@@ -46,9 +42,9 @@ public class AuthenticationController {
* @param authorizationUser
* @return
*/
@Log
(
description
=
"用户登录"
)
@Log
(
"用户登录"
)
@PostMapping
(
value
=
"${jwt.auth.path}"
)
public
ResponseEntity
<?>
authenticationL
ogin
(
@RequestBody
AuthorizationUser
authorizationUser
){
public
ResponseEntity
<?>
l
ogin
(
@RequestBody
AuthorizationUser
authorizationUser
){
final
UserDetails
userDetails
=
userDetailsService
.
loadUserByUsername
(
authorizationUser
.
getUsername
());
...
...
@@ -69,12 +65,12 @@ public class AuthenticationController {
/**
* 获取用户信息
* @param request
* @return
*/
@GetMapping
(
value
=
"${jwt.auth.account}"
)
public
ResponseEntity
getUserInfo
(
HttpServletRequest
request
){
JwtUser
jwtUser
=
(
JwtUser
)
userDetailsService
.
loadUserByUsername
(
jwtTokenUtil
.
getUserName
(
request
));
public
ResponseEntity
getUserInfo
(){
UserDetails
userDetails
=
SecurityContextHolder
.
getUserDetails
();
JwtUser
jwtUser
=
(
JwtUser
)
userDetailsService
.
loadUserByUsername
(
userDetails
.
getUsername
());
return
ResponseEntity
.
ok
(
jwtUser
);
}
}
src/main/java/me/zhengjie/
core
/security/AuthenticationToken.java
→
eladmin-system/
src/main/java/me/zhengjie/
modules/security
/security/AuthenticationToken.java
View file @
8c4fd97e
package
me.zhengjie.
core
.security
;
package
me.zhengjie.
modules.security
.security
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
java.io.Serializable
;
/**
...
...
src/main/java/me/zhengjie/
core
/security/AuthorizationUser.java
→
eladmin-system/
src/main/java/me/zhengjie/
modules/security
/security/AuthorizationUser.java
View file @
8c4fd97e
package
me.zhengjie.
core
.security
;
package
me.zhengjie.
modules.security
.security
;
import
lombok.Getter
;
import
lombok.Setter
;
...
...
src/main/java/me/zhengjie/
core
/security/JwtAuthenticationEntryPoint.java
→
eladmin-system/
src/main/java/me/zhengjie/
modules/security
/security/JwtAuthenticationEntryPoint.java
View file @
8c4fd97e
package
me.zhengjie.
core
.security
;
package
me.zhengjie.
modules.security
.security
;
import
org.springframework.security.core.AuthenticationException
;
import
org.springframework.security.web.AuthenticationEntryPoint
;
...
...
src/main/java/me/zhengjie/
core
/security/JwtAuthorizationTokenFilter.java
→
eladmin-system/
src/main/java/me/zhengjie/
modules/security
/security/JwtAuthorizationTokenFilter.java
View file @
8c4fd97e
package
me.zhengjie.
core
.security
;
package
me.zhengjie.
modules.security
.security
;
import
io.jsonwebtoken.ExpiredJwtException
;
import
me.zhengjie.core.utils.JwtTokenUtil
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
lombok.extern.slf4j.Slf4j
;
import
me.zhengjie.modules.security.utils.JwtTokenUtil
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.security.authentication.UsernamePasswordAuthenticationToken
;
...
...
@@ -19,11 +18,10 @@ import javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.IOException
;
@Slf4j
@Component
public
class
JwtAuthorizationTokenFilter
extends
OncePerRequestFilter
{
private
final
Logger
logger
=
LoggerFactory
.
getLogger
(
this
.
getClass
());
private
final
UserDetailsService
userDetailsService
;
private
final
JwtTokenUtil
jwtTokenUtil
;
private
final
String
tokenHeader
;
...
...
@@ -36,7 +34,7 @@ public class JwtAuthorizationTokenFilter extends OncePerRequestFilter {
@Override
protected
void
doFilterInternal
(
HttpServletRequest
request
,
HttpServletResponse
response
,
FilterChain
chain
)
throws
ServletException
,
IOException
{
log
ger
.
debug
(
"processing authentication for '{}'"
,
request
.
getRequestURL
());
log
.
debug
(
"processing authentication for '{}'"
,
request
.
getRequestURL
());
final
String
requestHeader
=
request
.
getHeader
(
this
.
tokenHeader
);
...
...
@@ -47,14 +45,14 @@ public class JwtAuthorizationTokenFilter extends OncePerRequestFilter {
try
{
username
=
jwtTokenUtil
.
getUsernameFromToken
(
authToken
);
}
catch
(
ExpiredJwtException
e
)
{
log
ger
.
error
(
e
.
getMessage
());
log
.
error
(
e
.
getMessage
());
}
}
log
ger
.
debug
(
"checking authentication for user '{}'"
,
username
);
log
.
debug
(
"checking authentication for user '{}'"
,
username
);
if
(
username
!=
null
&&
SecurityContextHolder
.
getContext
().
getAuthentication
()
==
null
)
{
log
ger
.
debug
(
"security context was null, so authorizating user"
);
log
.
debug
(
"security context was null, so authorizating user"
);
// It is not compelling necessary to load the use details from the database. You could also store the information
// in the token and read it from it. It's up to you ;)
...
...
@@ -65,7 +63,7 @@ public class JwtAuthorizationTokenFilter extends OncePerRequestFilter {
if
(
jwtTokenUtil
.
validateToken
(
authToken
,
userDetails
))
{
UsernamePasswordAuthenticationToken
authentication
=
new
UsernamePasswordAuthenticationToken
(
userDetails
,
null
,
userDetails
.
getAuthorities
());
authentication
.
setDetails
(
new
WebAuthenticationDetailsSource
().
buildDetails
(
request
));
log
ger
.
info
(
"authorizated user '{}', setting security context"
,
username
);
log
.
info
(
"authorizated user '{}', setting security context"
,
username
);
SecurityContextHolder
.
getContext
().
setAuthentication
(
authentication
);
}
}
...
...
src/main/java/me/zhengjie/
core
/security/JwtUser.java
→
eladmin-system/
src/main/java/me/zhengjie/
modules/security
/security/JwtUser.java
View file @
8c4fd97e
package
me.zhengjie.
core
.security
;
package
me.zhengjie.
modules.security
.security
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
lombok.AllArgsConstructor
;
...
...
@@ -7,7 +7,10 @@ import org.springframework.security.core.GrantedAuthority;
import
org.springframework.security.core.userdetails.UserDetails
;
import
java.sql.Timestamp
;
import
java.util.*
;
import
java.util.Collection
;
import
java.util.Date
;
import
java.util.LinkedHashSet
;
import
java.util.Set
;
/**
* @author jie
...
...
src/main/java/me/zhengjie/
core
/service/JwtUserDetailsService.java
→
eladmin-system/
src/main/java/me/zhengjie/
modules/security
/service/JwtUserDetailsService.java
View file @
8c4fd97e
package
me.zhengjie.
core
.service
;
package
me.zhengjie.
modules.security
.service
;
import
me.zhengjie.common.exception.EntityNotFoundException
;
import
me.zhengjie.common.utils.ValidationUtil
;
import
me.zhengjie.core.security.JwtUser
;
import
me.zhengjie.system.domain.Permission
;
import
me.zhengjie.system.domain.Role
;
import
me.zhengjie.system.domain.User
;
import
me.zhengjie.system.repository.PermissionRepository
;
import
me.zhengjie.system.repository.UserRepository
;
import
me.zhengjie.modules.system.domain.Permission
;
import
me.zhengjie.modules.system.domain.Role
;
import
me.zhengjie.modules.system.domain.User
;
import
me.zhengjie.exception.EntityNotFoundException
;
import
me.zhengjie.modules.system.repository.UserRepository
;
import
me.zhengjie.modules.security.security.JwtUser
;
import
me.zhengjie.utils.ValidationUtil
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.cache.annotation.CacheConfig
;
import
org.springframework.cache.annotation.Cacheable
;
...
...
@@ -18,7 +17,6 @@ import org.springframework.security.core.userdetails.UserDetailsService;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Propagation
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.ArrayList
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Set
;
...
...
@@ -35,9 +33,6 @@ public class JwtUserDetailsService implements UserDetailsService {
@Autowired
private
UserRepository
userRepository
;
@Autowired
private
PermissionRepository
permissionRepository
;
@Override
public
UserDetails
loadUserByUsername
(
String
username
){
...
...
@@ -62,20 +57,20 @@ public class JwtUserDetailsService implements UserDetailsService {
user
.
getPassword
(),
user
.
getAvatar
(),
user
.
getEmail
(),
mapToGrantedAuthorities
(
user
.
getRoles
()
,
permissionRepository
),
mapToGrantedAuthorities
(
user
.
getRoles
()),
user
.
getEnabled
(),
user
.
getCreateTime
(),
user
.
getLastPasswordResetTime
()
);
}
private
static
List
<
GrantedAuthority
>
mapToGrantedAuthorities
(
Set
<
Role
>
roles
,
PermissionRepository
permissionRepository
)
{
private
static
List
<
GrantedAuthority
>
mapToGrantedAuthorities
(
Set
<
Role
>
roles
)
{
Set
<
Permission
>
permissions
=
new
HashSet
<>();
for
(
Role
role
:
roles
)
{
Set
<
Role
>
roleSet
=
new
HashSet
<>();
roleSet
.
add
(
role
);
permissions
.
addAll
(
permissionRepository
.
findByRoles
(
roleSet
));
permissions
.
addAll
(
role
.
getPermissions
(
));
}
return
permissions
.
stream
()
...
...
src/main/java/me/zhengjie/
core
/utils/JwtTokenUtil.java
→
eladmin-system/
src/main/java/me/zhengjie/
modules/security
/utils/JwtTokenUtil.java
View file @
8c4fd97e
package
me.zhengjie.
core
.utils
;
package
me.zhengjie.
modules.security
.utils
;
import
io.jsonwebtoken.*
;
import
io.jsonwebtoken.impl.DefaultClock
;
import
me.zhengjie.
common.
exception.BadRequestException
;
import
me.zhengjie.
core
.security.JwtUser
;
import
me.zhengjie.exception.BadRequestException
;
import
me.zhengjie.
modules.security
.security.JwtUser
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.security.core.userdetails.UserDetails
;
...
...
@@ -111,31 +111,14 @@ public class JwtTokenUtil implements Serializable {
JwtUser
user
=
(
JwtUser
)
userDetails
;
final
String
username
=
getUsernameFromToken
(
token
);
final
Date
created
=
getIssuedAtDateFromToken
(
token
);
//final Date expiration = getExpirationDateFromToken(token);
// final Date expiration = getExpirationDateFromToken(token);
// 如果token存在,且token创建日期 > 最后修改密码的日期 则代表token有效
return
(
username
.
equals
(
user
.
getUsername
())
&&
!
isTokenExpired
(
token
)
&&
!
isCreatedBeforeLastPasswordReset
(
created
,
user
.
getLastPasswordResetDate
())
);
}
public
String
getUserName
(
HttpServletRequest
request
){
String
authToken
=
request
.
getHeader
(
tokenHeader
);
if
(
StringUtils
.
isEmpty
(
authToken
)||
authToken
.
length
()<
7
){
throw
new
BadRequestException
(
HttpStatus
.
FORBIDDEN
,
"Token令牌无效"
);
}
final
String
token
=
authToken
.
substring
(
7
);
String
username
=
null
;
try
{
username
=
getUsernameFromToken
(
token
);
}
catch
(
ExpiredJwtException
e
){
throw
new
BadRequestException
(
HttpStatus
.
UNAUTHORIZED
,
"Token令牌已过期"
);
}
return
username
;
}
private
Date
calculateExpirationDate
(
Date
createdDate
)
{
return
new
Date
(
createdDate
.
getTime
()
+
expiration
);
...
...
src/main/java/me/zhengjie/system/domain/Menu.java
→
eladmin-system/
src/main/java/me/zhengjie/
modules/
system/domain/Menu.java
View file @
8c4fd97e
package
me.zhengjie.system.domain
;
package
me.zhengjie.
modules.
system.domain
;
import
lombok.Getter
;
import
lombok.Setter
;
...
...
@@ -44,6 +44,7 @@ public class Menu {
/**
* 是否为外链 true/false
*/
@Column
(
name
=
"i_frame"
)
private
Boolean
iFrame
;
@ManyToMany
...
...
@@ -51,5 +52,6 @@ public class Menu {
private
Set
<
Role
>
roles
;
@CreationTimestamp
@Column
(
name
=
"create_time"
)
private
Timestamp
createTime
;
}
src/main/java/me/zhengjie/system/domain/Permission.java
→
eladmin-system/
src/main/java/me/zhengjie/
modules/
system/domain/Permission.java
View file @
8c4fd97e
package
me.zhengjie.system.domain
;
package
me.zhengjie.
modules.
system.domain
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
lombok.Getter
;
import
lombok.Setter
;
import
org.hibernate.annotations.CreationTimestamp
;
import
javax.persistence.*
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
...
...
@@ -43,6 +44,7 @@ public class Permission implements Serializable{
private
Set
<
Role
>
roles
;
@CreationTimestamp
@Column
(
name
=
"create_time"
)
private
Timestamp
createTime
;
@Override
...
...
Prev
1
2
3
4
5
6
7
8
9
10
Next
Write
Preview
Supports
Markdown
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