package com.oying.modules.security.service; import com.oying.modules.security.service.dto.AuthorityDto; import com.oying.modules.security.service.dto.JwtUserDto; import com.oying.modules.system.domain.User; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import com.oying.exception.BadRequestException; import com.oying.modules.system.service.DataService; import com.oying.modules.system.service.RoleService; import com.oying.modules.system.service.UserService; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.stereotype.Service; import java.util.List; /** * @author Z * @date 2018-11-22 */ @Slf4j @RequiredArgsConstructor @Service("userDetailsService") public class UserDetailsServiceImpl implements UserDetailsService { private final UserService userService; private final RoleService roleService; private final DataService dataService; private final UserCacheManager userCacheManager; @Override public JwtUserDto loadUserByUsername(String username) { JwtUserDto jwtUserDto = userCacheManager.getUserCache(username); if(jwtUserDto == null){ User user = userService.getLoginData(username); if (user == null) { throw new BadRequestException("用户不存在"); } else { if (!user.getEnabled()) { throw new BadRequestException("账号未激活!"); } // 获取用户的权限 List authorities = roleService.buildPermissions(user); // 初始化JwtUserDto jwtUserDto = new JwtUserDto(user, dataService.getDataIds(user), authorities); // 添加缓存数据 userCacheManager.addUserCache(username, jwtUserDto); } } return jwtUserDto; } }