From 1b4d9b2dd4ed07758241d1143890b3a86b3c0641 Mon Sep 17 00:00:00 2001 From: zhoushihao <zsh19950802@163.com> Date: 星期日, 28 四月 2024 14:15:49 +0800 Subject: [PATCH] 权限管理开发基本功能已完成,待前端对接 --- hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/impl/SysUserServiceImpl.java | 58 +++++++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 47 insertions(+), 11 deletions(-) diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/impl/SysUserServiceImpl.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/impl/SysUserServiceImpl.java index c674fea..144ecd6 100644 --- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/impl/SysUserServiceImpl.java +++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/impl/SysUserServiceImpl.java @@ -1,5 +1,6 @@ package com.mes.userinfo.service.impl; +import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -7,13 +8,15 @@ import com.mes.common.config.Const; import com.mes.common.utils.JwtUtil; import com.mes.common.utils.RedisUtil; +import com.mes.common.utils.UserInfoUtils; +import com.mes.entity.request.GeneralRequest; import com.mes.menu.mapper.SysMenuMapper; import com.mes.role.entity.SysRole; +import com.mes.role.entity.SysRoleMenu; import com.mes.role.service.SysRoleService; import com.mes.userinfo.entity.LoginUser; import com.mes.userinfo.entity.SysUser; import com.mes.userinfo.entity.SysUserRole; -import com.mes.userinfo.entity.request.UserRequest; import com.mes.userinfo.entity.vo.SysUserVO; import com.mes.userinfo.mapper.SysUserMapper; import com.mes.userinfo.service.SysUserRoleService; @@ -21,10 +24,10 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; -import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; @@ -69,8 +72,12 @@ @Resource BCryptPasswordEncoder passwordEncoder; + @Value("${test.common}") + private String value; + @Override public Map<String, String> login(SysUser user) { + log.info(value); UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(user.getUserName(), user.getPassword()); Authentication authenticate = authenticationManager.authenticate(authenticationToken); if (Objects.isNull(authenticate)) { @@ -93,10 +100,9 @@ @Override public String logout() { - Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); - LoginUser loginUser = (LoginUser) authentication.getPrincipal(); - Long userid = loginUser.getUser().getId(); - redisUtil.deleteObject("login:" + userid); + log.info("鐢ㄦ埛閫�鍑�"); + SysUser user = UserInfoUtils.get(); + redisUtil.deleteObject("login:" + user.getId()); return "娉ㄩ攢鎴愬姛"; } @@ -122,10 +128,12 @@ BeanUtils.copyProperties(user, sysUser); this.updateById(sysUser); log.info("鍒犻櫎鐢ㄦ埛瑙掕壊淇℃伅"); - sysUserRoleService.removeByIds(user.getRoleList()); + List<Long> roleIds = user.getRoleList().stream().map(SysRole::getId).collect(Collectors.toList()); + sysUserRoleService.remove(new LambdaQueryWrapper<SysUserRole>() + .eq(SysUserRole::getUserId, sysUser.getId()).in(CollectionUtil.isNotEmpty(roleIds), SysUserRole::getRoleId, roleIds)); log.info("淇濆瓨鐢ㄦ埛瑙掕壊淇℃伅"); saveUserRole(user.getRoleList(), sysUser.getId()); - return null; + return user; } @Override @@ -140,13 +148,18 @@ } @Override - public List<SysUserVO> listByUserName(UserRequest request) { + public SysUser queryByUserName(String userName) { + return baseMapper.selectOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUserName, userName)); + } + + @Override + public List<SysUserVO> listByUserName(GeneralRequest request) { MPJLambdaWrapper<SysUser> wrapper = new MPJLambdaWrapper<>(); wrapper.selectAll(SysUser.class) .selectCollection(SysRole.class, SysUserVO::getRoleList) .leftJoin(SysUserRole.class, SysUserRole::getUserId, SysUser::getId) .leftJoin(SysRole.class, SysRole::getId, SysUserRole::getRoleId) - .like(StringUtils.hasText(request.getUserName()), SysUser::getUserName, request.getUserName()); + .like(StringUtils.hasText(request.getKey()), SysUser::getUserName, request.getKey()); return baseMapper.selectJoinList(SysUserVO.class, wrapper); } @@ -191,8 +204,31 @@ } @Override - public void clearUserAuthorityInfoByMenuId(Long userId) { + public void clearUserAuthorityInfo(String userName) { + redisUtil.deleteObject("GrantedAuthority:" + userName); + } + @Override + public void clearUserAuthorityInfoByRoleId(Long roleId) { + List<SysUser> sysUsers = this.list(new QueryWrapper<SysUser>() + .inSql("id", "select user_id from sys_user_role where role_id = " + roleId)); + + sysUsers.forEach(u -> { + this.clearUserAuthorityInfo(u.getUserName()); + }); + + } + + @Override + public void clearUserAuthorityInfoByMenuId(Long menuId) { + MPJLambdaWrapper<SysUserRole> wrapper = new MPJLambdaWrapper<SysUserRole>().selectAll(SysUser.class).distinct() + .leftJoin(SysUser.class, SysUser::getId, SysUserRole::getUserId) + .leftJoin(SysRoleMenu.class, SysRoleMenu::getRoleId, SysUserRole::getRoleId) + .eq(SysRoleMenu::getMenuId, menuId); + List<SysUser> sysUsers = sysUserRoleService.selectJoinList(SysUser.class, wrapper); + sysUsers.forEach(u -> { + this.clearUserAuthorityInfo(u.getUserName()); + }); } /** -- Gitblit v1.8.0