Add register and verify to AuthenticationController
This commit is contained in:
@@ -11,6 +11,22 @@ import top.fatweb.api.vo.api.v1.avatar.AvatarBase64Vo
|
||||
* @since 1.0.0
|
||||
*/
|
||||
interface IAvatarService {
|
||||
/**
|
||||
* Generate random avatar
|
||||
*
|
||||
* @author FatttSnake, fatttsnake@gmail.com
|
||||
* @since 1.0.0
|
||||
*/
|
||||
fun random(avatarBaseParam: AvatarBaseParam?): ByteArray
|
||||
|
||||
/**
|
||||
* Generate random avatar as base64
|
||||
*
|
||||
* @author FatttSnake, fatttsnake@gmail.com
|
||||
* @since 1.0.0
|
||||
*/
|
||||
fun randomBase64(avatarBaseParam: AvatarBaseParam?): AvatarBase64Vo
|
||||
|
||||
/**
|
||||
* Generate triangle style avatar
|
||||
*
|
||||
|
||||
@@ -25,6 +25,34 @@ import kotlin.io.encoding.ExperimentalEncodingApi
|
||||
@OptIn(ExperimentalEncodingApi::class)
|
||||
@Service
|
||||
class AvatarServiceImpl : IAvatarService {
|
||||
override fun random(avatarBaseParam: AvatarBaseParam?): ByteArray =
|
||||
when ((1..4).random()) {
|
||||
1 -> triangle(avatarBaseParam)
|
||||
2 -> square(avatarBaseParam)
|
||||
3 -> identicon(avatarBaseParam)
|
||||
else -> github(AvatarGitHubParam().apply {
|
||||
seed = avatarBaseParam?.seed
|
||||
size = avatarBaseParam?.size
|
||||
margin = avatarBaseParam?.margin
|
||||
padding = avatarBaseParam?.padding
|
||||
colors = avatarBaseParam?.colors
|
||||
background = avatarBaseParam?.background
|
||||
})
|
||||
}
|
||||
|
||||
override fun randomBase64(avatarBaseParam: AvatarBaseParam?): AvatarBase64Vo = when ((1..4).random()) {
|
||||
1 -> triangleBase64(avatarBaseParam)
|
||||
2 -> squareBase64(avatarBaseParam)
|
||||
3 -> identiconBase64(avatarBaseParam)
|
||||
else -> githubBase64(AvatarGitHubParam().apply {
|
||||
seed = avatarBaseParam?.seed
|
||||
size = avatarBaseParam?.size
|
||||
margin = avatarBaseParam?.margin
|
||||
padding = avatarBaseParam?.padding
|
||||
colors = avatarBaseParam?.colors
|
||||
background = avatarBaseParam?.background
|
||||
})
|
||||
}
|
||||
|
||||
override fun triangle(avatarBaseParam: AvatarBaseParam?): ByteArray {
|
||||
val avatar = (
|
||||
|
||||
@@ -3,6 +3,8 @@ package top.fatweb.api.service.permission
|
||||
import jakarta.servlet.http.HttpServletRequest
|
||||
import top.fatweb.api.entity.permission.User
|
||||
import top.fatweb.api.param.permission.LoginParam
|
||||
import top.fatweb.api.param.permission.RegisterParam
|
||||
import top.fatweb.api.param.permission.VerifyParam
|
||||
import top.fatweb.api.vo.permission.LoginVo
|
||||
import top.fatweb.api.vo.permission.TokenVo
|
||||
|
||||
@@ -13,6 +15,22 @@ import top.fatweb.api.vo.permission.TokenVo
|
||||
* @since 1.0.0
|
||||
*/
|
||||
interface IAuthenticationService {
|
||||
/**
|
||||
* Register
|
||||
*
|
||||
* @author FatttSnake, fatttsnake@gmail.com
|
||||
* @since 1.0.0
|
||||
*/
|
||||
fun register(registerParam: RegisterParam)
|
||||
|
||||
/**
|
||||
* Verify
|
||||
*
|
||||
* @author FatttSnake, fatttsnake@gmail.com
|
||||
* @since 1.0.0
|
||||
*/
|
||||
fun verify(verifyParam: VerifyParam)
|
||||
|
||||
/**
|
||||
* Login
|
||||
*
|
||||
|
||||
@@ -6,15 +6,22 @@ import org.slf4j.Logger
|
||||
import org.slf4j.LoggerFactory
|
||||
import org.springframework.security.authentication.AuthenticationManager
|
||||
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken
|
||||
import org.springframework.security.crypto.password.PasswordEncoder
|
||||
import org.springframework.stereotype.Service
|
||||
import org.springframework.transaction.annotation.Transactional
|
||||
import top.fatweb.api.annotation.EventLogRecord
|
||||
import top.fatweb.api.entity.permission.LoginUser
|
||||
import top.fatweb.api.entity.permission.User
|
||||
import top.fatweb.api.entity.permission.UserInfo
|
||||
import top.fatweb.api.entity.system.EventLog
|
||||
import top.fatweb.api.exception.TokenHasExpiredException
|
||||
import top.fatweb.api.param.permission.LoginParam
|
||||
import top.fatweb.api.param.permission.RegisterParam
|
||||
import top.fatweb.api.param.permission.VerifyParam
|
||||
import top.fatweb.api.properties.SecurityProperties
|
||||
import top.fatweb.api.service.api.v1.IAvatarService
|
||||
import top.fatweb.api.service.permission.IAuthenticationService
|
||||
import top.fatweb.api.service.permission.IUserInfoService
|
||||
import top.fatweb.api.service.permission.IUserService
|
||||
import top.fatweb.api.util.JwtUtil
|
||||
import top.fatweb.api.util.RedisUtil
|
||||
@@ -23,6 +30,7 @@ import top.fatweb.api.vo.permission.LoginVo
|
||||
import top.fatweb.api.vo.permission.TokenVo
|
||||
import java.time.LocalDateTime
|
||||
import java.time.ZoneOffset
|
||||
import java.util.*
|
||||
|
||||
/**
|
||||
* Authentication service implement
|
||||
@@ -37,11 +45,33 @@ import java.time.ZoneOffset
|
||||
@Service
|
||||
class AuthenticationServiceImpl(
|
||||
private val authenticationManager: AuthenticationManager,
|
||||
private val passwordEncoder: PasswordEncoder,
|
||||
private val redisUtil: RedisUtil,
|
||||
private val userService: IUserService
|
||||
private val userService: IUserService,
|
||||
private val userInfoService: IUserInfoService,
|
||||
private val avatarService: IAvatarService
|
||||
) : IAuthenticationService {
|
||||
private val logger: Logger = LoggerFactory.getLogger(this::class.java)
|
||||
|
||||
@Transactional
|
||||
override fun register(registerParam: RegisterParam) {
|
||||
val user = User().apply {
|
||||
username = "\$UNNAMED_${UUID.randomUUID()}"
|
||||
password = passwordEncoder.encode(registerParam.password)
|
||||
locking = 0
|
||||
enable = 1
|
||||
}
|
||||
userService.save(user)
|
||||
userInfoService.save(UserInfo().apply {
|
||||
userId = user.id
|
||||
avatar = avatarService.randomBase64(null).base64
|
||||
email = registerParam.email
|
||||
})
|
||||
}
|
||||
|
||||
override fun verify(verifyParam: VerifyParam) {
|
||||
}
|
||||
|
||||
@EventLogRecord(EventLog.Event.LOGIN)
|
||||
override fun login(request: HttpServletRequest, loginParam: LoginParam): LoginVo {
|
||||
val usernamePasswordAuthenticationToken =
|
||||
|
||||
Reference in New Issue
Block a user