Skip to content

Commit 814731c

Browse files
committed
feat(exception): aprimora o tratamento de exceções no método validateToken
1 parent c690cd7 commit 814731c

1 file changed

Lines changed: 27 additions & 2 deletions

File tree

linktreeclone-backend/src/main/java/br/com/linktreeclone/security/TokenService.java

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,12 @@
88
import jakarta.annotation.PostConstruct;
99
import org.springframework.beans.factory.annotation.Value;
1010
import 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

1218
import javax.crypto.SecretKey;
1319
import 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

Comments
 (0)