verify method
Valida o token; retorna os claims ou null se inválido/expirado.
Implementation
Map<String, Object?>? verify(String token) {
final parts = token.split('.');
if (parts.length != 3) return null;
final expected = _sign('${parts[0]}.${parts[1]}');
if (!_constTimeEquals(expected, parts[2])) return null;
final claims = jsonDecode(_unb64(parts[1])) as Map<String, Object?>;
final exp = claims['exp'];
if (exp is int && DateTime.now().millisecondsSinceEpoch ~/ 1000 > exp) {
return null; // expirado
}
return claims;
}