access.ts 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. import * as _ from 'lodash'
  2. import { $roleUtils } from '~/services/rights/roleUtils'
  3. import { AbilitiesType, accessState, baseAccessState, baseOrganizationState, Historical } from '~/types/interfaces'
  4. import { GENDER } from '~/types/enums'
  5. import { MyProfile } from '~/models/Access/MyProfile'
  6. import { repositoryHelper } from '~/services/store/repository'
  7. export const state = () => ({
  8. bearer: null,
  9. id: null,
  10. switchId: null,
  11. name: null,
  12. givenName: null,
  13. gender: null,
  14. avatarId: null,
  15. activityYear: null,
  16. historical: [],
  17. roles: [],
  18. abilities: [],
  19. isAdmin: false,
  20. isAdministratifManager: false,
  21. isPedagogicManager: false,
  22. isFinancialManager: false,
  23. isCaMember: false,
  24. isStudent: false,
  25. isTeacher: false,
  26. isMember: false,
  27. isOther: false,
  28. hasLateralMenu: false,
  29. hasConfigurationMenu: false,
  30. hasAccessesMenu: false,
  31. hasFamilyMenu: false,
  32. multiAccesses: [],
  33. familyAccesses: [],
  34. originalAccess: null
  35. })
  36. export const mutations = {
  37. setBearer (state: accessState, bearer: string) {
  38. state.bearer = bearer
  39. },
  40. setId (state: accessState, id: number) {
  41. state.id = id
  42. },
  43. setSwitchId (state: accessState, switchId: number) {
  44. state.switchId = switchId
  45. },
  46. setName (state: accessState, name: string) {
  47. state.name = name
  48. },
  49. setGivenName (state: accessState, givenName: string) {
  50. state.givenName = givenName
  51. },
  52. setGender (state: accessState, gender: GENDER) {
  53. state.gender = gender
  54. },
  55. setAvatarId (state: accessState, avatarId: number) {
  56. state.avatarId = avatarId
  57. },
  58. setActivityYear (state: accessState, activityYear: number) {
  59. state.activityYear = activityYear
  60. },
  61. setHistorical (state: accessState, historical: Historical) {
  62. state.historical = historical
  63. },
  64. setRoles (state: accessState, roles: Array<string>) {
  65. state.roles = roles
  66. },
  67. setAbilities (state: accessState, abilities: Array<AbilitiesType>) {
  68. state.abilities = abilities
  69. },
  70. setIsAdminAccess (state: accessState, isAdminAccess: boolean) {
  71. state.isAdminAccess = isAdminAccess
  72. },
  73. setIsAdmin (state: accessState, isRole: boolean) {
  74. state.isAdmin = isRole
  75. },
  76. setIsAdministratifManager (state: accessState, isRole: boolean) {
  77. state.isAdministratifManager = isRole
  78. },
  79. setIsPedagogicManager (state:accessState, isRole:boolean) {
  80. state.isPedagogicManager = isRole
  81. },
  82. setIsFinancialManager (state: accessState, isRole: boolean) {
  83. state.isFinancialManager = isRole
  84. },
  85. setIsCaMember (state: accessState, isRole: boolean) {
  86. state.isCaMember = isRole
  87. },
  88. setIsStudent (state: accessState, isRole: boolean) {
  89. state.isStudent = isRole
  90. },
  91. setIsTeacher (state: accessState, isRole: boolean) {
  92. state.isTeacher = isRole
  93. },
  94. setIsMember (state: accessState, isRole: boolean) {
  95. state.isMember = isRole
  96. },
  97. setIsOther (state: accessState, isRole: boolean) {
  98. state.isOther = isRole
  99. },
  100. setHasLateralMenu (state: accessState, hasLateralMenu: boolean) {
  101. state.hasLateralMenu = hasLateralMenu
  102. },
  103. setHasConfigurationMenu (state: accessState, hasConfigurationMenu: boolean) {
  104. state.hasConfigurationMenu = hasConfigurationMenu
  105. },
  106. setHasAccessesMenu (state: accessState, hasAccessesMenu: boolean) {
  107. state.hasAccessesMenu = hasAccessesMenu
  108. },
  109. setHasFamilyMenu (state: accessState, hasFamilyMenu: boolean) {
  110. state.hasFamilyMenu = hasFamilyMenu
  111. },
  112. addMultiAccess (state: accessState, access: baseOrganizationState) {
  113. state.multiAccesses.push(access)
  114. },
  115. addFamilyAccess (state: accessState, access: baseAccessState) {
  116. state.familyAccesses.push(access)
  117. },
  118. setOriginalAccess (state: accessState, access: baseAccessState) {
  119. state.originalAccess = access
  120. }
  121. }
  122. export const actions = {
  123. setProfile (context: any, profile: any) {
  124. const rolesArray: Array<string> = Object.values(profile.roles)
  125. context.commit('setName', profile.name)
  126. context.commit('setGivenName', profile.givenName)
  127. context.commit('setGender', profile.gender)
  128. context.commit('setAvatarId', profile.avatarId)
  129. context.commit('setActivityYear', profile.activityYear)
  130. context.commit('setHistorical', profile.historical)
  131. context.commit('setIsAdminAccess', profile.isAdminAccess)
  132. context.commit('setIsAdmin', $roleUtils.isA('ADMIN', rolesArray))
  133. context.commit('setIsAdministratifManager', $roleUtils.isA('ADMINISTRATIF_MANAGER', rolesArray))
  134. context.commit('setIsPedagogicManager', $roleUtils.isA('PEDAGOGICS_MANAGER', rolesArray))
  135. context.commit('setIsFinancialManager', $roleUtils.isA('FINANCIAL_MANAGER', rolesArray))
  136. context.commit('setIsCaMember', $roleUtils.isA('CA', rolesArray))
  137. context.commit('setIsStudent', $roleUtils.isA('STUDENT', rolesArray))
  138. context.commit('setIsTeacher', $roleUtils.isA('TEACHER', rolesArray))
  139. context.commit('setIsMember', $roleUtils.isA('MEMBER', rolesArray))
  140. context.commit('setIsOther', $roleUtils.isA('OTHER', rolesArray))
  141. context.commit('setRoles', $roleUtils.filterFunctionRoles(rolesArray))
  142. context.commit('setIsAdminAccess', profile.isAdminAccess)
  143. // Time to set Multi Accesses
  144. context.dispatch('setMultiAccesses', profile.multiAccesses)
  145. // Time to set Family Accesses
  146. context.dispatch('setFamilyAccesses', profile.familyAccesses)
  147. // Time to add the original Access (switch User case)
  148. context.dispatch('setOriginalAccess', profile.originalAccess)
  149. // Time to set Oganization Profile
  150. context.dispatch('profile/organization/setProfile', profile.organization, { root: true })
  151. context.dispatch('createNewMyProfileVUexOrmInstance', profile)
  152. },
  153. setMultiAccesses (context: any, accesses: any) {
  154. _.each(accesses, (organization) => {
  155. const o: baseOrganizationState = {
  156. id: organization.id,
  157. name: organization.name
  158. }
  159. context.commit('addMultiAccess', o)
  160. })
  161. },
  162. setFamilyAccesses (context: any, accesses: any) {
  163. _.each(accesses, (access) => {
  164. const a:baseAccessState = {
  165. id: access.id,
  166. name: access.name,
  167. givenName: access.givenName,
  168. gender: access.gender,
  169. avatarId: access.avatarId
  170. }
  171. context.commit('addFamilyAccess', a)
  172. })
  173. },
  174. setOriginalAccess (context: any, access: any) {
  175. if (access) {
  176. const originalAccess:baseAccessState = {
  177. id: access.id,
  178. name: access.name,
  179. givenName: access.givenName,
  180. gender: access.gender,
  181. avatarId: access.avatarId
  182. }
  183. context.commit('setOriginalAccess', originalAccess)
  184. }
  185. },
  186. /**
  187. * Créer une nouvelle instance MyProfile dans Vuex ORM
  188. * @param _context
  189. * @param access
  190. */
  191. createNewMyProfileVUexOrmInstance (_context: any, access: any): void {
  192. repositoryHelper.persist(MyProfile, access)
  193. }
  194. }