From 2a364cfcfe9d67faba2da427ed42162b5800dc59 Mon Sep 17 00:00:00 2001 From: FatttSnake Date: Wed, 25 Oct 2023 18:25:28 +0800 Subject: [PATCH] Add power to login --- .../api/mapper/permission/UserMapper.kt | 5 +- .../api/service/permission/IUserService.kt | 4 +- .../permission/impl/UserDetailsServiceImpl.kt | 6 +- .../permission/impl/UserServiceImpl.kt | 22 ++++- .../resources/db/migration/R__Basic_data.sql | 10 ++- .../mapper/permission/UserMapper.xml | 83 +++++++++++++++++++ 6 files changed, 119 insertions(+), 11 deletions(-) diff --git a/src/main/kotlin/top/fatweb/api/mapper/permission/UserMapper.kt b/src/main/kotlin/top/fatweb/api/mapper/permission/UserMapper.kt index 2dc6d5f..0adc77b 100644 --- a/src/main/kotlin/top/fatweb/api/mapper/permission/UserMapper.kt +++ b/src/main/kotlin/top/fatweb/api/mapper/permission/UserMapper.kt @@ -2,6 +2,7 @@ package top.fatweb.api.mapper.permission import com.baomidou.mybatisplus.core.mapper.BaseMapper import org.apache.ibatis.annotations.Mapper +import org.apache.ibatis.annotations.Param import top.fatweb.api.entity.permission.User /** @@ -13,4 +14,6 @@ import top.fatweb.api.entity.permission.User * @since 2023-10-04 */ @Mapper -interface UserMapper : BaseMapper +interface UserMapper : BaseMapper { + fun getOneWithPowerByUsername(@Param("username")username: String): User? +} diff --git a/src/main/kotlin/top/fatweb/api/service/permission/IUserService.kt b/src/main/kotlin/top/fatweb/api/service/permission/IUserService.kt index 1e546ea..f5d988d 100644 --- a/src/main/kotlin/top/fatweb/api/service/permission/IUserService.kt +++ b/src/main/kotlin/top/fatweb/api/service/permission/IUserService.kt @@ -11,4 +11,6 @@ import top.fatweb.api.entity.permission.User * @author FatttSnake * @since 2023-10-04 */ -interface IUserService : IService +interface IUserService : IService { + fun getUserWithPower(username: String): User? +} diff --git a/src/main/kotlin/top/fatweb/api/service/permission/impl/UserDetailsServiceImpl.kt b/src/main/kotlin/top/fatweb/api/service/permission/impl/UserDetailsServiceImpl.kt index db65f6b..e6847d7 100644 --- a/src/main/kotlin/top/fatweb/api/service/permission/impl/UserDetailsServiceImpl.kt +++ b/src/main/kotlin/top/fatweb/api/service/permission/impl/UserDetailsServiceImpl.kt @@ -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) diff --git a/src/main/kotlin/top/fatweb/api/service/permission/impl/UserServiceImpl.kt b/src/main/kotlin/top/fatweb/api/service/permission/impl/UserServiceImpl.kt index 2b213b2..c0efd37 100644 --- a/src/main/kotlin/top/fatweb/api/service/permission/impl/UserServiceImpl.kt +++ b/src/main/kotlin/top/fatweb/api/service/permission/impl/UserServiceImpl.kt @@ -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(), IUserService +class UserServiceImpl( + private val menuService: IMenuService, + private val elementService: IElementService, + private val operationService: IOperationService +) : ServiceImpl(), 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 + } +} diff --git a/src/main/resources/db/migration/R__Basic_data.sql b/src/main/resources/db/migration/R__Basic_data.sql index e9d4747..3b94441 100644 --- a/src/main/resources/db/migration/R__Basic_data.sql +++ b/src/main/resources/db/migration/R__Basic_data.sql @@ -8,6 +8,7 @@ insert into t_power (id, type_id) values (1010000, 1), (1010100, 2), (1010101, 3), + (100010000, 1), (101010000, 1), (101010100, 2), (101010101, 3), @@ -30,10 +31,11 @@ values (1010000, 1), on duplicate key update type_id = values(type_id); insert into t_menu (id, name, url, power_id, parent_id) -values (1010000, '公用', '/', id, null), - (101010000, '角色管理(权限相关)', '/power/role', id, null), - (102010000, '用户组管理(权限相关)', '/power/group', id, null), - (103010000, '用户管理(权限相关)', '/power/user', id, null) +values (001010000, '公用', '/', id, null), + (100010000, '系统管理', '/system', id, null), + (101010000, '角色管理(权限相关)', '/power/role', id, 100010000), + (102010000, '用户组管理(权限相关)', '/power/group', id, 100010000), + (103010000, '用户管理(权限相关)', '/power/user', id, 100010000) on duplicate key update name = values(name), url = values(url), power_id = values(power_id), diff --git a/src/main/resources/mapper/permission/UserMapper.xml b/src/main/resources/mapper/permission/UserMapper.xml index 668c8e5..b18c79e 100644 --- a/src/main/resources/mapper/permission/UserMapper.xml +++ b/src/main/resources/mapper/permission/UserMapper.xml @@ -1,5 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +