diff --git a/resources/js_vue3/App.vue b/resources/js_vue3/App.vue
index 6e7942af..9ff16671 100644
--- a/resources/js_vue3/App.vue
+++ b/resources/js_vue3/App.vue
@@ -1,14 +1,49 @@
@@ -16,4 +51,5 @@
+
\ No newline at end of file
diff --git a/resources/js_vue3/app.js b/resources/js_vue3/app.js
index faff330c..169b140b 100644
--- a/resources/js_vue3/app.js
+++ b/resources/js_vue3/app.js
@@ -56,7 +56,7 @@ import FormSelect from '@/components/formElements/FormSelect.vue'
import FormToggle from '@/components/formElements/FormToggle.vue'
import FormCheckbox from '@/components/formElements/FormCheckbox.vue'
import FormButtons from '@/components/formElements/FormButtons.vue'
-// import Kicker from './Kicker'
+import Kicker from '@/components/Kicker.vue'
// import SettingTabs from './SettingTabs'
app
@@ -73,6 +73,7 @@ app
.component('FormToggle', FormToggle)
.component('FormCheckbox', FormCheckbox)
.component('FormButtons', FormButtons)
+ .component('Kicker', Kicker)
// Global error handling
import { useNotifyStore } from '@/stores/notify'
diff --git a/resources/js_vue3/components/Kicker.vue b/resources/js_vue3/components/Kicker.vue
new file mode 100644
index 00000000..03785ef2
--- /dev/null
+++ b/resources/js_vue3/components/Kicker.vue
@@ -0,0 +1,60 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/js_vue3/services/httpClientFactory.js b/resources/js_vue3/services/httpClientFactory.js
index 1b03df29..831fa811 100644
--- a/resources/js_vue3/services/httpClientFactory.js
+++ b/resources/js_vue3/services/httpClientFactory.js
@@ -66,6 +66,15 @@ export const httpClientFactory = (endpoint = 'api') => {
return Promise.reject(error)
}
+ // api calls are stateless so when user inactivity is detected
+ // by the backend middleware, it cannot logout the user directly
+ // so it returns a 418 response.
+ // We catch the 418 response and push the user to the autolock view
+ if ( error.response.status === 418 ) {
+ const user = useUserStore()
+ user.logout()
+ }
+
useNotifyStore().error(error)
return new Promise(() => {})
}