feat(修改): 修改鉴权内容
This commit is contained in:
parent
b9263fc450
commit
ac47b31122
|
@ -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());
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue