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.