CoolFace
Apppublic

sakthivikram/geo-location

sourceHugging Faceupdated 5mo agoView on Hugging Face
0likes
JwtTokenProvider.java100 linesDownload Raw Back to security
1package com.georeport.security;2 3import io.jsonwebtoken.*;4import io.jsonwebtoken.security.Keys;5import org.springframework.beans.factory.annotation.Value;6import org.springframework.security.core.Authentication;7import org.springframework.security.core.userdetails.UserDetails;8import org.springframework.stereotype.Component;9 10import javax.crypto.SecretKey;11import java.nio.charset.StandardCharsets;12import java.util.Date;13 14/**15 * JWT Token Provider for generating and validating JWT tokens.16 * Handles token creation, validation, and claim extraction.17 */18@Component19public class JwtTokenProvider {20 21    @Value("${jwt.secret}")22    private String jwtSecret;23 24    @Value("${jwt.expiration}")25    private Long jwtExpiration;26 27    /**28     * Generate signing key from secret29     */30    private SecretKey getSigningKey() {31        byte[] keyBytes = jwtSecret.getBytes(StandardCharsets.UTF_8);32        return Keys.hmacShaKeyFor(keyBytes);33    }34 35    /**36     * Generate JWT token from Authentication object37     */38    public String generateToken(Authentication authentication) {39        UserDetails userDetails = (UserDetails) authentication.getPrincipal();40        return generateToken(userDetails.getUsername());41    }42 43    /**44     * Generate JWT token from email45     */46    public String generateToken(String email) {47        Date now = new Date();48        Date expiryDate = new Date(now.getTime() + jwtExpiration);49 50        return Jwts.builder()51                .subject(email)52                .issuedAt(now)53                .expiration(expiryDate)54                .signWith(getSigningKey())55                .compact();56    }57 58    /**59     * Get email (subject) from JWT token60     */61    public String getEmailFromToken(String token) {62        Claims claims = Jwts.parser()63                .verifyWith(getSigningKey())64                .build()65                .parseSignedClaims(token)66                .getPayload();67 68        return claims.getSubject();69    }70 71    /**72     * Validate JWT token73     */74    public boolean validateToken(String token) {75        try {76            Jwts.parser()77                    .verifyWith(getSigningKey())78                    .build()79                    .parseSignedClaims(token);80            return true;81        } catch (MalformedJwtException ex) {82            System.err.println("Invalid JWT token");83        } catch (ExpiredJwtException ex) {84            System.err.println("Expired JWT token");85        } catch (UnsupportedJwtException ex) {86            System.err.println("Unsupported JWT token");87        } catch (IllegalArgumentException ex) {88            System.err.println("JWT claims string is empty");89        }90        return false;91    }92 93    /**94     * Get expiration duration in milliseconds95     */96    public Long getExpirationMs() {97        return jwtExpiration;98    }99}100