用户操作工具类

import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.rdss.common.constants.CommonConstants;
import com.rdss.common.constants.SecurityConstants;
import com.rdss.common.constants.UserConstants;
import com.rdss.common.enums.UserTypeEnum;
import com.rdss.common.vo.SysRoleVo;
import com.rdss.common.vo.SysUserVo;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.data.redis.core.StringRedisTemplate;

import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.Base64;
import java.util.List;
import java.util.stream.Collectors;

@Slf4j
public class UserUtil {

    /**
     * 获取请求中的token
     * @param request
     * @return token
     */
    public static String getToken(HttpServletRequest request){
        String token = "";
        String authorization = request.getHeader(SecurityConstants.TOKEN_HEADER);
        if(authorization != null){
            token = authorization.split(" ")[1];
        }
        if(request.getParameter("access_token")!=null){
            token = request.getParameter("access_token");
        }

        log.info("获取token成功,值为{}", token);
        return token;
    }

    /**
     * 获取请求中的token
     * @param request
     * @return token
     */
      public static String getToken_v2(HttpServletRequest request){
        String token = "";
        String authorization = request.getHeader("token");
        if(authorization != null){
            token = authorization;
        }
        if(request.getParameter("token")!=null){
            token = request.getParameter(token);
        }

        log.info("获取综合系统token成功,值为{}", token);
        return token;
    }

    public static String getTicket(HttpServletRequest request){
        String ticket = "";
        String authorization = request.getHeader(SecurityConstants.TICKET_HEADER);
        if(authorization != null){
            ticket = authorization;
        }
        if(request.getParameter(SecurityConstants.TICKET_HEADER)!=null){
            ticket = request.getParameter(SecurityConstants.TICKET_HEADER);
        }

        log.info("获取ticket成功,值为{}", ticket);
        return ticket;
    }
    /**
     * 获取jwt中的claims信息
     * @param token
     * @return claim
     */
    public static Claims getClaims(String token,String signKey) {
        String key = Base64.getEncoder().encodeToString(signKey.getBytes());
        Claims claims = Jwts.parser().setSigningKey(key).parseClaimsJws(token).getBody();
        return claims;
    }

    /**
     * 获取请求中的userId
     * @param request
     * @return userId
     */
    public static Integer getUserId_v1(HttpServletRequest request,String signKey){
        String token = getToken(request);
        if(token == null){
            return null;
        }
        Claims claims = getClaims(token, signKey);
        Integer userId = (Integer) claims.get(UserConstants.USER_ID);
        log.info("获取userId成功,值为{}", userId);
        return userId;
    }
	public static Integer getUserId(HttpServletRequest request,String signKey){
        SysUserVo sysUserVo = getUserByRequest(request);
        if(null == sysUserVo) {
            return null;
        }
        log.info("获取userId成功,值为{}", sysUserVo.getId());
        return sysUserVo.getId();
    }
    /**
     * 获取请求中的organId
     * @param request
     * @return userId
     */
    public static Integer getUserOrganId_v1(HttpServletRequest request,String signKey){
        String token = getToken(request);
        if(token == null){
            return null;
        }
        Claims claims = getClaims(token, signKey);
        Integer organId = (Integer) claims.get(UserConstants.USER_ORGAN);
        log.info("获取user机构Id成功,值为{}", organId);
        return organId;
    }
public static Integer getUserOrganId(HttpServletRequest request,String signKey){
        SysUserVo sysUserVo = getUserByRequest(request);
        if(null == sysUserVo) {
            return null;
        }
        log.info("获取user机构Id成功,值为{}", sysUserVo.getOrganId());
        return sysUserVo.getOrganId();
    }

    /**
     * 获取请求中的user类型
     * @param request
     * @return userId
     */
    public static Integer getUserType_v1(HttpServletRequest request,String signKey){
        String token = getToken(request);
        if(token == null){
            return null;
        }
        Claims claims = getClaims(token, signKey);
        Integer userType = (Integer) claims.get(UserConstants.USER_TYPE);
        log.info("获取userType成功,值为{}", userType);
        return userType;
    }

    public static Integer getUserType(HttpServletRequest request,String signKey){
        return UserTypeEnum.SYS_USER.getCode();
    }
    /**
     * 获取请求中的user名称
     * @param request
     * @return userId
     */
    public static String getUserName_v1(HttpServletRequest request,String signKey){
        String token = getToken(request);
        if(StringUtils.isBlank(token)){
            return null;
        }
        Claims claims = getClaims(token, signKey);
        String username = (String) claims.get(UserConstants.USER_NAME);
        log.info("获取username成功,值为{}", username);
        return username;
    }

    public static String getUserName(HttpServletRequest request,String signKey){
        SysUserVo sysUserVo = getUserByRequest(request);
        if(null == sysUserVo) {
            return null;
        }
        log.info("获取username成功,值为{}", sysUserVo.getUsername());
        return sysUserVo.getUsername();
    }

    /**
     * 获取请求中的roles集合
     * @param request
     * @return roles
     */
    public static List<String> getRoleCodes_v1(HttpServletRequest request, String signKey) {
        String token = getToken(request);
        if(token == null){
            return null;
        }
        Claims claims = getClaims(token, signKey);
        List<String> roles = (List<String>) claims.get(UserConstants.AUTHORITIES);
        return roles;
    }

    public static List<String> getRoleCodes(HttpServletRequest request, String signKey) {
        SysUserVo sysUserVo = getUserByRequest(request);
        if(null == sysUserVo) {
            return null;
        }
        List<String> roles = sysUserVo.getSysRoleVoList().stream().map(SysRoleVo::getCode).collect(Collectors.toList());
        log.info("获取roleCodes成功,值为{}", JSON.toJSONString(roles));
        return roles;
    }
    /**
     * 获取请求中的roles集合
     * @param request
     * @return roles
     */
    public static List<SysRoleVo> getRoles_v1(HttpServletRequest request, String signKey) {
        String token = getToken(request);
        if(token == null){
            return null;
        }
        Claims claims = getClaims(token, signKey);
        List<SysRoleVo> roles = null;
        String strRoles = (String) claims.get(UserConstants.USER_ROLES);
        if(StringUtils1.isNotNull(strRoles)){
            roles = new ArrayList<>();
            SysRoleVo role = null;
            JSONArray lstRoles = JSONUtil.parseArray(strRoles);
            for(int i=0;i<lstRoles.size();i++){
                role = JSONUtil.toBean(JSONUtil.toJsonStr(lstRoles.get(i)),SysRoleVo.class);
                roles.add(role);
            }
        }
        return roles;
    }

    public static List<SysRoleVo> getRoles(HttpServletRequest request, String signKey) {
        SysUserVo sysUserVo = getUserByRequest(request);
        if(null == sysUserVo) {
            return null;
        }
        log.info("获取roles成功,值为{}", JSON.toJSONString(sysUserVo.getSysRoleVoList()));
        return sysUserVo.getSysRoleVoList();
    }

    /**
     * 根据request域获取登录用户信息
     * @param request
     * @return
     */
    public static SysUserVo getUserByRequest(HttpServletRequest request){
        String ticket = getTicket(request);
        String token = getToken_v2(request);
        if(StringUtils.isBlank(ticket) && StringUtils.isBlank(token)){
            return null;
        }
        SysUserVo sysUserVo = null;
        if(StringUtils.isNotBlank(ticket)) {
            sysUserVo = getUserByTicket(ticket);
        }
        if(StringUtils.isNotBlank(token)) {
            sysUserVo = getUserByToken(token);
        }
        return sysUserVo;
    }

    /**
     * 获取登录用户信息
     * @param ticket
     * @return
     */
    public static SysUserVo getUserByTicket(String ticket) {
        StringRedisTemplate stringRedisTemplate = ApplicationContextUtil.getBean(StringRedisTemplate.class);
        String userVoStr = stringRedisTemplate.opsForValue().get(CommonConstants.PREFIX_TICKET + ticket);
        if(StringUtils.isNotBlank(userVoStr)) {
            return JSONObject.parseObject(userVoStr, SysUserVo.class);
        }
        return null;
    }

    /**
     * 获取登录用户信息
     * @param token
     * @return
     *
     *
     *
     */
    public static SysUserVo getUserByToken(String token) {
        StringRedisTemplate stringRedisTemplate = ApplicationContextUtil.getBean(StringRedisTemplate.class);
        String userVoStr = stringRedisTemplate.opsForValue().get(CommonConstants.PREFIX_TOKEN + token);
        if(StringUtils.isNotBlank(userVoStr)) {
            return JSONObject.parseObject(userVoStr, SysUserVo.class);
        }
        return null;
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值