diff --git a/resources/js_vue3/router.js b/resources/js_vue3/router.js index 4696d78f..0b159bbe 100644 --- a/resources/js_vue3/router.js +++ b/resources/js_vue3/router.js @@ -6,14 +6,9 @@ const router = createRouter({ history: createWebHistory('/'), routes: [ { path: '/accounts', name: 'accounts', component: Accounts, meta: { requiresAuth: true }, alias: '/', props: true }, - // { - // path: '/about', - // name: 'about', - // // route level code-splitting - // // this generates a separate chunk (About.[hash].js) for this route - // // which is lazy-loaded when the route is visited. - // component: () => import('../views/AboutView.vue') - // } + + // Lazy loaded view + { path: '/about', name: 'about', component: () => import('./views/About.vue') } ] }) diff --git a/resources/js_vue3/services/apiFactory.js b/resources/js_vue3/services/apiFactory.js new file mode 100644 index 00000000..d47159cc --- /dev/null +++ b/resources/js_vue3/services/apiFactory.js @@ -0,0 +1,39 @@ +import axios from "axios" + +export const apiFactory = (endpoint = 'api') => { + let baseURL + + if (endpoint === 'web') { + baseURL = '/' + } else { + baseURL = '/api' + } + + const apiClient = axios.create({ + baseURL, + headers: { 'X-Requested-With': 'XMLHttpRequest', 'Content-Type': 'application/json' }, + withCredentials: true, + }) + + // see https://github.com/fsgreco/vue3-laravel-api/blob/main/src/api/middlewareCSRF.js + //apiClient.interceptors.request.use( middlewareCSRF, err => Promise.reject(err)) + + apiClient.interceptors.response.use( + (response) => { + return response; + }, + function (error) { + if ( + error.response && + [401, 419].includes(error.response.status) + // && store.getters["auth/authUser"] && + // !store.getters["auth/guest"] + ) { + // store.dispatch("auth/logout"); + } + return Promise.reject(error); + } + ) + + return apiClient +} \ No newline at end of file diff --git a/resources/js_vue3/services/systemService.js b/resources/js_vue3/services/systemService.js new file mode 100644 index 00000000..f9552da8 --- /dev/null +++ b/resources/js_vue3/services/systemService.js @@ -0,0 +1,14 @@ +import { apiFactory } from '@/services/apiFactory' + +const web = apiFactory('web') + +export default { + /** + * + * @returns + */ + getSystemInfos() { + return web.get('infos') + }, + +} \ No newline at end of file diff --git a/resources/js_vue3/views/About.vue b/resources/js_vue3/views/About.vue new file mode 100644 index 00000000..1b838274 --- /dev/null +++ b/resources/js_vue3/views/About.vue @@ -0,0 +1,43 @@ + + + \ No newline at end of file diff --git a/resources/js_vue3/views/Accounts.vue b/resources/js_vue3/views/Accounts.vue index b4f33cc0..ea504eaf 100644 --- a/resources/js_vue3/views/Accounts.vue +++ b/resources/js_vue3/views/Accounts.vue @@ -4,4 +4,5 @@