package com.boot.util;
import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.exceptions.JWTDecodeException;
import com.auth0.jwt.exceptions.JWTVerificationException;
import com.auth0.jwt.interfaces.DecodedJWT;
import java.util.Date;
import java.util.Map;
public class JWTUtils {
private static final String SECRET_KEY = "your-secret-key";
private static final long EXPIRATION_TIME = 1000 * 60 * 60 * 24;
public static String generateToken(Map<String, Object> claim, Integer uid) {
return JWT.create()
.withSubject(uid + "")
.withClaim("claims", claim)
.withExpiresAt(new Date(System.currentTimeMillis() + EXPIRATION_TIME))
.sign(Algorithm.HMAC256(SECRET_KEY));
}
public static DecodedJWT parseToken(String token) throws JWTVerificationException {
Algorithm algorithm = Algorithm.HMAC256(SECRET_KEY);
JWTVerifier verifier = JWT.require(algorithm).build();
return verifier.verify(token);
}
public static String getSubject(String token) throws JWTDecodeException {
DecodedJWT jwt = parseToken(token);
return jwt.getSubject();
}
}