Novos Tipos de Páginas

Estrutura Comum

As novas páginas também são configuradas no arquivo config/pages.json com os seguintes campos:

  • type: Identifica o tipo da página.
  • url: URL base da página (customizável).
  • routes: Lista de rotas específicas, com os seguintes atributos:
    • name: Identificador único da rota.
    • url: Segmento da URL adicionado à URL base.
    • path: Caminho do arquivo HTML renderizado.
    • query: Arquivo GraphQL usado para consultas.
    • authLevel (opcional): Define o nível de autenticação necessário para acessar a rota.
    • authFallback (opcional): Define a URL para redirecionamento, caso o usuário não possua o nível de autenticação necessário.
    • queryStrings (opcional): Utilizado para mapear parâmetros de query string para a query da página.

Exemplos de Configuração por Tipo

Tipo de página checkout

Este tipo é focado em todas as páginas relacionadas ao fechamento de pedido, como carrinho, fechamento e confirmação.

{ "type": "checkout", "url": "checkout", "routes": [ { "name": "home", "url": "", "path": "checkout/checkout.html", "query": "checkout/checkout.graphql" }, { "name": "complete", "url": "complete", "path": "checkout/close.html", "query": "checkout/close.graphql", "authLevel": "New", "authFallback": "login" }, { "name": "confirmation", "url": "confirmation", "path": "checkout/confirmation.html", "query": "checkout/confirmation.graphql", "queryStrings": [ { "name": "checkoutId", "type": "Uuid" } ] } ] }

Tipo de página login

Este tipo é destinado à todas as páginas relacionadas ao processo de autenticação do usuário, incluindo login, autenticação, recuperação de senha e cadastro.

{ "type": "login", "url": "login", "routes": [ { "name": "simple", "url": "", "path": "login/simple.html", "query": "login/simple.graphql" }, { "name": "authenticate", "url": "authenticate", "path": "login/authenticate.html", "query": "login/authenticate.graphql" } // ... ] }

Tipo de página account

Este tipo é destinado às páginas da conta do usuário, permitindo que os usuários gerenciem suas informações pessoais, visualizem pedidos, alterem senhas, gerenciem endereços, contas correntes e assinaturas.

{ "type": "account", "url": "account", "routes": [ { "name": "orders", "url": "", "path": "account/orders.html", "query": "account/orders.graphql", "authLevel": "Authenticated", "authFallback": "login/authenticate", "queryStrings": [ { "name": "orderId", "type": "Long" } ] }, { "name": "data", "url": "my-data", "path": "account/account.html", "query": "account/account.graphql", "authLevel": "Simple", "authFallback": "login/authenticate" } // ... ] }

Tipo de página partner

Este tipo é destinado às páginas de Parceiro do sistema, permitindo a gestão de portfólio e preços, além de outras funcionalidades específicas para parceiros.

{ "type": "partner", "url": "partner", "routes": [ { "name": "client", "url": "list", "path": "partner/list_client.html", "query": "partner/list_client.graphql", "authLevel": "Simple", "authFallback": "login/authenticate" }, { "name": "closed", "url": "closed", "path": "partner/closed.html" } ] }

O campo name nas rotas

O name da rota é utilizado para facilitar a navegação na loja. A estrutura de rotas é mapeada para o campo store.urls.checkout_pages, que está disponível no contexto do Scriban.

Exemplo de Uso:

<a href="{{store.urls.checkout_pages.account.orders}}">Meus pedidos</a>

O campo store.urls.checkout_pages é preenchido com as rotas mapeadas no pages.json, então se mapearmos este campo para um json no ambiente local veremos o seguinte:

{ "checkout": { "home": "https://localhost:5501/checkout", "complete": "https://localhost:5501/checkout/complete", "confirmation": "https://localhost:5501/checkout/confirmation" }, "login": { "simple": "https://localhost:5501/login", "authenticate": "https://localhost:5501/login/authenticate", "password_recovery": "https://localhost:5501/login/password/recovery", "signup": "https://localhost:5501/login/signup", "impersonate": "https://localhost:5501/login/impersonate" }, "account": { "orders": "https://localhost:5501/account", "data": "https://localhost:5501/account/my-data", "password": "https://localhost:5501/account/password", "addresses": "https://localhost:5501/account/addresses", "checking_account": "https://localhost:5501/account/checking_account", "subscriptions": "https://localhost:5501/account/subscriptions" } }

No ambiente de produção, as URLs refletirão o domínio de produção configurado.

O campo authLevel

O campo authLevel é utilizado para definir o nível de autenticação necessário para acessar uma rota específica. Ele controla como as rotas são acessadas e redireciona o usuário, caso não atenda aos critérios definidos. Existem três opções disponíveis para o campo authLevel, que são:

  • New: Indica que o usuário iniciou um cadastro, preenchendo informações básicas como e-mail ou CPF, mas ainda não concluiu o processo de autenticação. Este nível pode ser utilizado para processos de onboarding ou para páginas de finalização de cadastro.
  • Simple: Indica que o login foi realizado respondendo a perguntas simples de validação. Esse nível é utilizado para acessos que não exigem autenticação completa, mas verificam informações básicas do usuário.
  • Authenticated: Indica que o login foi realizado com credenciais completas, como usuário e senha, ou através de um provedor de login social. Este nível é recomendado para acessos que exigem maior segurança ou dados sensíveis.

O Campo authFallback

Quando o usuário não possui o nível de autenticação exigido pela rota, ele será redirecionado para a url definida em authFallback.

Exemplo de Redirecionamento:
Se a rota exige AUTHENTICATED e o usuário está autenticado apenas no nível SIMPLE, ele será redirecionado para a URL definida no authFallback.

{ "name": "orders", "url": "", "path": "account/orders.html", "authLevel": "Authenticated", "authFallback": "login/authenticate" }

Neste exemplo, usuários não autenticados no nível AUTHENTICATED serão redirecionados para a página de autenticação definida pela rota login/authenticate.