package com.allfree.allfreespringbackend.auth.security; import com.allfree.allfreespringbackend.common.Properties; import io.jsonwebtoken.*; import org.springframework.security.core.Authentication; import org.springframework.stereotype.Component; import java.util.Date; @Component public class JwtUtil { private final String jwtSecret = Properties.jwtSecretKey; public String generateJwtToken(Authentication authentication) { UserDetailsImpl userPrincipal = (UserDetailsImpl) authentication.getPrincipal(); return Jwts.builder() .setSubject(userPrincipal.getUsername()) .setIssuedAt(new Date()) .signWith(SignatureAlgorithm.HS512, jwtSecret) .compact(); } public String getUserNameFromJwtToken(String token) { return Jwts.parser().setSigningKey(jwtSecret).parseClaimsJws(token).getBody().getSubject(); } public boolean validateJwtToken(String authToken) { try { Jwts.parser().setSigningKey(jwtSecret).parseClaimsJws(authToken); return true; } catch (SignatureException e) { System.out.println("Invalid JWT signature: {} " + e.getMessage()); } catch (MalformedJwtException e) { System.out.println("Invalid JWT token: {}" + e.getMessage()); } catch (ExpiredJwtException e) { System.out.println("JWT token is expired: {}" + e.getMessage()); } catch (UnsupportedJwtException e) { System.out.println("JWT token is unsupported: {}" + e.getMessage()); } catch (IllegalArgumentException e) { System.out.println("JWT claims string is empty: {}" + e.getMessage()); } return false; } }