feat(修改): 修改鉴权内容

This commit is contained in:
Bunny 2024-09-28 21:39:21 +08:00
parent b9263fc450
commit ac47b31122
3 changed files with 17 additions and 8 deletions

View File

@ -2,11 +2,13 @@ package cn.bunny.services.factory;
import cn.bunny.common.service.utils.JwtHelper; import cn.bunny.common.service.utils.JwtHelper;
import cn.bunny.common.service.utils.ip.IpUtil; import cn.bunny.common.service.utils.ip.IpUtil;
import cn.bunny.common.service.utils.minio.MinioUtil;
import cn.bunny.dao.entity.system.AdminUser; import cn.bunny.dao.entity.system.AdminUser;
import cn.bunny.dao.entity.system.Power; import cn.bunny.dao.entity.system.Power;
import cn.bunny.dao.entity.system.Role; import cn.bunny.dao.entity.system.Role;
import cn.bunny.dao.pojo.constant.LocalDateTimeConstant; import cn.bunny.dao.pojo.constant.LocalDateTimeConstant;
import cn.bunny.dao.pojo.constant.RedisUserConstant; import cn.bunny.dao.pojo.constant.RedisUserConstant;
import cn.bunny.dao.pojo.constant.UserConstant;
import cn.bunny.dao.vo.user.LoginVo; import cn.bunny.dao.vo.user.LoginVo;
import cn.bunny.services.mapper.PowerMapper; import cn.bunny.services.mapper.PowerMapper;
import cn.bunny.services.mapper.RoleMapper; import cn.bunny.services.mapper.RoleMapper;
@ -15,6 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
@ -33,12 +36,18 @@ public class UserFactory {
@Autowired @Autowired
private RedisTemplate<String, Object> redisTemplate; private RedisTemplate<String, Object> redisTemplate;
@Autowired
private MinioUtil minioUtil;
public LoginVo buildUserVo(AdminUser user, long readMeDay) { public LoginVo buildUserVo(AdminUser user, long readMeDay) {
// 创建token // 创建token
Long userId = user.getId(); Long userId = user.getId();
String email = user.getEmail(); String email = user.getEmail();
String token = JwtHelper.createToken(userId, email, (int) readMeDay); String token = JwtHelper.createToken(userId, email, (int) readMeDay);
String avatar = user.getAvatar();
// 判断用户是否有头像如果没有头像设置默认头像
avatar = StringUtils.hasText(avatar) ? UserConstant.USER_AVATAR : minioUtil.getObjectNameFullPath(avatar);
// 设置用户IP地址并更新用户信息 // 设置用户IP地址并更新用户信息
AdminUser updateUser = new AdminUser(); AdminUser updateUser = new AdminUser();
@ -56,20 +65,19 @@ public class UserFactory {
List<String> roles = roleMapper.selectListByUserId(userId).stream().map(Role::getRoleCode).toList(); List<String> roles = roleMapper.selectListByUserId(userId).stream().map(Role::getRoleCode).toList();
List<String> permissions = new ArrayList<>(); List<String> permissions = new ArrayList<>();
// 判断是否是 admin 如果是admin 赋予所有权限
boolean isAdmin = roles.stream().anyMatch(role -> role.equals("admin")); boolean isAdmin = roles.stream().anyMatch(role -> role.equals("admin"));
if (isAdmin) { if (isAdmin) {
permissions.add("*"); permissions.add("*");
permissions.add("*::*"); permissions.add("*::*");
permissions.add("*::*::*"); permissions.add("*::*::*");
} else { } else permissions = powerMapper.selectListByUserId(userId).stream().map(Power::getPowerCode).toList();
permissions = powerMapper.selectListByUserId(userId).stream().map(Power::getPowerCode).toList();
}
// 构建返回对象 // 构建返回对象设置用户需要内容
LoginVo loginVo = new LoginVo(); LoginVo loginVo = new LoginVo();
BeanUtils.copyProperties(user, loginVo); BeanUtils.copyProperties(user, loginVo);
loginVo.setNickname(user.getNickName()); loginVo.setNickname(user.getNickName());
loginVo.setAvatar(avatar);
loginVo.setToken(token); loginVo.setToken(token);
loginVo.setRefreshToken(token); loginVo.setRefreshToken(token);
loginVo.setLastLoginIp(IpUtil.getCurrentUserIpAddress().getRemoteAddr()); loginVo.setLastLoginIp(IpUtil.getCurrentUserIpAddress().getRemoteAddr());

View File

@ -36,8 +36,7 @@ public class NoTokenAuthenticationFilter extends OncePerRequestFilter {
} }
// 判断 token 是否过期 // 判断 token 是否过期
boolean expired = JwtHelper.isExpired(token); if (JwtHelper.isExpired(token)) {
if (expired) {
ResponseUtil.out(response, Result.error(ResultCodeEnum.AUTHENTICATION_EXPIRED)); ResponseUtil.out(response, Result.error(ResultCodeEnum.AUTHENTICATION_EXPIRED));
return; return;
} }

View File

@ -60,7 +60,9 @@ public class CustomUserDetailsServiceImpl implements cn.bunny.services.security.
Long readMeDay = loginDto.getReadMeDay(); Long readMeDay = loginDto.getReadMeDay();
// 查询用户相关内容 // 查询用户相关内容
LambdaQueryWrapper<AdminUser> queryWrapper = new LambdaQueryWrapper<AdminUser>().eq(AdminUser::getEmail, username).or() LambdaQueryWrapper<AdminUser> queryWrapper = new LambdaQueryWrapper<AdminUser>()
.eq(AdminUser::getEmail, username)
.or()
.eq(AdminUser::getUsername, username); .eq(AdminUser::getUsername, username);
AdminUser user = userMapper.selectOne(queryWrapper); AdminUser user = userMapper.selectOne(queryWrapper);