Guest User

Untitled

a guest
Oct 26th, 2018
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.30 KB | None | 0 0
  1. import Vue from 'vue'
  2. import Vuex from 'vuex'
  3. import axios from 'axios'
  4.  
  5. Vue.use(Vuex)
  6.  
  7. export default new Vuex.Store({
  8. state: {
  9. status: '',
  10. token: localStorage.getItem('token') || '',
  11. user : {}
  12. },
  13. mutations: {
  14. auth_request(state){
  15. state.status = 'loading'
  16. },
  17. auth_success(state, token, user){
  18. state.status = 'success'
  19. state.token = token
  20. state.user = user
  21. },
  22. auth_error(state){
  23. state.status = 'error'
  24. },
  25. logout(state){
  26. state.status = ''
  27. state.token = ''
  28. },
  29. },
  30. actions: {
  31. login({commit}, user){
  32. return new Promise((resolve, reject) => {
  33. commit('auth_request')
  34. axios({url: 'http://localhost:8001/api/v1/token/create', data: user, method: 'POST' })
  35. .then(resp => {
  36. const token = resp.data.token
  37. const user = resp.data.user
  38. localStorage.setItem('token', token)
  39. // Add the following line:
  40. axios.defaults.headers.common['Authorization'] = 'Bearer ${token}'
  41. commit('auth_success', token, user)
  42. resolve(resp)
  43. })
  44. .catch(err => {
  45. commit('auth_error')
  46. localStorage.removeItem('token')
  47. reject(err)
  48. })
  49. })
  50. },
  51. register({commit}, user){
  52. return new Promise((resolve, reject) => {
  53. commit('auth_request')
  54. axios({url: 'http://localhost:8001/api/v1/users/create', data: user, method: 'POST' })
  55. .then(resp => {
  56. const token = resp.data.token
  57. const user = resp.data.user
  58. localStorage.setItem('token', token)
  59. // Add the following line:
  60. axios.defaults.headers.common['Authorization'] = 'Bearer ${token}'
  61. commit('auth_success', token, user)
  62. resolve(resp)
  63. })
  64. .catch(err => {
  65. commit('auth_error', err)
  66. localStorage.removeItem('token')
  67. reject(err)
  68. })
  69. })
  70. },
  71. logout({commit}){
  72. return new Promise((resolve, reject) => {
  73. commit('logout')
  74. localStorage.removeItem('token')
  75. delete axios.defaults.headers.common['Authorization']
  76. resolve()
  77. })
  78. }
  79. },
  80. getters : {
  81. isLoggedIn: state => !!state.token,
  82. authStatus: state => state.status,
  83. }
  84. })
  85.  
  86. ...
  87. import store from './store';
  88. import Axios from 'axios';
  89.  
  90. Vue.prototype.$http = Axios;
  91. const token = localStorage.getItem('token')
  92. if (token) {
  93. Vue.prototype.$http.defaults.headers.common['Authorization'] = 'Bearer ' + token
  94. }
  95. ...
  96.  
  97. ...
  98. data() {
  99. return {
  100. username: '',
  101. password: ''
  102. }
  103. },
  104. methods: {
  105. login: function() {
  106. let username = this.username
  107. let password = this.password
  108. this.$store.dispatch('login', { username, password })
  109. .then(() => this.$router.push('/'))
  110. .catch(err => console.log(err))
  111. }
  112. }
  113. ...
Add Comment
Please, Sign In to add comment