From aa4ccf65f540b7f81ee36a04eb460f9ece1d3a37 Mon Sep 17 00:00:00 2001 From: wbuezas Date: Wed, 24 Jul 2024 14:42:02 -0300 Subject: [PATCH] Change password form and several changes --- src/boot/axios.js | 26 ++++- src/components/common/VnForm.vue | 67 ++++++++---- src/components/ui/ChangePasswordForm.vue | 125 ++++++++++++++++++++++- src/css/app.scss | 34 +++--- src/i18n/en-US/index.js | 4 +- src/i18n/es-ES/index.js | 4 +- src/js/db/sqlService.js | 14 ++- src/pages/Account/AccountConfig.vue | 15 ++- src/router/routes.js | 2 +- 9 files changed, 240 insertions(+), 51 deletions(-) diff --git a/src/boot/axios.js b/src/boot/axios.js index 1f384ff3..66b2ffe9 100644 --- a/src/boot/axios.js +++ b/src/boot/axios.js @@ -2,7 +2,9 @@ import { boot } from 'quasar/wrappers'; import { Connection } from '../js/db/connection'; import { userStore } from 'stores/user'; import axios from 'axios'; +import useNotify from 'src/composables/useNotify.js'; +const { notify } = useNotify(); // Be careful when using SSR for cross-request state pollution // due to creating a Singleton instance here; // If any client changes this (global) instance, it might be a @@ -12,9 +14,27 @@ import axios from 'axios'; const api = axios.create({ baseURL: `//${location.hostname}:${location.port}/api/` }); - const jApi = new Connection(); +const onRequestError = error => { + return Promise.reject(error); +}; + +const onResponseError = error => { + let message = ''; + + const response = error.response; + const responseData = response && response.data; + const responseError = responseData && response.data.error; + if (responseError) { + message = responseError.message; + } + + notify(message, 'negative'); + + return Promise.reject(error); +}; + export default boot(({ app }) => { const user = userStore(); function addToken(config) { @@ -23,7 +43,9 @@ export default boot(({ app }) => { } return config; } - api.interceptors.request.use(addToken); + api.interceptors.request.use(addToken, onRequestError); + api.interceptors.response.use(response => response, onResponseError); + jApi.use(addToken); // for use inside Vue files (Options API) through this.$axios and this.$api diff --git a/src/components/common/VnForm.vue b/src/components/common/VnForm.vue index ccddcad2..450f7000 100644 --- a/src/components/common/VnForm.vue +++ b/src/components/common/VnForm.vue @@ -1,5 +1,5 @@ diff --git a/src/router/routes.js b/src/router/routes.js index a8952650..8710f861 100644 --- a/src/router/routes.js +++ b/src/router/routes.js @@ -4,7 +4,7 @@ const routes = [ component: () => import('layouts/LoginLayout.vue'), children: [ { - name: 'login', + name: 'Login', path: '/login/:email?', component: () => import('pages/Login/Login.vue') },