Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

authentication.js 2.5KB

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