auth-store.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. import Vuex from 'vuex'
  2. import _ from 'lodash'
  3. import security from '@/plugins/security'
  4. import {
  5. LOG_IN_MUTATION_TYPE,
  6. LOG_OUT_MUTATION_TYPE,
  7. MEMBER_AUTHORITY_GETTER,
  8. IS_LOGGED_IN_GETTER_NAME,
  9. } from '@/config/defaults'
  10. /**
  11. * Auth Store
  12. *
  13. * Store mocking function to return a mock as user is logged in or logged out
  14. *
  15. * @param loggedIn
  16. * @param merge additional value to merge into the store
  17. * @returns {Store<any>}
  18. */
  19. const authStore = (loggedIn, merge) => {
  20. let store = new Vuex.Store(
  21. _.merge(merge, {
  22. modules: {
  23. defaults: {
  24. getters: {
  25. getCurrentVersion: () => '',
  26. getAppStatus: () => () => false,
  27. },
  28. actions: {
  29. isMobile: () => Promise.resolve(false),
  30. setAppStatus: () => {},
  31. },
  32. },
  33. logModule: {
  34. getters: {
  35. getUnreadNotices: () => '',
  36. },
  37. },
  38. auth: {
  39. state: {
  40. loggedIn: loggedIn,
  41. },
  42. getters: {
  43. [IS_LOGGED_IN_GETTER_NAME]: state => state.loggedIn,
  44. },
  45. },
  46. permission: {
  47. state: {
  48. memberAuthority: {
  49. 'my-account': ['view'],
  50. genealogy: ['view'],
  51. eshop: ['view'],
  52. report: ['view'],
  53. 'bonus-statement': ['view'],
  54. 'campaign-report': ['view'],
  55. 'order-history': ['view'],
  56. },
  57. },
  58. getters: {
  59. [MEMBER_AUTHORITY_GETTER]: state => state.memberAuthority,
  60. isMemberAuthorityInitialized: () => true,
  61. },
  62. },
  63. },
  64. plugins: [
  65. security.registerStorePlugin(
  66. LOG_IN_MUTATION_TYPE,
  67. LOG_OUT_MUTATION_TYPE,
  68. IS_LOGGED_IN_GETTER_NAME,
  69. MEMBER_AUTHORITY_GETTER
  70. ),
  71. ],
  72. })
  73. )
  74. return store
  75. }
  76. /**
  77. * Logged In Store
  78. *
  79. * Returns a store mocking as though user has logged in
  80. *
  81. * @param merge additional values to merge to the store
  82. * @returns {Store<any>}
  83. */
  84. export const loggedInStore = (merge = {}) => {
  85. return authStore(true, merge)
  86. }
  87. /**
  88. * Logged Out Store
  89. *
  90. * returns a store mockings as though user is logged out
  91. *
  92. * @param merge additional values to merge to the store
  93. * @returns {Store<any>}
  94. */
  95. export const loggedOutStore = (merge = {}) => {
  96. return authStore(false, merge)
  97. }
  98. export default authStore