Guest User

store

a guest
Jan 29th, 2019
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.82 KB | None | 0 0
  1. /*jshint esversion: 6 */
  2.  
  3. import Vue from 'vue';
  4. import Vuex from 'vuex';
  5. import axios from 'axios';
  6.  
  7. Vue.use(Vuex);
  8. axios.defaults.baseURL = 'http://examedad.local/';
  9.  
  10. export default new Vuex.Store({
  11. state: {
  12. token: localStorage.getItem('access_token') || null,
  13. user: JSON.parse(localStorage.getItem('user')) || null
  14. },
  15. getters: {
  16. loggedIn(state) {
  17. return state.token !== null;
  18. }
  19. },
  20. mutations: {
  21. retrieveToken(state, token) {
  22. state.token = token;
  23. },
  24. destroyToken(state) {
  25. state.token = null;
  26. },
  27. setUser: (state, user) => {
  28. state.user = user;
  29. },
  30. removeUser: (state) => {
  31. state.user = null;
  32. },
  33. },
  34. actions: {
  35. register(context, data) {
  36. return new Promise((resolve, reject) => {
  37. axios.post('api/register', {
  38. name: data.name,
  39. email: data.email,
  40. password: data.password,
  41. })
  42. .then(response => {
  43. resolve(response);
  44. })
  45. .catch(error => {
  46. reject(error);
  47. })
  48. });
  49. },
  50. destroyToken(context) {
  51. axios.defaults.headers.common['Authorization'] = 'Bearer ' + context.state.token;
  52.  
  53. if (context.getters.loggedIn) {
  54. return new Promise((resolve, reject) => {
  55. axios.post('api/logout')
  56. .then(response => {
  57. localStorage.removeItem('access_token');
  58. context.commit('destroyToken');
  59. localStorage.removeItem('user');
  60. context.commit('removeUser');
  61. resolve(response);
  62. })
  63. .catch(error => {
  64. localStorage.removeItem('access_token');
  65. context.commit('destroyToken');
  66. localStorage.removeItem('user');
  67. context.commit('removeUser');
  68. reject(error);
  69. })
  70. });
  71. }
  72. },
  73. retrieveToken(context, credentials) {
  74. return new Promise((resolve, reject) => {
  75. axios.post('api/login', credentials)
  76. .then(response => {
  77. const token = response.data.access_token;
  78. localStorage.setItem('access_token', token);
  79. context.commit('retrieveToken', token);
  80. resolve(response);
  81. })
  82. .catch(error => {
  83. console.log(error);
  84. reject(error);
  85. })
  86. });
  87. },
  88. setUser(context) {
  89. return new Promise((resolve, reject) => {
  90. axios.get('api/user', {
  91. headers: {
  92. 'Authorization': 'Bearer ' + this.state.token,
  93. 'Accept': 'application/json'
  94. }
  95. })
  96. .then(function (response) {
  97. const user = response.data;
  98. localStorage.setItem('user', JSON.stringify(user));
  99. context.commit('setUser', user);
  100. resolve(response);
  101. })
  102. .catch(error => {
  103. console.log(error);
  104. reject(error);
  105. });
  106. });
  107. }
  108. }
  109. });
Add Comment
Please, Sign In to add comment