parametersMenu.ts 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import {ItemMenu, ItemsMenu, Menu } from '~/types/interfaces'
  2. import BaseMenu from '~/composables/layout/Menus/baseMenu'
  3. import {useAbility} from "@casl/vue";
  4. /**
  5. * @category composables/layout/Menus
  6. * @class ConfigurationMenu
  7. * Classe pour la construction du Menu Paramètres
  8. */
  9. class ParametersMenu extends BaseMenu implements Menu {
  10. /**
  11. * Construit le menu Header Configuration ou null si aucune page accessible
  12. * @return {ItemMenu | null}
  13. */
  14. getMenus (): ItemsMenu | null {
  15. const {can} = useAbility()
  16. const children: ItemsMenu = []
  17. if (can('display', 'parameters_page')) {
  18. children.push(this.constructMenuItem('general_params', {name: 'fa-cogs'},`/parameters`, false))
  19. }
  20. if (can('display', 'parameters_communication_page')) {
  21. children.push(this.constructMenuItem('communication_params', {name: 'fa-comments'},`/parameters/communication`, false))
  22. }
  23. if (can('display', 'parameters_student_page')) {
  24. children.push(this.constructMenuItem('students_params', {name: 'fa-users'},`/parameters/student`, false))
  25. }
  26. if (can('display', 'parameters_education_page')) {
  27. children.push(this.constructMenuItem('education_params', {name: 'fa-graduation-cap'},`/parameters/education`, false))
  28. }
  29. if (can('display', 'parameters_bills_page')) {
  30. children.push(this.constructMenuItem('bills_params', {name: 'fa-euro-sign'},`/parameters/billing`, false))
  31. }
  32. if (can('display', 'parameters_secure_page')) {
  33. children.push(this.constructMenuItem('secure_params', {name: 'fa-lock'},`/parameters/secure`, false))
  34. }
  35. if (children.length > 0) {
  36. return children
  37. } else {
  38. return null
  39. }
  40. }
  41. }
  42. export const getParametersMenu = () => new ParametersMenu().getMenus()