use of com.hb0730.boot.admin.security.model.User in project boot-admin by hb0730.
the class RedisTokenServiceImpl method verifyAccessToken.
@Override
public void verifyAccessToken(HttpServletRequest request) {
User loginUser = getLoginUser(request);
if (Objects.nonNull(loginUser)) {
Date expireTime = loginUser.getExpireTime();
Date currentTime = DateUtils.now();
long refreshTime = TimeUnit.MILLISECONDS.convert(super.getProperties().getRefreshTime(), super.getProperties().getTimeUnit());
// 校验 刷新
if (expireTime.getTime() - currentTime.getTime() <= refreshTime) {
String accessToken = getAccessToken(request);
String accessTokenKey = getAccessTokenKey(accessToken);
stringRedisTemplate.opsForValue().set(accessTokenKey, loginUser.getToken(), super.getProperties().getExpireTime(), super.getProperties().getTimeUnit());
refreshAccessToken(loginUser);
}
}
}
use of com.hb0730.boot.admin.security.model.User in project boot-admin by hb0730.
the class UserInfoServiceImpl method loadUserByUsername.
@Override
public UserDTO loadUserByUsername(String username) {
UserAccountEntity accountEntity = accountService.findUserAccountByUsername(username);
if (null == accountEntity) {
return null;
}
Long userId = accountEntity.getUserId();
UserInfoEntity entity = super.getById(userId);
UserDTO user = BeanUtil.toBean(entity, UserDTO.class);
assert user != null;
user.setUsername(accountEntity.getUsername());
user.setPassword(accountEntity.getPassword());
// 用户角色
Collection<Long> roleIds = userRoleService.findRoleByUserId(userId);
if (CollectionUtils.isEmpty(roleIds)) {
return user;
}
List<RoleEntity> roles = roleService.findEnabledRoleByIds(roleIds);
if (CollectionUtils.isEmpty(roles)) {
return user;
}
Map<Long, String> roleMap = roles.parallelStream().collect(Collectors.toMap(RoleEntity::getId, RoleEntity::getCode));
user.setRoleIds(roleMap.keySet());
user.setRole(roleMap.values());
// 权限
Map<Long, List<Long>> permission = rolePermissionService.findPermissionIdByRoleId(roleIds);
if (CollectionUtils.isEmpty(permission)) {
return user;
}
Set<Long> permissionIds = permission.values().stream().flatMap(List::stream).collect(Collectors.toSet());
List<PermissionEntity> permissionEntities = permissionService.findEnabledPermissionByIds(permissionIds);
if (CollectionUtils.isEmpty(permissionEntities)) {
return user;
}
Map<Long, String> permissionMap = permissionEntities.parallelStream().collect(Collectors.toMap(PermissionEntity::getId, PermissionEntity::getPermission));
user.setPermission(permissionMap.values());
user.setPermissionIds(permissionMap.keySet());
// 岗位
List<Long> postIds = userPostService.findPostIdByUserIds(Collections.singletonList(userId));
user.setPostIds(postIds);
return user;
}
use of com.hb0730.boot.admin.security.model.User in project boot-admin by hb0730.
the class UserInfoController method getCurrentInfo.
/**
* 获取当前请求认证的用户
*
* @param request 请求
* @return 用户详情(不包含相关信息)
*/
@GetMapping
public Result<UserInfoDTO> getCurrentInfo(HttpServletRequest request) {
User user = SecurityUtils.getCurrentUser();
UserInfoDTO info = BeanUtil.toBean(user, UserInfoDTO.class);
return R.success(info);
}
use of com.hb0730.boot.admin.security.model.User in project boot-admin by hb0730.
the class MenuEventListener method onApplicationEvent.
@Override
public void onApplicationEvent(@Nonnull MenuEvent event) {
Long userId = event.getUserId();
if (null == userId) {
return;
}
UserDTO user = findUserById(userId);
if (null == user) {
return;
}
//
List<TreeMenuDTO> menu = findMenuByUser(user);
if (CollectionUtils.isEmpty(menu)) {
return;
}
HashOperations<String, Long, List<TreeMenuDTO>> hash = redisTemplate.opsForHash();
hash.put(RedisConstant.MENU_KEY_PREFIX, userId, menu);
}
use of com.hb0730.boot.admin.security.model.User in project boot-admin by hb0730.
the class RolePermissionListener method onApplicationEvent.
@Override
@Async("threadPoolTaskExecutor")
public void onApplicationEvent(@Nonnull RolePermissionEvent event) {
Long roleId = event.getRoleId();
Set<UserDetails> onlineUser = getOnlineUserByRoleId(roleId);
if (CollectionUtils.isEmpty(onlineUser)) {
return;
}
Set<String> usernameList = onlineUser.stream().map(UserDetails::getUsername).collect(Collectors.toSet());
Map<String, UserDetails> onlineUserMap = onlineUser.stream().collect(Collectors.toMap(UserDetails::getUsername, Function.identity()));
// 用户
for (String username : usernameList) {
UserDTO userDTO = userInfoService.loadUserByUsername(username);
UserDetails details = onlineUserMap.get(username);
BeanUtil.copyProperties(userDTO, details);
// 刷新token
tokenService.refreshAccessToken((User) details);
eventPublisher.publishEvent(new MenuEvent(this, userDTO.getId()));
}
}
Aggregations