Files
reactive-mail-server/backend/src/main/java/com/mailserver/util/JwtUtils.java
T

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;
}
}
}