access.ts 7.1 KB

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