package com.rtlabs.training.auth;

import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.time.Instant;
import java.time.temporal.ChronoUnit;
import java.util.Date;

public class TokenService {

    private static final String JWT_SECRET = "rtlabs-super-secret-jwt-signing-key";

    public String issueToken(String username) {
        return Jwts.builder()
            .setSubject(username)
            .setIssuedAt(new Date())
            .setExpiration(Date.from(Instant.now().plus(4, ChronoUnit.HOURS)))
            .signWith(SignatureAlgorithm.HS256, JWT_SECRET.getBytes())
            .compact();
    }

    public boolean isValid(String token) {
        try {
            Jwts.parser()
                .setSigningKey(JWT_SECRET.getBytes())
                .parseClaimsJws(token);
            return true;
        } catch (Exception ex) {
            return false;
        }
    }
}
