use of com.github.liuweijw.core.beans.system.AuthUser in project fw-cloud-framework by liuweijw.
the class TokenArgumentResolver method resolveArgument.
/**
* 1. 先读缓存
* 2. 不存在缓存,解析token 获取用户信息
* 3. 对API含有 AuthUser入参的接口生效
*/
@Override
public Object resolveArgument(MethodParameter methodParameter, ModelAndViewContainer modelAndViewContainer, NativeWebRequest nativeWebRequest, WebDataBinderFactory webDataBinderFactory) throws Exception {
HttpServletRequest request = nativeWebRequest.getNativeRequest(HttpServletRequest.class);
String token = JwtUtil.getToken(request);
if (StringHelper.isBlank(token)) {
return null;
}
Optional<AuthUser> optional = Optional.ofNullable(cacheManager.getCache(SecurityConstant.TOKEN_USER_DETAIL).get(token, AuthUser.class));
if (optional.isPresent()) {
return optional.get();
}
return optional.orElseGet(() -> generatorByToken(request, token));
}
use of com.github.liuweijw.core.beans.system.AuthUser in project fw-cloud-framework by liuweijw.
the class TokenArgumentResolver method generatorByToken.
private AuthUser generatorByToken(HttpServletRequest request, String token) {
String username = JwtUtil.getUserName(request);
List<String> roles = JwtUtil.getRole(request);
AuthUser authUser = new AuthUser();
authUser.setUsername(username);
if (null != roles) {
List<AuthRole> roleList = new ArrayList<AuthRole>();
roles.stream().forEach(role -> {
AuthRole authRole = new AuthRole();
authRole.setRoleCode(role);
roleList.add(authRole);
});
authUser.setRoleList(roleList);
cacheManager.getCache(SecurityConstant.TOKEN_USER_DETAIL).put(token, authUser);
}
return authUser;
}
use of com.github.liuweijw.core.beans.system.AuthUser in project fw-cloud-framework by liuweijw.
the class UserServiceImpl method buildAuthUserByUser.
private AuthUser buildAuthUserByUser(User user) {
if (null == user)
return null;
AuthUser authUser = new AuthUser();
authUser.setPicUrl(user.getPicUrl());
authUser.setStatu(user.getStatu());
authUser.setPassword(user.getPassword());
authUser.setUserId(user.getUserId());
authUser.setUsername(user.getUsername());
if (null == user.getRoleList() || user.getRoleList().size() == 0)
return authUser;
List<AuthRole> rList = new ArrayList<AuthRole>();
for (Role r : user.getRoleList()) {
AuthRole aRole = new AuthRole();
aRole.setStatu(r.getStatu());
aRole.setRoleCode(r.getRoleCode());
aRole.setRoleDesc(r.getRoleDesc());
aRole.setRoleId(r.getRoleId());
aRole.setRoleName(r.getRoleName());
rList.add(aRole);
}
authUser.setRoleList(rList);
return authUser;
}
use of com.github.liuweijw.core.beans.system.AuthUser in project fw-cloud-framework by liuweijw.
the class UserServiceImpl method findUserByMobile.
@Override
@Cacheable(value = AdminCacheKey.USER_INFO_MOBILE, key = AdminCacheKey.USER_INFO_MOBILE_KEY_USERNAME)
public AuthUser findUserByMobile(String mobile) {
User user = userRepository.findUserByMobile(mobile.trim());
if (null == user)
return null;
user.setRoleList(findRoleListByUserId(user.getUserId()));
return buildAuthUserByUser(user);
}
use of com.github.liuweijw.core.beans.system.AuthUser in project fw-cloud-framework by liuweijw.
the class UserServiceImpl method findUserInfo.
@Override
public UserBean findUserInfo(AuthUser user) {
User dbUser = findUserByUsername(user.getUsername(), false);
UserBean userInfo = new UserBean();
// 过滤关键信息
dbUser.setPassword("");
dbUser.setCreateTime(null);
dbUser.setUpdateTime(null);
userInfo.setUser(dbUser);
// 设置角色列表
List<AuthRole> roleList = user.getRoleList();
List<String> roleCodes = new ArrayList<>();
roleList.stream().forEach(r -> {
roleCodes.add(r.getRoleCode());
});
String[] roles = roleCodes.toArray(new String[roleCodes.size()]);
userInfo.setRoles(roles);
// 设置权限列表(menu.permission)
Set<String> permissions = new HashSet<String>();
for (String roleCode : roles) {
permissions.addAll(menuService.findMenuPermissions(roleCode));
}
userInfo.setPermissions(permissions.toArray(new String[permissions.size()]));
return userInfo;
}
Aggregations