feat: bootstrap project

This commit is contained in:
Duarte
2026-05-31 20:22:50 +01:00
commit 66581ef584
65 changed files with 7915 additions and 0 deletions
@@ -0,0 +1,42 @@
# US13 - Gestão de Utilizadores
**Como** Administrador do RefoodOne
**Quero** poder visualizar e gerir as contas de utilizadores (voluntários, gestores de turno e administradores) do sistema
**Para** controlar os perfis de acesso e atualizar as credenciais dos utilizadores de forma segura.
## Descrição do Fluxo
Ao aceder ao sistema como administrador:
1. O utilizador encontra um novo submenu **Utilizadores** no menu dropdown principal **Gestão**.
2. Ao selecionar **Utilizadores**, é direcionado para o ecrã de listagem de utilizadores.
3. No ecrã de listagem, pode ver uma tabela contendo o **Nome de Utilizador** e o **Perfil (Role)** de cada conta registada. Cada linha tem uma opção/link para aceder ao detalhe do utilizador.
4. No ecrã de detalhe de um utilizador, o administrador pode:
- Alterar o **Nome de Utilizador**.
- Alterar o **Perfil** (selecionando numa lista dropdown as opções: *Administrador*, *Gestor de Turno*, *Voluntário*).
- Definir uma nova password na secção correspondente, inserindo a nova password e confirmando a mesma num segundo campo (não sendo necessária a password antiga).
5. O administrador clica em Guardar para persistir as alterações na base de dados.
## Critérios de Aceitação
### 1. Interface Gráfica (UI)
- **Menu Gestão**: Adicionar a ligação para "Utilizadores" no menu dropdown do cabeçalho principal.
- **Ecrã de Listagem**:
- Tabela com colunas: **Nome** (`username`) e **Perfil** (`role`).
- Botão ou ligação para editar o detalhe em cada linha de utilizador.
- **Ecrã de Detalhe**:
- Campo de texto para o **Nome de Utilizador**.
- Dropdown com as roles suportadas em PT-PT:
- *Administrador* (`admin`)
- *Gestor de Turno* (`shift_manager`)
- *Voluntário* (`volunteer`)
- Secção "Alterar Password" contendo dois campos de texto/password: **Nova Password** e **Confirmar Nova Password**.
- Mensagens de erro/sucesso claras em português.
### 2. Comportamento e Regras de Negócio
- Apenas utilizadores com a role `admin` podem aceder a estes ecrãs (tanto a listagem como o detalhe).
- Se a secção de password for preenchida, o sistema deve validar se as duas passwords coincidem e se cumprem requisitos mínimos de segurança (ex: tamanho mínimo).
- Se a secção de password for deixada em branco, o utilizador é guardado mantendo a password antiga sem alterações.
- O ecrã de detalhe também deve permitir criar um utilizador novo (ou ter um fluxo correspondente) com os mesmos campos.
### 3. Integração de Dados / Segurança
- **Segurança**: As novas passwords devem ser encriptadas de forma segura (ex: hashing) antes de guardar na tabela `users` da base de dados.
- **Controlo de Acesso**: Bloqueio de acesso a nível de rotas no servidor (`hooks.server.ts` ou páginas locais) para utilizadores que não tenham perfil `admin`.