You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
willaengine/resources/js/Global/services/errorHandler.services.js

57 lines
2.0 KiB

5 years ago
import axios from "axios";
import { TokenService } from "@Global/services/storage.services";
import ApiService from "@Global/services/api.services";
import store from "@Core/store/index";
5 years ago
import commonRoute from "@Global/utils/common/routes";
5 years ago
import toast from "./toast.service";
import Vue from "vue";
5 years ago
5 years ago
function errorResponseHandler(error) {
// check for errorHandle config
if (
error.config.hasOwnProperty("errorHandle") &&
error.config.errorHandle === false
) {
return Promise.reject(error);
}
// if has response show the error
if (error.response) {
if(error.response.status === 401) {
5 years ago
TokenService.removeToken();
ApiService.removeAuthHeader();
5 years ago
store.commit('auth/logout', {}, {root: true});
if (commonRoute.login() !== window.location.pathname) {
5 years ago
window.location.href = commonRoute.login();
}
toast.error('نام کاربری یا رمز عبور اشتباه است', 'خطا');
} else if(error.response.status === 422) {
5 years ago
if(typeof error.response.data.errors !== 'undefined') {
for (const key in error.response.data.errors) {
if (error.response.data.errors.hasOwnProperty(key)) {
toast.error(error.response.data.errors[key], 'خطا');
}
}
}
} else if(error.response.status === 500) {
5 years ago
toast.error('مشکل از سمت سرور', 'خطا');
5 years ago
}
}
return Promise.reject(error);
5 years ago
}
function successHandler(response) {
if(response.status === 200 || response.status === 201) {
if(typeof response.data.message !== 'undefined' && typeof response.data.message.content !== 'undefined') {
toast.success(response.data.message.content, response.data.message.title || 'موفق');
}
}
5 years ago
return response;
}
// apply interceptor on response
axios.interceptors.response.use(successHandler, errorResponseHandler);
Vue.prototype.$axios = axios;
5 years ago