DexCode Packages
Menu

@dexcode/helpers

JWT e rotas

Funções usadas pelo createProxy e exportadas para você usar onde precisar. Nenhuma depende do Next.js.

isPublicRoute

Diz se um caminho bate com alguma rota da lista. * é coringa, e /produtos/* também libera o próprio /produtos.

ts
import { isPublicRoute } from "@dexcode/helpers";

isPublicRoute("/produtos/10", ["/produtos/*"]); // true
isPublicRoute("/produtosx", ["/produtos/*"]);   // false

Teste aqui

Rota pública: o proxy libera sem login

  • pública
  • pública
  • pública
  • pública
  • protegida
  • protegida

decodeJwt, isTokenExpired e hasKeycloakSystemAccess

ts
import { decodeJwt, hasKeycloakSystemAccess, isTokenExpired } from "@dexcode/helpers";
import type { KeycloakJwtPayload } from "@dexcode/types";

const payload = decodeJwt<KeycloakJwtPayload>(token); // null se o token estiver malformado

if (payload && !isTokenExpired(payload) && hasKeycloakSystemAccess(payload, "dexcode-system")) {
  console.log(payload.preferred_username);
}
  • decodeJwt(token): retorna o payload ou null. Não valida a assinatura.
  • isTokenExpired(payload, clockSkewSeconds?): true se passou do exp ou se o token não tem exp.
  • hasKeycloakSystemAccess(payload, system): true se o sistema existe em resource_access.

Teste aqui

O token é decodificado no seu navegador e não é enviado para lugar nenhum.