access.ts 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. import { defineStore } from 'pinia'
  2. import {$roleUtils} from "~/services/rights/roleUtils";
  3. import {accessState, baseAccessState, baseOrganizationState, OrignalAccessState} from "~/types/interfaces";
  4. import {useProfileOrganizationStore} from "~/store/profile/organization";
  5. import {MyProfile} from "~/models/Access/MyProfile";
  6. import {useRepo} from "pinia-orm";
  7. export const useAccessProfileStore = defineStore('accessProfile', {
  8. state: (): accessState => {
  9. return {
  10. bearer: null,
  11. id: null,
  12. switchId: null,
  13. name: null,
  14. givenName: null,
  15. gender: null,
  16. avatarId: null,
  17. activityYear: null,
  18. historical: [],
  19. roles: [],
  20. abilities: [],
  21. isAdminAccess: false,
  22. isSuperAdminAccess: false,
  23. isAdmin: false,
  24. isAdministratifManager: false,
  25. isPedagogicManager: false,
  26. isFinancialManager: false,
  27. isCaMember: false,
  28. isStudent: false,
  29. isTeacher: false,
  30. isMember: false,
  31. isOther: false,
  32. isGuardian: false,
  33. isPayor: false,
  34. hasLateralMenu: false,
  35. hasConfigurationMenu: false,
  36. hasAccessesMenu: false,
  37. hasFamilyMenu: false,
  38. multiAccesses: [],
  39. familyAccesses: [],
  40. originalAccess: null
  41. }
  42. },
  43. actions: {
  44. setProfile(profile: any) {
  45. const roles: Array<string> = Object.values(profile.roles)
  46. this.name = profile.name
  47. this.givenName = profile.givenName
  48. this.gender = profile.gender
  49. this.avatarId = profile.avatarId
  50. this.activityYear = profile.activityYear
  51. this.historical = profile.historical
  52. this.isAdminAccess = profile.isAdminAccess
  53. this.isAdmin = $roleUtils.isA('ADMIN', roles)
  54. this.isAdministratifManager = $roleUtils.isA('ADMINISTRATIF_MANAGER', roles)
  55. this.isPedagogicManager = $roleUtils.isA('PEDAGOGICS_MANAGER', roles)
  56. this.isFinancialManager = $roleUtils.isA('FINANCIAL_MANAGER', roles)
  57. this.isCaMember = $roleUtils.isA('CA', roles)
  58. this.isStudent = $roleUtils.isA('STUDENT', roles)
  59. this.isTeacher = $roleUtils.isA('TEACHER', roles)
  60. this.isMember = $roleUtils.isA('MEMBER', roles)
  61. this.isOther = $roleUtils.isA('OTHER', roles)
  62. this.isGuardian = profile.isGuardian
  63. this.isPayor = profile.isPayor
  64. this.roles = $roleUtils.filterFunctionRoles(roles)
  65. // Time to add the original Access (switch User case)
  66. this.originalAccess = profile.originalAccess
  67. // Time to set Multi Accesses
  68. this.setMultiAccesses(profile.multiAccesses)
  69. // Time to set Family Accesses
  70. this.setFamilyAccesses(profile.familyAccesses)
  71. // Time to set Organization Profile
  72. const organizationProfileStore = useProfileOrganizationStore()
  73. organizationProfileStore.setProfile(profile.organization)
  74. useRepo(MyProfile).save(profile)
  75. },
  76. refreshProfile(profile: any) {
  77. this.name = profile.name
  78. this.givenName = profile.givenName
  79. this.gender = profile.gender
  80. this.avatarId = profile.avatarId
  81. this.activityYear = profile.activityYear
  82. const organizationProfileStore = useProfileOrganizationStore()
  83. organizationProfileStore.refreshProfile(profile.organization)
  84. },
  85. setMultiAccesses(organizations: any) {
  86. useEach(organizations, (organization: baseOrganizationState) => {
  87. const o: baseOrganizationState = {
  88. id: organization.id,
  89. name: organization.name
  90. }
  91. this.multiAccesses.push(o)
  92. })
  93. },
  94. setFamilyAccesses(accesses: any) {
  95. useEach(accesses, (access: baseAccessState) => {
  96. const a: baseAccessState = {
  97. id: access.id,
  98. name: access.name,
  99. givenName: access.givenName,
  100. gender: access.gender,
  101. avatarId: access.avatarId
  102. }
  103. this.familyAccesses.push(a)
  104. })
  105. },
  106. setOriginalAccess(access: any) {
  107. if (access) {
  108. const organization: baseOrganizationState = {
  109. id: access.organization.id,
  110. name: access.organization.name
  111. }
  112. const originalAccess: OrignalAccessState = {
  113. id: access.id,
  114. name: access.name,
  115. givenName: access.givenName,
  116. gender: access.gender,
  117. isSuperAdminAccess: access.isSuperAdminAccess,
  118. avatarId: access.avatarId,
  119. organization: organization
  120. }
  121. this.setOriginalAccess(originalAccess)
  122. }
  123. },
  124. }
  125. })