Add register and verify to AuthenticationController

This commit is contained in:
2023-12-21 18:35:42 +08:00
parent e7c8311b83
commit c40bb0bbaa
25 changed files with 275 additions and 42 deletions

View File

@@ -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
*

View File

@@ -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 =