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.ip.IpUtil;
|
||||
import cn.bunny.common.service.utils.minio.MinioUtil;
|
||||
import cn.bunny.dao.entity.system.AdminUser;
|
||||
import cn.bunny.dao.entity.system.Power;
|
||||
import cn.bunny.dao.entity.system.Role;
|
||||
import cn.bunny.dao.pojo.constant.LocalDateTimeConstant;
|
||||
import cn.bunny.dao.pojo.constant.RedisUserConstant;
|
||||
import cn.bunny.dao.pojo.constant.UserConstant;
|
||||
import cn.bunny.dao.vo.user.LoginVo;
|
||||
import cn.bunny.services.mapper.PowerMapper;
|
||||
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.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
|
@ -33,12 +36,18 @@ public class UserFactory {
|
|||
|
||||
@Autowired
|
||||
private RedisTemplate<String, Object> redisTemplate;
|
||||
@Autowired
|
||||
private MinioUtil minioUtil;
|
||||
|
||||
public LoginVo buildUserVo(AdminUser user, long readMeDay) {
|
||||
// 创建token
|
||||
Long userId = user.getId();
|
||||
String email = user.getEmail();
|
||||
String token = JwtHelper.createToken(userId, email, (int) readMeDay);
|
||||
String avatar = user.getAvatar();
|
||||
|
||||
// 判断用户是否有头像,如果没有头像设置默认头像
|
||||
avatar = StringUtils.hasText(avatar) ? UserConstant.USER_AVATAR : minioUtil.getObjectNameFullPath(avatar);
|
||||
|
||||
// 设置用户IP地址,并更新用户信息
|
||||
AdminUser updateUser = new AdminUser();
|
||||
|
@ -56,20 +65,19 @@ public class UserFactory {
|
|||
List<String> roles = roleMapper.selectListByUserId(userId).stream().map(Role::getRoleCode).toList();
|
||||
List<String> permissions = new ArrayList<>();
|
||||
|
||||
// 判断是否是 admin 如果是admin 赋予所有权限
|
||||
boolean isAdmin = roles.stream().anyMatch(role -> role.equals("admin"));
|
||||
|
||||
if (isAdmin) {
|
||||
permissions.add("*");
|
||||
permissions.add("*::*");
|
||||
permissions.add("*::*::*");
|
||||
} else {
|
||||
permissions = powerMapper.selectListByUserId(userId).stream().map(Power::getPowerCode).toList();
|
||||
}
|
||||
} else permissions = powerMapper.selectListByUserId(userId).stream().map(Power::getPowerCode).toList();
|
||||
|
||||
// 构建返回对象
|
||||
// 构建返回对象,设置用户需要内容
|
||||
LoginVo loginVo = new LoginVo();
|
||||
BeanUtils.copyProperties(user, loginVo);
|
||||
loginVo.setNickname(user.getNickName());
|
||||
loginVo.setAvatar(avatar);
|
||||
loginVo.setToken(token);
|
||||
loginVo.setRefreshToken(token);
|
||||
loginVo.setLastLoginIp(IpUtil.getCurrentUserIpAddress().getRemoteAddr());
|
||||
|
|
|
@ -36,8 +36,7 @@ public class NoTokenAuthenticationFilter extends OncePerRequestFilter {
|
|||
}
|
||||
|
||||
// 判断 token 是否过期
|
||||
boolean expired = JwtHelper.isExpired(token);
|
||||
if (expired) {
|
||||
if (JwtHelper.isExpired(token)) {
|
||||
ResponseUtil.out(response, Result.error(ResultCodeEnum.AUTHENTICATION_EXPIRED));
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -60,7 +60,9 @@ public class CustomUserDetailsServiceImpl implements cn.bunny.services.security.
|
|||
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);
|
||||
AdminUser user = userMapper.selectOne(queryWrapper);
|
||||
|
||||
|
|
Loading…
Reference in New Issue