Add power to login
This commit is contained in:
@@ -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?
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user