Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*jshint esversion: 6 */
- import Vue from 'vue';
- import Vuex from 'vuex';
- import axios from 'axios';
- Vue.use(Vuex);
- axios.defaults.baseURL = 'http://examedad.local/';
- export default new Vuex.Store({
- state: {
- token: localStorage.getItem('access_token') || null,
- user: JSON.parse(localStorage.getItem('user')) || null
- },
- getters: {
- loggedIn(state) {
- return state.token !== null;
- }
- },
- mutations: {
- retrieveToken(state, token) {
- state.token = token;
- },
- destroyToken(state) {
- state.token = null;
- },
- setUser: (state, user) => {
- state.user = user;
- },
- removeUser: (state) => {
- state.user = null;
- },
- },
- actions: {
- register(context, data) {
- return new Promise((resolve, reject) => {
- axios.post('api/register', {
- name: data.name,
- email: data.email,
- password: data.password,
- })
- .then(response => {
- resolve(response);
- })
- .catch(error => {
- reject(error);
- })
- });
- },
- destroyToken(context) {
- axios.defaults.headers.common['Authorization'] = 'Bearer ' + context.state.token;
- if (context.getters.loggedIn) {
- return new Promise((resolve, reject) => {
- axios.post('api/logout')
- .then(response => {
- localStorage.removeItem('access_token');
- context.commit('destroyToken');
- localStorage.removeItem('user');
- context.commit('removeUser');
- resolve(response);
- })
- .catch(error => {
- localStorage.removeItem('access_token');
- context.commit('destroyToken');
- localStorage.removeItem('user');
- context.commit('removeUser');
- reject(error);
- })
- });
- }
- },
- retrieveToken(context, credentials) {
- return new Promise((resolve, reject) => {
- axios.post('api/login', credentials)
- .then(response => {
- const token = response.data.access_token;
- localStorage.setItem('access_token', token);
- context.commit('retrieveToken', token);
- resolve(response);
- })
- .catch(error => {
- console.log(error);
- reject(error);
- })
- });
- },
- setUser(context) {
- return new Promise((resolve, reject) => {
- axios.get('api/user', {
- headers: {
- 'Authorization': 'Bearer ' + this.state.token,
- 'Accept': 'application/json'
- }
- })
- .then(function (response) {
- const user = response.data;
- localStorage.setItem('user', JSON.stringify(user));
- context.commit('setUser', user);
- resolve(response);
- })
- .catch(error => {
- console.log(error);
- reject(error);
- });
- });
- }
- }
- });
Add Comment
Please, Sign In to add comment