Pular para conteúdo

Provisionar o banco db_auth e cadastrar clientes

Status: Aprovado · Responsável: Gustavo Madruga · Atualizado em: 2026-06-30

O que é

Cria o banco db_auth e o usuário do serviço, e cadastra o primeiro cliente e seus usuários pAbast pela API administrativa. Complementa o deploy e a geração de chaves.

Quando usar

  • Setup de um ambiente novo, antes do primeiro login.
  • Onboarding de um cliente novo (só os passos 3–4).

Pré-requisitos

  • PostgreSQL 18+ acessível.
  • Para o cadastro via API: o serviço no ar e um token admin (login Firebase @xadm.com.br, ver passo 2).

Passos

1. Criar o banco e o usuário

CREATE DATABASE db_auth;
CREATE USER auth_service WITH PASSWORD 'senha_segura_aqui';
GRANT CONNECT ON DATABASE db_auth TO auth_service;
\c db_auth
GRANT USAGE  ON SCHEMA public TO auth_service;
GRANT CREATE ON SCHEMA public TO auth_service;   -- o Flyway cria as tabelas no startup

O Flyway roda no startup e aplica V1..V6 (cria clientes, pabast_senhas, oauth_access_requests, oauth_access_grants). As variáveis de conexão são DATASOURCES_DEFAULT_URL, DB_USER, DB_PASSWORD (ver deploy).

2. Obter um token admin (Firebase)

Requer AUTH_FIREBASE_PROJECT_ID configurado. Com o Firebase ID Token de um usuário @xadm.com.br:

curl -sf -X POST https://auth.xadm.biz/api/auth/firebase/login \
  -H "Authorization: Bearer $FIREBASE_TOKEN" | jq -r .access_token

Guarde o access_token como ADMIN_TOKEN.

3. Cadastrar o cliente

curl -sf -X POST https://auth.xadm.biz/api/admin/clients \
  -H "Authorization: Bearer $ADMIN_TOKEN" -H "Content-Type: application/json" \
  -d '{ "cliente_id": "vantroba", "audience": "powersync-vantroba",
        "auth_methods": ["pabast"] }' | jq .

Adicione "oauth_firebase" em auth_methods se o cliente for usar login Google de apps terceiros.

4. Cadastrar usuários pAbast

curl -sf -X POST https://auth.xadm.biz/api/admin/pabast/users \
  -H "Authorization: Bearer $ADMIN_TOKEN" -H "Content-Type: application/json" \
  -d '{ "cliente_id": "vantroba", "id_usuario": "123",
        "nome_usuario": "João Silva", "senha": "1234", "senha_compl": "567" }' | jq .

As senhas são hasheadas no servidor — nunca ficam em texto claro.

Verificação

SELECT cliente_id, active, auth_methods FROM clientes;
SELECT cliente_id, id_usuario, nome_usuario FROM pabast_senhas;
SELECT * FROM flyway_history_auth ORDER BY installed_rank;

E um login real fim-a-fim conforme o deploy.

Reversão

Remover um cliente: DELETE /api/admin/clients/{clienteId}. Remover um usuário: DELETE /api/admin/pabast/users/{clienteId}/{id}. Destrutivo — confirme o clienteId antes.