access.ts 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. import {$roleUtils} from '~/services/rights/roleUtils'
  2. import {AbilitiesType, accessState, AnyJson, baseAccessState, baseOrganizationState, Historical} from "~/types/interfaces";
  3. import * as _ from "lodash";
  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. let roles_to_array: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', roles_to_array))
  133. context.commit('setIsAdministratifManager', $roleUtils.isA('ADMINISTRATIF_MANAGER', roles_to_array))
  134. context.commit('setIsPedagogicManager', $roleUtils.isA('PEDAGOGICS_MANAGER', roles_to_array))
  135. context.commit('setIsFinancialManager', $roleUtils.isA('FINANCIAL_MANAGER', roles_to_array))
  136. context.commit('setIsCaMember', $roleUtils.isA('CA', roles_to_array))
  137. context.commit('setIsStudent', $roleUtils.isA('STUDENT', roles_to_array))
  138. context.commit('setIsTeacher', $roleUtils.isA('TEACHER', roles_to_array))
  139. context.commit('setIsMember', $roleUtils.isA('MEMBER', roles_to_array))
  140. context.commit('setIsOther', $roleUtils.isA('OTHER', roles_to_array))
  141. context.commit('setRoles', $roleUtils.filterFunctionRoles(roles_to_array))
  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. }