Files
2026-05-31 20:22:50 +01:00

2.1 KiB

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.