Pular para o conteúdo principal
Versão: 1.0

Autenticação

Recapitulando as 3 camadas: toda chamada de negócio leva a X-API-Key (e, idealmente, o X-Student-RM). Ações do cliente logado também levam o token JWT dele.

Headers padrão do app​

cliente.js
const BASE = 'http://localhost:3333/v1';

// Base: identifica o grupo + o aluno
const headers = {
'X-API-Key': process.env.API_KEY, // sk_live_...
'X-Student-RM': 'RM550001',
'Content-Type': 'application/json',
};

Login do cliente final​

O comprador se cadastra/loga e recebe um token. A partir daí, as ações dele levam Authorization: Bearer <token>.

# Cadastro (ou troque por /auth/login se já existe)
curl -X POST "$BASE/auth/register" \
-H "X-API-Key: $API_KEY" -H "X-Student-RM: RM550001" \
-H "Content-Type: application/json" \
-d '{"name":"Maria","email":"maria@x.com","password":"123456"}'
Quando usar o Bearer

Só nas ações do comprador: carrinho, checkout, pedidos dele, endereços e favoritos. Listar o catálogo não precisa de token de cliente — só da X-API-Key.

Erros de autenticação​

StatuscodeProvável causaComo resolver
401UNAUTHORIZEDSem X-API-Key, chave inválida ou revogadaGere/ative a chave no painel
401UNAUTHORIZEDToken do cliente ausente/expiradoRefazer POST /auth/login
403FORBIDDENGrupo desativado pelo professorFalar com o professor
403FORBIDDENToken do cliente é de outro grupoLogar de novo com a chave certa
Segurança

A X-API-Key não é segredo do usuário — é segredo do grupo. Nunca exponha a chave no bundle de um app público sem um backend intermediário; para trabalhos da turma, mantenha em variável de ambiente e evite versioná-la.

Formato de erro​

Todos os erros seguem o mesmo envelope:

{ "error": { "code": "UNAUTHORIZED", "message": "API key inválida." } }