Skip to content

Backend - Implementar Endpoint para Selecionar User #29

@alvaropmontenegro

Description

@alvaropmontenegro

Tarefa: Backend – Implementar Endpoints para Selecionar Users (sempre filtrando por Tenant)

Implementar endpoints no backend para consultar usuários no sistema. Toda busca deve obrigatoriamente ser filtrada pelo Tenant.


Regras Gerais

  • Toda requisição deve conter o contexto do tenant_id (header, claim ou rota — seguir padrão do projeto)
  • Todas as consultas devem aplicar filtro obrigatório:
    • User.tenant_id == tenant_id
  • Não retornar o campo password em nenhuma resposta
  • Utilizar DTO de resposta

Endpoint 1 – Buscar User por ID

  • Definir rota:
    • GET /users/{id}
  • Receber:
    • id (GUID) – via route param
  • Validar:
    • id GUID válido
    • Presença do tenant_id no contexto
  • Consultar no banco aplicando filtro:
    • User.id == id AND User.tenant_id == tenant_id
  • Retornar:
    • 200 OK com dados do usuário
    • 404 Not Found se não existir ou não pertencer ao Tenant
    • 400 Bad Request se id inválido

Endpoint 2 – Buscar User por Email

  • Definir rota:
    • GET /users/email/{email}
  • Receber:
    • email – via route param
  • Validar formato do email
  • Consultar no banco aplicando filtro:
    • User.email == email AND User.tenant_id == tenant_id
  • Retornar:
    • 200 OK com dados do usuário
    • 404 Not Found se não existir
    • 400 Bad Request para email inválido

Endpoint 3 – Listar Todos Users do Tenant

  • Definir rota:
    • GET /users
  • Consultar todos os usuários do Tenant:
    • User.tenant_id == tenant_id
  • Retornar:
    • 200 OK com lista de usuários
    • Lista vazia caso não existam registros (não retornar erro)

Contexto

No aplicativo de academia, cada User pertence a um único Tenant.
Nenhuma consulta deve permitir acesso a usuários de outro Tenant, garantindo isolamento de dados e segurança multi-tenant.

Todas as consultas devem respeitar o escopo do Tenant autenticado.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions