You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

authentication.js 2.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. /* eslint-disable */
  2. import Vue from 'vue'
  3. import Vuex from 'vuex'
  4. import axios from 'axios'
  5. import log from '../../../assets/Log'
  6. Vue.use(Vuex)
  7. export default {
  8. namespaced: true,
  9. state: {
  10. isLoggedIn: log.isLoggedIn(),
  11. flag: false,
  12. status: '',
  13. token: undefined,
  14. user: undefined,
  15. person: undefined,
  16. agency: undefined,
  17. },
  18. mutations: {
  19. auth_request(state) {
  20. state.status = 'loading'
  21. },
  22. auth_success(state, user) {
  23. state.status = 'success'
  24. state.token = user.token
  25. state.user = user.user
  26. state.person = user.person
  27. state.agency = user.agency
  28. },
  29. auth_error(state) {
  30. state.status = 'error'
  31. },
  32. logout(state) {
  33. state.status = ''
  34. state.token = undefined
  35. state.person = undefined
  36. state.agency = undefined
  37. state.user = undefined
  38. },
  39. runInit(state, item) {
  40. state.flag = true
  41. state.user = item.user
  42. state.token = item.token
  43. state.person = item.person
  44. state.agency = item.agency
  45. },
  46. updateFlag(state) {
  47. state.flag = true
  48. },
  49. },
  50. getters: {
  51. authStatus: (state) => state.status,
  52. getPerson: () => log.getPerson(),
  53. getUser: () => log.getUser(),
  54. },
  55. actions: {
  56. init({ commit }) {
  57. if (!log.isLoggedIn() && log.tokenExpired) {
  58. log.clearValues()
  59. } else log.updateTokenExpiry()
  60. commit('runInit', {
  61. user: log.getJSONObject('user'),
  62. token: log.getJSONObject('token'),
  63. person: log.getJSONObject('person'),
  64. agency: log.getJSONObject('agency'),
  65. })
  66. },
  67. async login({ commit }, user) {
  68. await axios({
  69. url: '/api/register/authenticate',
  70. data: {
  71. username: user.username,
  72. password: user.password,
  73. },
  74. method: 'POST',
  75. })
  76. .then((resp) => {
  77. log.clearValues()
  78. log.setValues(resp.data)
  79. commit('auth_success', resp.data)
  80. return Promise.resolve()
  81. })
  82. .catch((ex) => {
  83. commit('auth_error')
  84. log.clearValues()
  85. commit('auth_error', 'error occurred')
  86. console.log(Promise.reject(ex.response));
  87. return Promise.reject(ex.response)
  88. })
  89. },
  90. logout({ commit }) {
  91. return new Promise(() => {
  92. commit('logout')
  93. log.clearValues()
  94. delete axios.defaults.headers.common.Authorization
  95. })
  96. },
  97. },
  98. }