Skip to content

Captação — 4. Login de admin por senha + autorização + seed #82

Description

@tarcisiopgs

Parte do épico Captação de profissionais — landing page e aprovação interna (frente: backend).

Objetivo: Login de admin por senha, autorização admin e seed.

Arquivos: Modify src/controller/userController/index.mjs (ou adminController), src/routes/index.mjs, src/middleware/authMiddleware.mjs · Create src/scripts/seedAdmin.mjs · Test src/tests/adminAuth.test.mjs
Dependências: #79 (Model User)

O que fazer:

  • POST /auth/adminLogin (email + password, confirma userType inclui admin, bcrypt.compare, emite JWT). Rate limiting estrito (ex.: 5/15min por IP).
  • requireAdmin: como o authMiddleware só seta req.userId, faz User.findById(req.userId) e checa userType.includes("admin"). Aplicar no prefixo /admin. Barra token registration_pending.
  • seedAdmin.mjs cria admin com senha hasheada lendo ADMIN_SEED_EMAIL/ADMIN_SEED_PASSWORD do ambiente (adicionar ao .env.example); nunca logar a senha.

Test scenarios: login correto → 200+token; senha errada → 401; não-admin → 401/403; requireAdmin com token de profissional/registration_pending → 403; seed hasheia a senha.

Pronto quando: admin provisionável por seed loga com e-mail+senha (com rate limit) e o middleware protege rotas via lookup no banco.

Metadata

Metadata

Assignees

No one assigned

    Labels

    captaçãoFrente: Captação de profissionais (LP + cadastro + moderação)enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions