summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorMaksim Sukharev <antreesy.web@gmail.com>2025-02-21 16:28:51 +0100
committerMaksim Sukharev <antreesy.web@gmail.com>2025-02-25 17:06:51 +0100
commitc01461dfd7c58cc1394584123492157affefdc56 (patch)
tree152ac8f5fd67e622681a808974c636e2855a5073 /core
parent662492b83af3f0559f1f71b995c4925ab80830d4 (diff)
downloadnextcloud-server-c01461dfd7c58cc1394584123492157affefdc56.tar.gz
nextcloud-server-c01461dfd7c58cc1394584123492157affefdc56.zip
fix: wipe local storages on log out
Signed-off-by: Maksim Sukharev <antreesy.web@gmail.com>
Diffstat (limited to 'core')
-rw-r--r--core/src/utils/xhr-request.js20
-rw-r--r--core/src/views/Login.vue9
2 files changed, 22 insertions, 7 deletions
diff --git a/core/src/utils/xhr-request.js b/core/src/utils/xhr-request.js
index 75f99e3f671..ee8c3e8534e 100644
--- a/core/src/utils/xhr-request.js
+++ b/core/src/utils/xhr-request.js
@@ -21,6 +21,7 @@
import { getCurrentUser } from '@nextcloud/auth'
import { generateUrl, getRootUrl } from '@nextcloud/router'
+import logger from '../logger.js'
/**
*
@@ -67,6 +68,7 @@ async function checkLoginStatus() {
const { status } = await window.fetch(generateUrl('/apps/files'))
if (status === 401) {
console.warn('User session was terminated, forwarding to login page.')
+ await wipeBrowserStorages()
window.location = generateUrl('/login?redirect_url={url}', {
url: window.location.pathname + window.location.search + window.location.hash,
})
@@ -79,6 +81,24 @@ async function checkLoginStatus() {
}
/**
+ * Clear all Browser storages connected to current origin.
+ * @returns {Promise<void>}
+ */
+export async function wipeBrowserStorages() {
+ try {
+ window.localStorage.clear()
+ window.sessionStorage.clear()
+ const indexedDBList = await window.indexedDB.databases()
+ for (const indexedDB of indexedDBList) {
+ await window.indexedDB.deleteDatabase(indexedDB.name)
+ }
+ logger.debug('Browser storages cleared')
+ } catch (error) {
+ logger.error('Could not clear browser storages', { error })
+ }
+}
+
+/**
* Intercept XMLHttpRequest and fetch API calls to add X-Requested-With header
*
* This is also done in @nextcloud/axios but not all requests pass through that
diff --git a/core/src/views/Login.vue b/core/src/views/Login.vue
index 57634bcb8f8..fa050263381 100644
--- a/core/src/views/Login.vue
+++ b/core/src/views/Login.vue
@@ -131,16 +131,11 @@ import ResetPassword from '../components/login/ResetPassword.vue'
import UpdatePassword from '../components/login/UpdatePassword.vue'
import NcButton from '@nextcloud/vue/dist/Components/NcButton.js'
import NcNoteCard from '@nextcloud/vue/dist/Components/NcNoteCard.js'
+import { wipeBrowserStorages } from '../utils/xhr-request.js'
const query = queryString.parse(location.search)
if (query.clear === '1') {
- try {
- window.localStorage.clear()
- window.sessionStorage.clear()
- console.debug('Browser storage cleared')
- } catch (e) {
- console.error('Could not clear browser storage', e)
- }
+ wipeBrowserStorages()
}
export default {