aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPitu <[email protected]>2019-04-24 08:36:47 +0000
committerPitu <[email protected]>2019-04-24 08:36:47 +0000
commitab0839f1f50fcb477476871ca267a004c8fd35e4 (patch)
treee1c3e4314123e3e66645e5766da7d3d41e75a8fd /src
parentRefactor a bit since we globally catch API exceptions (diff)
downloadhost.fuwn.me-ab0839f1f50fcb477476871ca267a004c8fd35e4.tar.xz
host.fuwn.me-ab0839f1f50fcb477476871ca267a004c8fd35e4.zip
Globally catch exceptions
Diffstat (limited to 'src')
-rw-r--r--src/site/plugins/axios.js35
-rw-r--r--src/site/store/index.js72
2 files changed, 44 insertions, 63 deletions
diff --git a/src/site/plugins/axios.js b/src/site/plugins/axios.js
index 5a169b2..cc6d98e 100644
--- a/src/site/plugins/axios.js
+++ b/src/site/plugins/axios.js
@@ -1,29 +1,18 @@
-/*
-import Vue from 'vue';
-import axios from 'axios';
-import VueAxios from 'vue-axios';
-
-Vue.use(VueAxios, axios);
-Vue.axios.defaults.headers.common.Accept = 'application/vnd.lolisafe.json';
-*/
-
-export default function({ $axios, redirect }) {
+export default function({ $axios, store }) {
+ $axios.setHeader('accept', 'application/vnd.lolisafe.json');
$axios.onRequest(config => {
- console.log(`Making request to > /${config.url}`);
+ if (store.state.token) {
+ config.headers.common['Authorization'] = `bearer ${store.state.token}`;
+ }
});
- $axios.setHeader('accept', 'application/vnd.lolisafe.json');
$axios.onError(error => {
- // console.log('=====');
- console.log(error);
- // console.log('=====');
- /*
- $toast.open({
- duration: 2500,
- message: 'testing',
- position: 'is-bottom',
- type: error ? 'is-danger' : 'is-success'
- });
- */
+ if (process.env.development) console.error('[AXIOS Error]', error);
+ if (process.browser) {
+ store.dispatch('alert', {
+ text: error.response.data.message,
+ error: true
+ });
+ }
});
}
diff --git a/src/site/store/index.js b/src/site/store/index.js
index a9380b7..80c6a9a 100644
--- a/src/site/store/index.js
+++ b/src/site/store/index.js
@@ -1,15 +1,9 @@
-/*
-import Vue from 'vue';
-import axios from 'axios';
-*/
-
-const cookieparser = process.server ? require('cookieparser') : null;
-
export const state = () => ({
loggedIn: false,
user: null,
token: null,
- config: null
+ config: null,
+ alert: null
});
/* eslint-disable no-shadow */
@@ -18,26 +12,21 @@ export const mutations = {
state.loggedIn = payload;
},
user(state, payload) {
- if (!payload) {
- state.user = null;
- return;
- }
state.user = payload;
},
token(state, payload) {
- if (!payload) {
- state.token = null;
- return;
- }
state.token = payload;
},
config(state, payload) {
state.config = payload;
+ },
+ alert(state, payload) {
+ state.alert = payload;
}
};
export const actions = {
- async nuxtServerInit({ commit }, { app, req }) {
+ async nuxtServerInit({ commit, dispatch }, { app, req }) {
commit('config', {
version: process.env.npm_package_version,
URL: process.env.DOMAIN,
@@ -50,34 +39,37 @@ export const actions = {
enableAccounts: process.env.USER_ACCOUNTS == 'true' ? true : false
});
- let token = null;
- if (req.headers.cookie) {
- try {
- token = cookieparser.parse(req.headers.cookie).token;
- console.log(token);
- commit('loggedIn', true);
- commit('token', token);
-
- app.$axios.setToken(token, 'Bearer');
+ const cookies = this.$cookies.getAll();
+ if (!cookies.token) return dispatch('logout');
- const data = await this.$axios.$get(`verify`);
- if (!data || !data.user);
- commit('user', data.user);
- } catch (error) {
- // TODO: Deactivate this on production
- console.error(error);
- }
- }
- commit('token', token);
- if (!token) {
- app.$axios.setToken('');
- commit('user', null);
- commit('loggedIn', false);
+ commit('token', cookies.token);
+ try {
+ const response = await this.$axios.$get('verify');
+ dispatch('login', {
+ token: cookies.token,
+ user: response.user
+ });
+ } catch (error) {
+ dispatch('logout');
}
},
- login({ commit }, { app, token, user }) {
+ login({ commit }, { token, user }) {
+ this.$cookies.set('token', token);
commit('token', token);
commit('user', user);
commit('loggedIn', true);
+ },
+ logout({ commit }) {
+ this.$cookies.remove('token');
+ commit('token', null);
+ commit('user', null);
+ commit('loggedIn', false);
+ },
+ alert({ commit }, payload) {
+ if (!payload) return commit('alert', null);
+ commit('alert', {
+ text: payload.text,
+ error: payload.error
+ });
}
};