diff --git a/service/src/main/java/cn/bunny/services/factory/UserFactory.java b/service/src/main/java/cn/bunny/services/factory/UserFactory.java index 28501f5..5fcadf3 100644 --- a/service/src/main/java/cn/bunny/services/factory/UserFactory.java +++ b/service/src/main/java/cn/bunny/services/factory/UserFactory.java @@ -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 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 roles = roleMapper.selectListByUserId(userId).stream().map(Role::getRoleCode).toList(); List 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()); diff --git a/service/src/main/java/cn/bunny/services/security/filter/NoTokenAuthenticationFilter.java b/service/src/main/java/cn/bunny/services/security/filter/NoTokenAuthenticationFilter.java index db3cf7b..a2e062c 100644 --- a/service/src/main/java/cn/bunny/services/security/filter/NoTokenAuthenticationFilter.java +++ b/service/src/main/java/cn/bunny/services/security/filter/NoTokenAuthenticationFilter.java @@ -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; } diff --git a/service/src/main/java/cn/bunny/services/security/service/iml/CustomUserDetailsServiceImpl.java b/service/src/main/java/cn/bunny/services/security/service/iml/CustomUserDetailsServiceImpl.java index 0fd3629..09f03be 100644 --- a/service/src/main/java/cn/bunny/services/security/service/iml/CustomUserDetailsServiceImpl.java +++ b/service/src/main/java/cn/bunny/services/security/service/iml/CustomUserDetailsServiceImpl.java @@ -60,7 +60,9 @@ public class CustomUserDetailsServiceImpl implements cn.bunny.services.security. Long readMeDay = loginDto.getReadMeDay(); // 查询用户相关内容 - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper().eq(AdminUser::getEmail, username).or() + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() + .eq(AdminUser::getEmail, username) + .or() .eq(AdminUser::getUsername, username); AdminUser user = userMapper.selectOne(queryWrapper);