access.ts 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. import { defineStore } from 'pinia'
  2. import {$roleUtils} from "~/services/rights/roleUtils";
  3. import {accessState, baseAccessState, baseOrganizationState, OrignalAccessState} from "~/types/interfaces";
  4. import {useOrganizationProfileStore} 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. isPayer: false,
  34. hasMenu: [],
  35. multiAccesses: [],
  36. familyAccesses: [],
  37. originalAccess: null
  38. }
  39. },
  40. actions: {
  41. setProfile(profile: any) {
  42. const roles: Array<string> = Object.values(profile.roles)
  43. this.name = profile.name
  44. this.givenName = profile.givenName
  45. this.gender = profile.gender
  46. this.avatarId = profile.avatarId
  47. this.activityYear = profile.activityYear
  48. this.historical = profile.historical
  49. this.isAdminAccess = profile.isAdminAccess
  50. this.isAdmin = $roleUtils.isA('ADMIN', roles)
  51. this.isAdministratifManager = $roleUtils.isA('ADMINISTRATIF_MANAGER', roles)
  52. this.isPedagogicManager = $roleUtils.isA('PEDAGOGICS_MANAGER', roles)
  53. this.isFinancialManager = $roleUtils.isA('FINANCIAL_MANAGER', roles)
  54. this.isCaMember = $roleUtils.isA('CA', roles)
  55. this.isStudent = $roleUtils.isA('STUDENT', roles)
  56. this.isTeacher = $roleUtils.isA('TEACHER', roles)
  57. this.isMember = $roleUtils.isA('MEMBER', roles)
  58. this.isOther = $roleUtils.isA('OTHER', roles)
  59. this.isGuardian = profile.isGuardian
  60. this.isPayer = profile.isPayor
  61. this.roles = $roleUtils.filterFunctionRoles(roles)
  62. // Time to add the original Access (switch User case)
  63. this.originalAccess = profile.originalAccess
  64. // Time to set Multi Accesses
  65. this.setMultiAccesses(profile.multiAccesses)
  66. // Time to set Family Accesses
  67. this.setFamilyAccesses(profile.familyAccesses)
  68. // Time to set Organization Profile
  69. const organizationProfileStore = useOrganizationProfileStore()
  70. organizationProfileStore.setProfile(profile.organization)
  71. useRepo(MyProfile).save(profile)
  72. },
  73. refreshProfile(profile: any) {
  74. this.name = profile.name
  75. this.givenName = profile.givenName
  76. this.gender = profile.gender
  77. this.avatarId = profile.avatarId
  78. this.activityYear = profile.activityYear
  79. const organizationProfileStore = useOrganizationProfileStore()
  80. organizationProfileStore.refreshProfile(profile.organization)
  81. },
  82. setMultiAccesses(organizations: any) {
  83. useEach(organizations, (organization: baseOrganizationState) => {
  84. const o: baseOrganizationState = {
  85. id: organization.id,
  86. name: organization.name
  87. }
  88. this.multiAccesses.push(o)
  89. })
  90. },
  91. setFamilyAccesses(accesses: any) {
  92. useEach(accesses, (access: baseAccessState) => {
  93. const a: baseAccessState = {
  94. id: access.id,
  95. name: access.name,
  96. givenName: access.givenName,
  97. gender: access.gender,
  98. avatarId: access.avatarId
  99. }
  100. this.familyAccesses.push(a)
  101. })
  102. },
  103. setOriginalAccess(access: any) {
  104. if (access) {
  105. const organization: baseOrganizationState = {
  106. id: access.organization.id,
  107. name: access.organization.name
  108. }
  109. const originalAccess: OrignalAccessState = {
  110. id: access.id,
  111. name: access.name,
  112. givenName: access.givenName,
  113. gender: access.gender,
  114. isSuperAdminAccess: access.isSuperAdminAccess,
  115. avatarId: access.avatarId,
  116. organization: organization
  117. }
  118. this.setOriginalAccess(originalAccess)
  119. }
  120. },
  121. }
  122. })