Optimize code
This commit is contained in:
@@ -6,7 +6,6 @@ import org.springframework.beans.factory.annotation.Value
|
|||||||
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer
|
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer
|
||||||
import org.springframework.boot.jackson.JsonComponent
|
import org.springframework.boot.jackson.JsonComponent
|
||||||
import org.springframework.context.annotation.Bean
|
import org.springframework.context.annotation.Bean
|
||||||
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder
|
|
||||||
import java.text.DateFormat
|
import java.text.DateFormat
|
||||||
import java.text.SimpleDateFormat
|
import java.text.SimpleDateFormat
|
||||||
import java.time.LocalDateTime
|
import java.time.LocalDateTime
|
||||||
@@ -41,18 +40,18 @@ class DateFormatConfig {
|
|||||||
lateinit var timeZone: TimeZone
|
lateinit var timeZone: TimeZone
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
fun jackson2ObjectMapperBuilder() = Jackson2ObjectMapperBuilderCustomizer { builder: Jackson2ObjectMapperBuilder ->
|
fun jackson2ObjectMapperBuilder() = Jackson2ObjectMapperBuilderCustomizer {
|
||||||
val tz = timeZone
|
val tz = timeZone
|
||||||
val df: DateFormat = SimpleDateFormat(dateFormat)
|
val df: DateFormat = SimpleDateFormat(dateFormat)
|
||||||
df.timeZone = tz
|
df.timeZone = tz
|
||||||
builder.failOnEmptyBeans(false).failOnUnknownProperties(false)
|
it.failOnEmptyBeans(false).failOnUnknownProperties(false)
|
||||||
.featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS).dateFormat(df)
|
.featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS).dateFormat(df)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
fun jackson2ObjectMapperBuilderCustomizer() =
|
fun jackson2ObjectMapperBuilderCustomizer() =
|
||||||
Jackson2ObjectMapperBuilderCustomizer { builder: Jackson2ObjectMapperBuilder ->
|
Jackson2ObjectMapperBuilderCustomizer {
|
||||||
builder.serializerByType(
|
it.serializerByType(
|
||||||
LocalDateTime::class.java, LocalDateTimeSerializer(DateTimeFormatter.ofPattern(dateFormat))
|
LocalDateTime::class.java, LocalDateTimeSerializer(DateTimeFormatter.ofPattern(dateFormat))
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import org.springframework.security.authentication.AuthenticationManager
|
|||||||
import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration
|
import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration
|
||||||
import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity
|
import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity
|
||||||
import org.springframework.security.config.annotation.web.builders.HttpSecurity
|
import org.springframework.security.config.annotation.web.builders.HttpSecurity
|
||||||
import org.springframework.security.config.annotation.web.configurers.*
|
|
||||||
import org.springframework.security.config.http.SessionCreationPolicy
|
import org.springframework.security.config.http.SessionCreationPolicy
|
||||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
|
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
|
||||||
import org.springframework.security.web.SecurityFilterChain
|
import org.springframework.security.web.SecurityFilterChain
|
||||||
@@ -56,15 +55,17 @@ class SecurityConfig(
|
|||||||
@Bean
|
@Bean
|
||||||
fun securityFilterChain(httpSecurity: HttpSecurity): SecurityFilterChain = httpSecurity
|
fun securityFilterChain(httpSecurity: HttpSecurity): SecurityFilterChain = httpSecurity
|
||||||
// Disable CSRF
|
// Disable CSRF
|
||||||
.csrf { csrfConfigurer: CsrfConfigurer<HttpSecurity> -> csrfConfigurer.disable() }
|
.csrf {
|
||||||
|
it.disable()
|
||||||
|
}
|
||||||
// Do not get SecurityContent by Session
|
// Do not get SecurityContent by Session
|
||||||
.sessionManagement { sessionManagementConfigurer: SessionManagementConfigurer<HttpSecurity?> ->
|
.sessionManagement {
|
||||||
sessionManagementConfigurer.sessionCreationPolicy(
|
it.sessionCreationPolicy(
|
||||||
SessionCreationPolicy.STATELESS
|
SessionCreationPolicy.STATELESS
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
.authorizeHttpRequests { authorizeHttpRequests: AuthorizeHttpRequestsConfigurer<HttpSecurity>.AuthorizationManagerRequestMatcherRegistry ->
|
.authorizeHttpRequests {
|
||||||
authorizeHttpRequests
|
it
|
||||||
// Allow anonymous access
|
// Allow anonymous access
|
||||||
.requestMatchers(
|
.requestMatchers(
|
||||||
"/error/thrown",
|
"/error/thrown",
|
||||||
@@ -84,19 +85,21 @@ class SecurityConfig(
|
|||||||
.anyRequest().authenticated()
|
.anyRequest().authenticated()
|
||||||
}
|
}
|
||||||
|
|
||||||
.logout { logoutConfigurer: LogoutConfigurer<HttpSecurity> -> logoutConfigurer.disable() }
|
.logout {
|
||||||
|
it.disable()
|
||||||
|
}
|
||||||
|
|
||||||
.exceptionHandling { exceptionHandlingConfigurer: ExceptionHandlingConfigurer<HttpSecurity?> ->
|
.exceptionHandling {
|
||||||
exceptionHandlingConfigurer.authenticationEntryPoint(
|
it.authenticationEntryPoint(
|
||||||
authenticationEntryPointHandler
|
authenticationEntryPointHandler
|
||||||
)
|
)
|
||||||
exceptionHandlingConfigurer.accessDeniedHandler(
|
it.accessDeniedHandler(
|
||||||
accessDeniedHandler
|
accessDeniedHandler
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
.cors { cors: CorsConfigurer<HttpSecurity?> ->
|
.cors {
|
||||||
cors.configurationSource(
|
it.configurationSource(
|
||||||
corsConfigurationSource()
|
corsConfigurationSource()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ object GroupConverter {
|
|||||||
enable = group.enable == 1,
|
enable = group.enable == 1,
|
||||||
createTime = group.createTime,
|
createTime = group.createTime,
|
||||||
updateTime = group.updateTime,
|
updateTime = group.updateTime,
|
||||||
roles = group.roles?.map { RoleConverter.roleToRoleVo(it) }
|
roles = group.roles?.map(RoleConverter::roleToRoleVo)
|
||||||
)
|
)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -71,9 +71,7 @@ object GroupConverter {
|
|||||||
pages = groupPage.pages,
|
pages = groupPage.pages,
|
||||||
size = groupPage.size,
|
size = groupPage.size,
|
||||||
current = groupPage.current,
|
current = groupPage.current,
|
||||||
records = groupPage.records.map {
|
records = groupPage.records.map(::groupToGroupWithRoleVo)
|
||||||
groupToGroupWithRoleVo(it)
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -21,9 +21,9 @@ object PowerConverter {
|
|||||||
* @see PowerSetVo
|
* @see PowerSetVo
|
||||||
*/
|
*/
|
||||||
fun powerSetToPowerSetVo(powerSet: PowerSet) = PowerSetVo(
|
fun powerSetToPowerSetVo(powerSet: PowerSet) = PowerSetVo(
|
||||||
moduleList = powerSet.moduleList?.map { ModuleConverter.moduleToModuleVo(it) },
|
moduleList = powerSet.moduleList?.map(ModuleConverter::moduleToModuleVo),
|
||||||
menuList = powerSet.menuList?.map { MenuConverter.menuToMenuVo(it) },
|
menuList = powerSet.menuList?.map(MenuConverter::menuToMenuVo),
|
||||||
funcList = powerSet.funcList?.map { FuncConverter.funcToFuncVo(it) },
|
funcList = powerSet.funcList?.map(FuncConverter::funcToFuncVo),
|
||||||
operationList = powerSet.operationList?.map { OperationConverter.operationToOperationVo(it) }
|
operationList = powerSet.operationList?.map(OperationConverter::operationToOperationVo)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -51,10 +51,10 @@ object RoleConverter {
|
|||||||
enable = role.enable == 1,
|
enable = role.enable == 1,
|
||||||
createTime = role.createTime,
|
createTime = role.createTime,
|
||||||
updateTime = role.updateTime,
|
updateTime = role.updateTime,
|
||||||
modules = role.modules?.map { ModuleConverter.moduleToModuleVo(it) },
|
modules = role.modules?.map(ModuleConverter::moduleToModuleVo),
|
||||||
menus = role.menus?.map { MenuConverter.menuToMenuVo(it) },
|
menus = role.menus?.map(MenuConverter::menuToMenuVo),
|
||||||
funcs = role.funcs?.map { FuncConverter.funcToFuncVo(it) },
|
funcs = role.funcs?.map(FuncConverter::funcToFuncVo),
|
||||||
operations = role.operations?.map { OperationConverter.operationToOperationVo(it) }
|
operations = role.operations?.map(OperationConverter::operationToOperationVo)
|
||||||
)
|
)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -74,9 +74,7 @@ object RoleConverter {
|
|||||||
pages = rolePage.pages,
|
pages = rolePage.pages,
|
||||||
size = rolePage.size,
|
size = rolePage.size,
|
||||||
current = rolePage.current,
|
current = rolePage.current,
|
||||||
records = rolePage.records.map {
|
records = rolePage.records.map(::roleToRoleWithPowerVo)
|
||||||
roleToRoleWithPowerVo(it)
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -45,21 +45,11 @@ object UserConverter {
|
|||||||
lastLoginIp = user.lastLoginIp,
|
lastLoginIp = user.lastLoginIp,
|
||||||
createTime = user.createTime,
|
createTime = user.createTime,
|
||||||
updateTime = user.updateTime,
|
updateTime = user.updateTime,
|
||||||
userInfo = user.userInfo?.let {
|
userInfo = user.userInfo?.let(UserInfoConverter::userInfoToUserInfoVo),
|
||||||
UserInfoConverter.userInfoToUserInfoVo(it)
|
modules = user.modules?.map(ModuleConverter::moduleToModuleVo),
|
||||||
},
|
menus = user.menus?.map(MenuConverter::menuToMenuVo),
|
||||||
modules = user.modules?.map {
|
funcs = user.funcs?.map(FuncConverter::funcToFuncVo),
|
||||||
ModuleConverter.moduleToModuleVo(it)
|
operations = user.operations?.map(OperationConverter::operationToOperationVo)
|
||||||
},
|
|
||||||
menus = user.menus?.map {
|
|
||||||
MenuConverter.menuToMenuVo(it)
|
|
||||||
},
|
|
||||||
funcs = user.funcs?.map {
|
|
||||||
FuncConverter.funcToFuncVo(it)
|
|
||||||
},
|
|
||||||
operations = user.operations?.map {
|
|
||||||
OperationConverter.operationToOperationVo(it)
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -86,15 +76,9 @@ object UserConverter {
|
|||||||
lastLoginIp = user.lastLoginIp,
|
lastLoginIp = user.lastLoginIp,
|
||||||
createTime = user.createTime,
|
createTime = user.createTime,
|
||||||
updateTime = user.updateTime,
|
updateTime = user.updateTime,
|
||||||
userInfo = user.userInfo?.let {
|
userInfo = user.userInfo?.let(UserInfoConverter::userInfoToUserInfoVo),
|
||||||
UserInfoConverter.userInfoToUserInfoVo(it)
|
roles = user.roles?.map(RoleConverter::roleToRoleVo),
|
||||||
},
|
groups = user.groups?.map(GroupConverter::groupToGroupVo)
|
||||||
roles = user.roles?.map {
|
|
||||||
RoleConverter.roleToRoleVo(it)
|
|
||||||
},
|
|
||||||
groups = user.groups?.map {
|
|
||||||
GroupConverter.groupToGroupVo(it)
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -121,9 +105,7 @@ object UserConverter {
|
|||||||
lastLoginIp = user.lastLoginIp,
|
lastLoginIp = user.lastLoginIp,
|
||||||
createTime = user.createTime,
|
createTime = user.createTime,
|
||||||
updateTime = user.updateTime,
|
updateTime = user.updateTime,
|
||||||
userInfo = user.userInfo?.let {
|
userInfo = user.userInfo?.let(UserInfoConverter::userInfoToUserInfoVo)
|
||||||
UserInfoConverter.userInfoToUserInfoVo(it)
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -151,15 +133,9 @@ object UserConverter {
|
|||||||
lastLoginIp = user.lastLoginIp,
|
lastLoginIp = user.lastLoginIp,
|
||||||
createTime = user.createTime,
|
createTime = user.createTime,
|
||||||
updateTime = user.updateTime,
|
updateTime = user.updateTime,
|
||||||
userInfo = user.userInfo?.let {
|
userInfo = user.userInfo?.let(UserInfoConverter::userInfoToUserInfoVo),
|
||||||
UserInfoConverter.userInfoToUserInfoVo(it)
|
roles = user.roles?.map(RoleConverter::roleToRoleVo),
|
||||||
},
|
groups = user.groups?.map(GroupConverter::groupToGroupVo)
|
||||||
roles = user.roles?.map {
|
|
||||||
RoleConverter.roleToRoleVo(it)
|
|
||||||
},
|
|
||||||
groups = user.groups?.map {
|
|
||||||
GroupConverter.groupToGroupVo(it)
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -232,8 +208,6 @@ object UserConverter {
|
|||||||
pages = userPage.pages,
|
pages = userPage.pages,
|
||||||
size = userPage.size,
|
size = userPage.size,
|
||||||
current = userPage.current,
|
current = userPage.current,
|
||||||
records = userPage.records.map {
|
records = userPage.records.map(::userToUserWithRoleInfoVo)
|
||||||
userToUserWithRoleInfoVo(it)
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -60,6 +60,6 @@ object ToolConverter {
|
|||||||
pages = toolPage.pages,
|
pages = toolPage.pages,
|
||||||
size = toolPage.size,
|
size = toolPage.size,
|
||||||
current = toolPage.current,
|
current = toolPage.current,
|
||||||
records = toolPage.records.map(this::toolToToolVo)
|
records = toolPage.records.map(::toolToToolVo)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -45,7 +45,7 @@ class JwtAuthenticationTokenFilter(private val redisUtil: RedisUtil) : OncePerRe
|
|||||||
}
|
}
|
||||||
|
|
||||||
val loginUser = redisUtil.getObject<LoginUser>(redisKeys.first())
|
val loginUser = redisUtil.getObject<LoginUser>(redisKeys.first())
|
||||||
loginUser ?: let { throw TokenHasExpiredException() }
|
loginUser ?: throw TokenHasExpiredException()
|
||||||
|
|
||||||
redisUtil.setExpire(redisKeys.first(), SecurityProperties.redisTtl, SecurityProperties.redisTtlUnit)
|
redisUtil.setExpire(redisKeys.first(), SecurityProperties.redisTtl, SecurityProperties.redisTtlUnit)
|
||||||
|
|
||||||
|
|||||||
@@ -59,12 +59,12 @@ class AvatarServiceImpl : IAvatarService {
|
|||||||
if (avatarBaseParam == null || avatarBaseParam.colors.isNullOrEmpty())
|
if (avatarBaseParam == null || avatarBaseParam.colors.isNullOrEmpty())
|
||||||
TriangleAvatar.newAvatarBuilder()
|
TriangleAvatar.newAvatarBuilder()
|
||||||
else TriangleAvatar.newAvatarBuilder(
|
else TriangleAvatar.newAvatarBuilder(
|
||||||
*avatarBaseParam.colors!!.map(this::decodeColor).toTypedArray()
|
*avatarBaseParam.colors!!.map(::decodeColor).toTypedArray()
|
||||||
)
|
)
|
||||||
).apply {
|
).apply {
|
||||||
avatarBaseParam?.size?.let(this::size)
|
avatarBaseParam?.size?.let(::size)
|
||||||
avatarBaseParam?.margin?.let(this::margin)
|
avatarBaseParam?.margin?.let(::margin)
|
||||||
avatarBaseParam?.padding?.let(this::padding)
|
avatarBaseParam?.padding?.let(::padding)
|
||||||
avatarBaseParam?.background?.let { layers(ColorPaintBackgroundLayer(decodeColor(it))) }
|
avatarBaseParam?.background?.let { layers(ColorPaintBackgroundLayer(decodeColor(it))) }
|
||||||
}.build()
|
}.build()
|
||||||
|
|
||||||
@@ -79,12 +79,12 @@ class AvatarServiceImpl : IAvatarService {
|
|||||||
if (avatarBaseParam == null || avatarBaseParam.colors.isNullOrEmpty())
|
if (avatarBaseParam == null || avatarBaseParam.colors.isNullOrEmpty())
|
||||||
SquareAvatar.newAvatarBuilder()
|
SquareAvatar.newAvatarBuilder()
|
||||||
else SquareAvatar.newAvatarBuilder(
|
else SquareAvatar.newAvatarBuilder(
|
||||||
*avatarBaseParam.colors!!.map(this::decodeColor).toTypedArray()
|
*avatarBaseParam.colors!!.map(::decodeColor).toTypedArray()
|
||||||
)
|
)
|
||||||
).apply {
|
).apply {
|
||||||
avatarBaseParam?.size?.let(this::size)
|
avatarBaseParam?.size?.let(::size)
|
||||||
avatarBaseParam?.margin?.let(this::margin)
|
avatarBaseParam?.margin?.let(::margin)
|
||||||
avatarBaseParam?.padding?.let(this::padding)
|
avatarBaseParam?.padding?.let(::padding)
|
||||||
avatarBaseParam?.background?.let { layers(ColorPaintBackgroundLayer(decodeColor(it))) }
|
avatarBaseParam?.background?.let { layers(ColorPaintBackgroundLayer(decodeColor(it))) }
|
||||||
}.build()
|
}.build()
|
||||||
|
|
||||||
@@ -96,9 +96,9 @@ class AvatarServiceImpl : IAvatarService {
|
|||||||
|
|
||||||
override fun identicon(avatarBaseParam: AvatarBaseParam?): ByteArray {
|
override fun identicon(avatarBaseParam: AvatarBaseParam?): ByteArray {
|
||||||
val avatar = IdenticonAvatar.newAvatarBuilder().apply {
|
val avatar = IdenticonAvatar.newAvatarBuilder().apply {
|
||||||
avatarBaseParam?.size?.let(this::size)
|
avatarBaseParam?.size?.let(::size)
|
||||||
avatarBaseParam?.margin?.let(this::margin)
|
avatarBaseParam?.margin?.let(::margin)
|
||||||
avatarBaseParam?.padding?.let(this::padding)
|
avatarBaseParam?.padding?.let(::padding)
|
||||||
if (avatarBaseParam != null && !avatarBaseParam.colors.isNullOrEmpty()) {
|
if (avatarBaseParam != null && !avatarBaseParam.colors.isNullOrEmpty()) {
|
||||||
color(decodeColor(avatarBaseParam.colors!!.random()))
|
color(decodeColor(avatarBaseParam.colors!!.random()))
|
||||||
}
|
}
|
||||||
@@ -114,9 +114,9 @@ class AvatarServiceImpl : IAvatarService {
|
|||||||
override fun github(avatarGitHubParam: AvatarGitHubParam?): ByteArray {
|
override fun github(avatarGitHubParam: AvatarGitHubParam?): ByteArray {
|
||||||
val avatar = (avatarGitHubParam?.let { GitHubAvatar.newAvatarBuilder(it.elementSize, it.precision) }
|
val avatar = (avatarGitHubParam?.let { GitHubAvatar.newAvatarBuilder(it.elementSize, it.precision) }
|
||||||
?: let { GitHubAvatar.newAvatarBuilder(400, 5) }).apply {
|
?: let { GitHubAvatar.newAvatarBuilder(400, 5) }).apply {
|
||||||
avatarGitHubParam?.size?.let(this::size)
|
avatarGitHubParam?.size?.let(::size)
|
||||||
avatarGitHubParam?.margin?.let(this::margin)
|
avatarGitHubParam?.margin?.let(::margin)
|
||||||
avatarGitHubParam?.padding?.let(this::padding)
|
avatarGitHubParam?.padding?.let(::padding)
|
||||||
if (avatarGitHubParam != null && !avatarGitHubParam.colors.isNullOrEmpty()) {
|
if (avatarGitHubParam != null && !avatarGitHubParam.colors.isNullOrEmpty()) {
|
||||||
color(decodeColor(avatarGitHubParam.colors!!.random()))
|
color(decodeColor(avatarGitHubParam.colors!!.random()))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -152,7 +152,7 @@ class AuthenticationServiceImpl(
|
|||||||
verifyCaptcha(forgetParam.captchaCode!!)
|
verifyCaptcha(forgetParam.captchaCode!!)
|
||||||
|
|
||||||
val user = userService.getUserWithPowerByAccount(forgetParam.email!!)
|
val user = userService.getUserWithPowerByAccount(forgetParam.email!!)
|
||||||
user ?: let { throw UserNotFoundException() }
|
user ?: throw UserNotFoundException()
|
||||||
|
|
||||||
user.forget?.let {
|
user.forget?.let {
|
||||||
if (LocalDateTime.ofInstant(Instant.ofEpochMilli(it.split("-").first().toLong()), ZoneOffset.UTC)
|
if (LocalDateTime.ofInstant(Instant.ofEpochMilli(it.split("-").first().toLong()), ZoneOffset.UTC)
|
||||||
@@ -210,21 +210,19 @@ class AuthenticationServiceImpl(
|
|||||||
|
|
||||||
@EventLogRecord(EventLog.Event.LOGOUT)
|
@EventLogRecord(EventLog.Event.LOGOUT)
|
||||||
override fun logout(token: String): Boolean {
|
override fun logout(token: String): Boolean {
|
||||||
val loginUser = WebUtil.getLoginUser() ?: let { throw TokenHasExpiredException() }
|
val loginUser = WebUtil.getLoginUser() ?: throw TokenHasExpiredException()
|
||||||
|
|
||||||
return redisUtil.delObject("${SecurityProperties.jwtIssuer}_login_${loginUser.user.id}:" + token)
|
return redisUtil.delObject("${SecurityProperties.jwtIssuer}_login_${loginUser.user.id}:" + token)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun renewToken(token: String): TokenVo {
|
override fun renewToken(token: String): TokenVo {
|
||||||
val loginUser = WebUtil.getLoginUser() ?: let { throw TokenHasExpiredException() }
|
val loginUser = WebUtil.getLoginUser() ?: throw TokenHasExpiredException()
|
||||||
|
|
||||||
val oldRedisKey = "${SecurityProperties.jwtIssuer}_login_${loginUser.user.id}:" + token
|
val oldRedisKey = "${SecurityProperties.jwtIssuer}_login_${loginUser.user.id}:" + token
|
||||||
redisUtil.delObject(oldRedisKey)
|
redisUtil.delObject(oldRedisKey)
|
||||||
val jwt = JwtUtil.createJwt(WebUtil.getLoginUserId().toString())
|
val jwt = JwtUtil.createJwt(WebUtil.getLoginUserId().toString())
|
||||||
|
|
||||||
jwt ?: let {
|
jwt ?: throw RuntimeException("Login failed")
|
||||||
throw RuntimeException("Login failed")
|
|
||||||
}
|
|
||||||
|
|
||||||
val redisKey = "${SecurityProperties.jwtIssuer}_login_${loginUser.user.id}:" + jwt
|
val redisKey = "${SecurityProperties.jwtIssuer}_login_${loginUser.user.id}:" + jwt
|
||||||
redisUtil.setObject(
|
redisUtil.setObject(
|
||||||
@@ -308,9 +306,7 @@ class AuthenticationServiceImpl(
|
|||||||
val usernamePasswordAuthenticationToken =
|
val usernamePasswordAuthenticationToken =
|
||||||
UsernamePasswordAuthenticationToken(account, password)
|
UsernamePasswordAuthenticationToken(account, password)
|
||||||
val authentication = authenticationManager.authenticate(usernamePasswordAuthenticationToken)
|
val authentication = authenticationManager.authenticate(usernamePasswordAuthenticationToken)
|
||||||
authentication ?: let {
|
authentication ?: throw RuntimeException("Login failed")
|
||||||
throw RuntimeException("Login failed")
|
|
||||||
}
|
|
||||||
|
|
||||||
val loginUser = authentication.principal as LoginUser
|
val loginUser = authentication.principal as LoginUser
|
||||||
loginUser.user.password = ""
|
loginUser.user.password = ""
|
||||||
@@ -326,9 +322,7 @@ class AuthenticationServiceImpl(
|
|||||||
val userId = loginUser.user.id.toString()
|
val userId = loginUser.user.id.toString()
|
||||||
val jwt = JwtUtil.createJwt(userId)
|
val jwt = JwtUtil.createJwt(userId)
|
||||||
|
|
||||||
jwt ?: let {
|
jwt ?: throw RuntimeException("Login failed")
|
||||||
throw RuntimeException("Login failed")
|
|
||||||
}
|
|
||||||
|
|
||||||
val redisKey = "${SecurityProperties.jwtIssuer}_login_${userId}:" + jwt
|
val redisKey = "${SecurityProperties.jwtIssuer}_login_${userId}:" + jwt
|
||||||
redisUtil.setObject(redisKey, loginUser, SecurityProperties.redisTtl, SecurityProperties.redisTtlUnit)
|
redisUtil.setObject(redisKey, loginUser, SecurityProperties.redisTtl, SecurityProperties.redisTtlUnit)
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ class RoleServiceImpl(
|
|||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
override fun add(roleAddParam: RoleAddParam): RoleVo {
|
override fun add(roleAddParam: RoleAddParam): RoleVo {
|
||||||
val fullPowerIds = roleAddParam.powerIds?.let(this::getFullPowerIds)
|
val fullPowerIds = roleAddParam.powerIds?.let(::getFullPowerIds)
|
||||||
|
|
||||||
val role = RoleConverter.roleAddParamToRole(roleAddParam)
|
val role = RoleConverter.roleAddParamToRole(roleAddParam)
|
||||||
if (baseMapper.insert(role) != 1) {
|
if (baseMapper.insert(role) != 1) {
|
||||||
@@ -90,7 +90,7 @@ class RoleServiceImpl(
|
|||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
override fun update(roleUpdateParam: RoleUpdateParam): RoleVo {
|
override fun update(roleUpdateParam: RoleUpdateParam): RoleVo {
|
||||||
val fullPowerIds = roleUpdateParam.powerIds?.let(this::getFullPowerIds)
|
val fullPowerIds = roleUpdateParam.powerIds?.let(::getFullPowerIds)
|
||||||
|
|
||||||
val role = RoleConverter.roleUpdateParamToRole(roleUpdateParam)
|
val role = RoleConverter.roleUpdateParamToRole(roleUpdateParam)
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ import top.fatweb.oxygen.api.service.permission.IUserService
|
|||||||
class UserDetailsServiceImpl(val userService: IUserService) : UserDetailsService {
|
class UserDetailsServiceImpl(val userService: IUserService) : UserDetailsService {
|
||||||
override fun loadUserByUsername(account: String): UserDetails {
|
override fun loadUserByUsername(account: String): UserDetails {
|
||||||
val user = userService.getUserWithPowerByAccount(account)
|
val user = userService.getUserWithPowerByAccount(account)
|
||||||
user ?: let { throw Exception("Username not found") }
|
user ?: throw Exception("Username not found")
|
||||||
|
|
||||||
return LoginUser(user)
|
return LoginUser(user)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ class UserServiceImpl(
|
|||||||
) : ServiceImpl<UserMapper, User>(), IUserService {
|
) : ServiceImpl<UserMapper, User>(), IUserService {
|
||||||
override fun getUserWithPowerByAccount(account: String): User? {
|
override fun getUserWithPowerByAccount(account: String): User? {
|
||||||
val user = baseMapper.selectOneWithPowerInfoByAccount(account)
|
val user = baseMapper.selectOneWithPowerInfoByAccount(account)
|
||||||
user ?: let { return null }
|
user ?: return null
|
||||||
|
|
||||||
if (user.id == 0L) {
|
if (user.id == 0L) {
|
||||||
user.modules = moduleService.list()
|
user.modules = moduleService.list()
|
||||||
@@ -81,7 +81,7 @@ class UserServiceImpl(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun getInfo(): UserWithPowerInfoVo =
|
override fun getInfo(): UserWithPowerInfoVo =
|
||||||
WebUtil.getLoginUsername()?.let(this::getUserWithPowerByAccount)?.let(UserConverter::userToUserWithPowerInfoVo)
|
WebUtil.getLoginUsername()?.let(::getUserWithPowerByAccount)?.let(UserConverter::userToUserWithPowerInfoVo)
|
||||||
?: throw UserNotFoundException()
|
?: throw UserNotFoundException()
|
||||||
|
|
||||||
override fun getOne(id: Long): UserWithRoleInfoVo =
|
override fun getOne(id: Long): UserWithRoleInfoVo =
|
||||||
@@ -260,9 +260,7 @@ class UserServiceImpl(
|
|||||||
}
|
}
|
||||||
|
|
||||||
userUpdatePasswordParam.id?.let { WebUtil.offlineUser(redisUtil, it) }
|
userUpdatePasswordParam.id?.let { WebUtil.offlineUser(redisUtil, it) }
|
||||||
} ?: let {
|
} ?: throw NoRecordFoundException()
|
||||||
throw NoRecordFoundException()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ class SensitiveWordServiceImpl : ServiceImpl<SensitiveWordMapper, SensitiveWord>
|
|||||||
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||||
override fun checkSensitiveWord(str: String) {
|
override fun checkSensitiveWord(str: String) {
|
||||||
this.list(KtQueryWrapper(SensitiveWord()).eq(SensitiveWord::enable, 1)).map(SensitiveWord::word).forEach {
|
this.list(KtQueryWrapper(SensitiveWord()).eq(SensitiveWord::enable, 1)).map(SensitiveWord::word).forEach {
|
||||||
it ?: let { return@forEach }
|
it ?: return@forEach
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (Regex(it, RegexOption.IGNORE_CASE).matches(str)) {
|
if (Regex(it, RegexOption.IGNORE_CASE).matches(str)) {
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ class ApiResponseMappingHandlerMapping : RequestMappingHandlerMapping() {
|
|||||||
|
|
||||||
private fun createCondition(clazz: Class<*>): RequestCondition<ApiVersionCondition>? {
|
private fun createCondition(clazz: Class<*>): RequestCondition<ApiVersionCondition>? {
|
||||||
val apiController = clazz.getAnnotation(ApiController::class.java)
|
val apiController = clazz.getAnnotation(ApiController::class.java)
|
||||||
apiController ?: let { return null }
|
apiController ?: return null
|
||||||
|
|
||||||
return ApiVersionCondition(apiController.version)
|
return ApiVersionCondition(apiController.version)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ object StrUtil {
|
|||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
fun upperToUnderLetter(str: String?): String {
|
fun upperToUnderLetter(str: String?): String {
|
||||||
str ?: let { return "" }
|
str ?: return ""
|
||||||
|
|
||||||
return Regex("[A-Z]").replace(str) { matchResult -> "_${matchResult.value.lowercase()}" }
|
return Regex("[A-Z]").replace(str) { matchResult -> "_${matchResult.value.lowercase()}" }
|
||||||
}
|
}
|
||||||
@@ -33,7 +33,7 @@ object StrUtil {
|
|||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
fun underToUpperLetter(str: String?): String {
|
fun underToUpperLetter(str: String?): String {
|
||||||
str ?: let { return "" }
|
str ?: return ""
|
||||||
|
|
||||||
return Regex("_[a-z]").replace(str) { matchResult -> matchResult.value.removePrefix("_").uppercase() }
|
return Regex("_[a-z]").replace(str) { matchResult -> matchResult.value.removePrefix("_").uppercase() }
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user