88import jakarta .annotation .PostConstruct ;
99import org .springframework .beans .factory .annotation .Value ;
1010import org .springframework .stereotype .Service ;
11+ import io .jsonwebtoken .ExpiredJwtException ;
12+ import io .jsonwebtoken .MalformedJwtException ;
13+ import io .jsonwebtoken .UnsupportedJwtException ;
14+ import io .jsonwebtoken .security .SignatureException ;
15+ import org .slf4j .Logger ;
16+ import org .slf4j .LoggerFactory ;
1117
1218import javax .crypto .SecretKey ;
1319import java .nio .charset .StandardCharsets ;
@@ -24,6 +30,8 @@ public class TokenService
2430
2531 private SecretKey key ;
2632
33+ private static final Logger logger = LoggerFactory .getLogger (TokenService .class );
34+
2735 @ PostConstruct
2836 public void init () {
2937 this .key = Keys .hmacShaKeyFor (jwtSecretString .getBytes (StandardCharsets .UTF_8 ));
@@ -53,8 +61,25 @@ public String validateToken(String token)
5361 .getBody ()
5462 .getSubject ();
5563 }
56- catch (Exception e ) {
57- throw new InvalidTokenException ("Token JWT expirado ou inválido" );
64+ catch (ExpiredJwtException ex ) {
65+ logger .error ("Token JWT expirou: {}" , ex .getMessage ());
66+ throw new InvalidTokenException ("Sua sessão expirou. Por favor, faça login novamente." );
67+ }
68+ catch (SignatureException ex ) {
69+ logger .error ("Assinatura do JWT é inválida: {}" , ex .getMessage ());
70+ throw new InvalidTokenException ("Assinatura do token é inválida." );
71+ }
72+ catch (MalformedJwtException ex ) {
73+ logger .error ("Token JWT malformado: {}" , ex .getMessage ());
74+ throw new InvalidTokenException ("Token malformado." );
75+ }
76+ catch (UnsupportedJwtException ex ) {
77+ logger .error ("Token JWT não é suportado: {}" , ex .getMessage ());
78+ throw new InvalidTokenException ("Este tipo de token não é suportado." );
79+ }
80+ catch (IllegalArgumentException ex ) {
81+ logger .error ("O conteúdo do JWT está vazio: {}" , ex .getMessage ());
82+ throw new InvalidTokenException ("Token inválido ou vazio." );
5883 }
5984 }
6085}
0 commit comments