Add power to login

This commit is contained in:
2023-10-25 18:25:28 +08:00
parent 979d1d8fb8
commit 2a364cfcfe
6 changed files with 119 additions and 11 deletions

View File

@@ -11,4 +11,6 @@ import top.fatweb.api.entity.permission.User
* @author FatttSnake
* @since 2023-10-04
*/
interface IUserService : IService<User>
interface IUserService : IService<User> {
fun getUserWithPower(username: String): User?
}

View File

@@ -1,17 +1,15 @@
package top.fatweb.api.service.permission.impl
import com.baomidou.mybatisplus.extension.kotlin.KtQueryWrapper
import org.springframework.security.core.userdetails.UserDetails
import org.springframework.security.core.userdetails.UserDetailsService
import org.springframework.stereotype.Service
import top.fatweb.api.entity.permission.LoginUser
import top.fatweb.api.entity.permission.User
import top.fatweb.api.service.permission.IUserService
@Service
class UserDetailsServiceImpl(val userService: IUserService) : UserDetailsService {
override fun loadUserByUsername(username: String?): UserDetails {
val user = userService.getOne(KtQueryWrapper(User()).eq(User::username, username))
override fun loadUserByUsername(username: String): UserDetails {
val user = userService.getUserWithPower(username)
user ?: let { throw Exception("Username not found") }
return LoginUser(user)

View File

@@ -4,6 +4,9 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
import org.springframework.stereotype.Service
import top.fatweb.api.entity.permission.User
import top.fatweb.api.mapper.permission.UserMapper
import top.fatweb.api.service.permission.IElementService
import top.fatweb.api.service.permission.IMenuService
import top.fatweb.api.service.permission.IOperationService
import top.fatweb.api.service.permission.IUserService
/**
@@ -15,4 +18,21 @@ import top.fatweb.api.service.permission.IUserService
* @since 2023-10-04
*/
@Service
class UserServiceImpl : ServiceImpl<UserMapper, User>(), IUserService
class UserServiceImpl(
private val menuService: IMenuService,
private val elementService: IElementService,
private val operationService: IOperationService
) : ServiceImpl<UserMapper, User>(), IUserService {
override fun getUserWithPower(username: String): User? {
val user = baseMapper.getOneWithPowerByUsername(username)
user ?: let { return null }
if (user.id == 0L) {
user.menus = menuService.list()
user.elements = elementService.list()
user.operations = operationService.list()
}
return user
}
}