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: Task 1 (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

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions