30 lines
2.1 KiB
Markdown
30 lines
2.1 KiB
Markdown
# US07 - Agrupamento do Menu de Navegação (Menu Gestão)
|
|
|
|
**Como** Utilizador autenticado do RefoodOne
|
|
**Quero** que as opções "Beneficiários", "Turnos" e "Entregas" sejam agrupadas num submenu sob um menu principal chamado "Gestão"
|
|
**Para** melhorar a organização do cabeçalho de navegação e tornar a interface mais limpa e intuitiva.
|
|
|
|
## Descrição do Fluxo
|
|
Ao fazer login na aplicação, o utilizador visualiza um cabeçalho de navegação (navbar) simplificado. Em vez de ter os links principais expostos diretamente, é exibido um item de menu interativo chamado **Gestão**. Ao clicar ou passar o cursor sobre este menu, abre-se um dropdown contendo as opções autorizadas para o perfil do utilizador.
|
|
|
|
## Critérios de Aceitação
|
|
|
|
### 1. Interface Gráfica (UI)
|
|
- **Menu Gestão**: Deve ser exibido como um menu dropdown na barra de navegação superior, com a etiqueta "Gestão" em PT-PT.
|
|
- **Opções do Submenu**: O dropdown deve conter as seguintes opções (quando aplicável ao perfil):
|
|
- **Beneficiários**
|
|
- **Turnos**
|
|
- **Entregas**
|
|
- **Estilo**: O dropdown deve seguir a estética Bootstrap 5, com comportamento responsivo (fechamento automático ao clicar fora e suporte a ecrãs táteis/mobile).
|
|
|
|
### 2. Comportamento e Regras de Negócio
|
|
- As opções visíveis no submenu devem respeitar rigorosamente as permissões de cada perfil de utilizador:
|
|
- **Administrador (Admin)**: Visualiza todas as opções no submenu (**Beneficiários**, **Turnos**, **Entregas**).
|
|
- **Gestor de Turno (Shift Manager)**: Visualiza as opções permitidas (**Turnos**, **Entregas** e **Beneficiários** conforme permissões de gestão).
|
|
- **Voluntário (Volunteer)**: Visualiza apenas a opção **Entregas** (ou redirecionado diretamente).
|
|
- O submenu só deve ser visível se o utilizador estiver autenticado.
|
|
|
|
### 3. Integração de Dados / Segurança
|
|
- O controlo de visibilidade dos links do submenu deve basear-se no objeto `data.user` carregado pelo layout principal (`+layout.svelte`).
|
|
- A proteção de rotas no servidor (`hooks.server.ts`) deve continuar a validar e bloquear acessos diretos caso o utilizador digite o URL manualmente.
|