Vai al contenuto

Structural Menu Registration

Questa nota serve a evitare nuovi casi di menu visibili a meta o con permessi incompleti.

Problema

Per un nuovo menu non basta registrare la view con appbuilder.add_view(...).

I livelli reali da allineare sono:

  1. registrazione menu/view
  2. menu_access
  3. permessi della BaseView
  4. filtro runtime menu (forced labels / tenant forced labels)
  5. accessibilita runtime della view (is_accessible)

Se uno di questi manca, il menu puo: - non comparire - comparire ma dare accesso negato - comparire in tenant ma non in control plane

Pattern attuale

In app/__init__.py esistono due helper:

  • _register_structural_menu_view(...)
  • _register_structural_menu_label(...)

Usarli per tutti i nuovi menu amministrativi recenti.

Quando usare cosa

Usa _register_structural_menu_view(...) quando il menu punta a una BaseView.

Esempi: - Import RAS Legacy - Template Legacy - Easy Builder - Template Dynamic - Policy Documenti per Servizio - Offerta RAS - Onboarding Moduli - Nuovo Onboarding Amministratore

Usa _register_structural_menu_label(...) quando il menu e un link o una voce senza view FAB dedicata.

Esempio: - Preventivi RAS

Regola pratica

Per un nuovo menu:

  1. registrare la view/link con appbuilder
  2. aggiungere il menu al pattern strutturale con uno dei due helper
  3. se la view ha regole speciali, verificare is_accessible()
  4. se serve control plane, non dipendere solo dai moduli tenant

Checklist minima

Prima di considerare chiuso un nuovo menu, verificare:

  1. compare nel tenant giusto
  2. compare in control plane se richiesto
  3. il ruolo previsto ha menu_access
  4. la view ha i permessi necessari
  5. il runtime menu non la filtra via
  6. il click non produce Accesso negato

Nota prudenziale

Con utenti operativi attivi:

  • evitare refactor ampi del bootstrap menu
  • aggiungere solo il menu nuovo con il pattern strutturale
  • rimandare refactor piu grandi a finestra tranquilla