53 lines
1.4 KiB
Java
53 lines
1.4 KiB
Java
package com.mailserver.util;
|
|
|
|
import io.jsonwebtoken.Claims;
|
|
import io.jsonwebtoken.Jwts;
|
|
import io.jsonwebtoken.security.Keys;
|
|
import javax.crypto.SecretKey;
|
|
import java.nio.charset.StandardCharsets;
|
|
import java.util.Date;
|
|
|
|
public class JwtUtils {
|
|
|
|
private static final long EXPIRATION_MS = 1000L * 60 * 60 * 24; // 24 часа
|
|
|
|
private final SecretKey signingKey;
|
|
|
|
public JwtUtils(String secret) {
|
|
this.signingKey = Keys.hmacShaKeyFor(secret.getBytes(StandardCharsets.UTF_8));
|
|
}
|
|
|
|
public String generateToken(String email) {
|
|
Date now = new Date();
|
|
Date expiry = new Date(now.getTime() + EXPIRATION_MS);
|
|
|
|
return Jwts.builder()
|
|
.subject(email)
|
|
.issuedAt(now)
|
|
.expiration(expiry)
|
|
.signWith(signingKey)
|
|
.compact();
|
|
}
|
|
|
|
public String getEmailFromToken(String token) {
|
|
Claims claims = Jwts.parser()
|
|
.verifyWith(signingKey)
|
|
.build()
|
|
.parseSignedClaims(token)
|
|
.getPayload();
|
|
return claims.getSubject();
|
|
}
|
|
|
|
public boolean isValidToken(String token) {
|
|
try {
|
|
Jwts.parser()
|
|
.verifyWith(signingKey)
|
|
.build()
|
|
.parseSignedClaims(token);
|
|
return true;
|
|
} catch (Exception e) {
|
|
return false;
|
|
}
|
|
}
|
|
}
|