access.ts 4.2 KB

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