aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaksim Sukharev <antreesy.web@gmail.com>2025-02-21 16:57:59 +0100
committerMaksim Sukharev <antreesy.web@gmail.com>2025-02-21 16:57:59 +0100
commit745bcafe59b493b2a059c83cc4d02c193e5c5246 (patch)
tree4f8a410637a9c1f8f726de4b3a143e7b763d0dc8
parent0fdc214896a6f15f71f8e8e6c07ab009c18cf263 (diff)
downloadnextcloud-server-fix/noid/wipe-local-storage.tar.gz
nextcloud-server-fix/noid/wipe-local-storage.zip
fixup!: fix: wipe local storages on log outfix/noid/wipe-local-storage
Signed-off-by: Maksim Sukharev <antreesy.web@gmail.com>
-rw-r--r--core/src/utils/xhr-request.js28
-rw-r--r--core/src/views/Login.vue9
2 files changed, 22 insertions, 15 deletions
diff --git a/core/src/utils/xhr-request.js b/core/src/utils/xhr-request.js
index baed0dc78e9..2ffe2434fad 100644
--- a/core/src/utils/xhr-request.js
+++ b/core/src/utils/xhr-request.js
@@ -33,7 +33,7 @@ const isNextcloudUrl = (url) => {
* @returns {Promise<void>}
*/
async function checkLoginStatus() {
- // skip if no logged-in user
+ // skip if no logged in user
if (getCurrentUser() === null) {
return
}
@@ -51,13 +51,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.')
- // Clear all storages and redirect to login page
- window.localStorage.clear()
- window.sessionStorage.clear()
- const indexedDBList = await window.indexedDB.databases()
- for (const indexedDB of indexedDBList) {
- await window.indexedDB.deleteDatabase(indexedDB.name)
- }
+ await wipeBrowserStorages()
window.location = generateUrl('/login?redirect_url={url}', {
url: window.location.pathname + window.location.search + window.location.hash,
})
@@ -70,6 +64,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)
+ }
+ console.debug('Browser storages cleared')
+ } catch (e) {
+ console.error('Could not clear browser storages', e)
+ }
+}
+
+/**
* 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 318e72f89a8..7a35331b090 100644
--- a/core/src/views/Login.vue
+++ b/core/src/views/Login.vue
@@ -113,16 +113,11 @@ import ResetPassword from '../components/login/ResetPassword.vue'
import UpdatePassword from '../components/login/UpdatePassword.vue'
import NcButton from '@nextcloud/vue/components/NcButton'
import NcNoteCard from '@nextcloud/vue/components/NcNoteCard'
+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 {