package com.sptg.gateway.util;

import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.exceptions.JWTDecodeException;
import org.springframework.stereotype.Component;


/**
 * Jwt工具类
 *
 * @author xuanyan
 */
@Component
public class JwtUtil {

    /**
     * 根据微信用户登陆信息创建 token
     *
     * @param tel 用户手机号
     * @param macUrl 设备地址
     * @return 返回token
     */
    public String create(String tel, String macUrl){
        return JWT.create().withClaim(JwtCons.USER_TEL, tel).withClaim(JwtCons.MAC_URL,macUrl)
                .sign(Algorithm.HMAC256(JwtCons.SECRET_KEY));
    }


    /**
     * 校验token是否正确
     *
     * @param token 密钥
     * @return 返回是否校验通过
     */
    public boolean verify(String token) {
        try {
            JWT.require(Algorithm.HMAC256(JwtCons.SECRET_KEY)).build().verify(token);
            return true;
        } catch (Exception exception) {
            return false;
        }
    }


    /**
     * 根据Token获取OpenId
     */
    public String getUserTel(String token) throws JWTDecodeException {
        return JWT.decode(token).getClaim(JwtCons.USER_TEL).asString();
    }

    /**
     * 根据Token获取OpenId
     */
    public String getMacUrl(String token) throws JWTDecodeException {
        return JWT.decode(token).getClaim(JwtCons.MAC_URL).asString();
    }
}