Pular para o conteúdo principal

Admin — Gestão de Usuários

Ações administrativas sobre User e suas roles. Todos os endpoints exigem role admin.

Endpoints

MétodoRotaDescrição
POST/usersCria user
GET/users?role=sellerLista (filtro opcional)
GET/users/{userId}Detalhe
POST/users/{userId}/suspendSuspende — bloqueia login
POST/users/{userId}/activateReativa
POST/users/{userId}/roles/{role}Adiciona role (customer, seller, admin)
DELETE/users/{userId}/roles/{role}Remove role

Estados do User

statusEfeito
activeLogin normal
inactiveDefault em alguns fluxos internos (ex: aguardando ativação)
suspendedTentativa de login retorna 401

Regras críticas

RegraHTTPMensagem
Admin não pode se auto-suspender400"Cannot suspend yourself"
Admin não pode remover a própria role admin400"Cannot remove admin role from yourself"
User precisa manter pelo menos 1 role400"User must have at least one role"

:::danger Self-actions bloqueadas A API protege contra o admin logado "travar a própria conta" — as 3 regras acima garantem que um admin não consegue se deixar sem permissão ou sem acesso. :::

Multi-role

Um mesmo user pode ter múltiplas roles (ex: customer + seller). Um seller que quer testar a loja como comprador mantém ambas.

Exemplos

Promover user existente a admin

curl -X POST https://api.labanana.art/users/{userId}/roles/admin \
-H "Authorization: Bearer $ADMIN_TOKEN"

Suspender seller problemático

curl -X POST https://api.labanana.art/users/{userId}/suspend \
-H "Authorization: Bearer $ADMIN_TOKEN"

Reativar

curl -X POST https://api.labanana.art/users/{userId}/activate \
-H "Authorization: Bearer $ADMIN_TOKEN"

Remover role

curl -X DELETE https://api.labanana.art/users/{userId}/roles/seller \
-H "Authorization: Bearer $ADMIN_TOKEN"

Role automático via profile

Criar ou deletar profile adiciona/remove role automaticamente:

AçãoEfeito em role
POST /profiles/seller/meAdiciona role=seller
DELETE /profiles/seller/meRemove role=seller
POST /profiles/customer/meAdiciona role=customer
DELETE /profiles/customer/meRemove role=customer

Se o user ficaria sem nenhuma role após a remoção, a API bloqueia (regra "pelo menos 1 role").

Suspensão vs Soft Delete

Não há endpoint de hard delete de user na API admin. Para remover um user:

  1. Suspender (/suspend) bloqueia login imediatamente
  2. Se quiser remover dados dos profiles (ex: dados LGPD), deletar profiles separadamente
  3. Hard delete só via script scripts/cleanup_all.py (ambiente de dev — ver Scripts & Cron)

UX sugerida no painel admin

  • Lista de usuários com filtro por role (?role=seller, ?role=admin, etc.) e por status
  • Badge de status com cores: active (verde), inactive (cinza), suspended (vermelho)
  • Ações por linha: suspender/reativar, adicionar/remover role
  • Ao tentar suspender a si mesmo ou remover própria role admin: UI desabilita o botão e exibe tooltip explicando a regra