From 0830af9c0e59ae047ae725071a7b2f1a4cb7a30c Mon Sep 17 00:00:00 2001 From: Alexander Schmidt Date: Wed, 4 Feb 2026 14:31:25 +0100 Subject: [PATCH] feat: redirect unauthenticated users from profile pages to home, fix auth timing on page refresh --- js/app.js | 4 ++++ js/components/pages/page-favorites.js | 12 ++++++++++++ js/components/pages/page-messages.js | 22 ++++++++-------------- js/components/pages/page-my-listings.js | 24 +++++++++--------------- js/components/pages/page-settings.js | 12 ++++++++++-- 5 files changed, 43 insertions(+), 31 deletions(-) diff --git a/js/app.js b/js/app.js index 94c555d..681e902 100644 --- a/js/app.js +++ b/js/app.js @@ -1,4 +1,5 @@ import { i18n } from './i18n.js' +import { auth } from './services/auth.js' import { setupGlobalErrorHandler } from './components/error-boundary.js' async function initApp() { @@ -11,6 +12,9 @@ async function initApp() { } await i18n.init() + + // Restore auth session before loading components + await auth.tryRestoreSession() await import('./components/app-shell.js') diff --git a/js/components/pages/page-favorites.js b/js/components/pages/page-favorites.js index 643b7e8..48340c6 100644 --- a/js/components/pages/page-favorites.js +++ b/js/components/pages/page-favorites.js @@ -1,5 +1,6 @@ import { t, i18n } from '../../i18n.js' import { directus } from '../../services/directus.js' +import { auth } from '../../services/auth.js' import '../listing-card.js' import '../skeleton-card.js' @@ -12,13 +13,24 @@ class PageFavorites extends HTMLElement { } connectedCallback() { + if (!auth.isLoggedIn()) { + window.location.hash = '#/' + return + } + this.render() this.loadFavorites() this.unsubscribe = i18n.subscribe(() => this.render()) + this.authUnsubscribe = auth.subscribe(() => { + if (!auth.isLoggedIn()) { + window.location.hash = '#/' + } + }) } disconnectedCallback() { if (this.unsubscribe) this.unsubscribe() + if (this.authUnsubscribe) this.authUnsubscribe() } getFavoriteIds() { diff --git a/js/components/pages/page-messages.js b/js/components/pages/page-messages.js index 4f92ef8..1a3e8e7 100644 --- a/js/components/pages/page-messages.js +++ b/js/components/pages/page-messages.js @@ -13,27 +13,21 @@ class PageMessages extends HTMLElement { connectedCallback() { this.isLoggedIn = auth.isLoggedIn() - this.render() - if (this.isLoggedIn) { - this.loadConversations() - } else { - this.loading = false + if (!this.isLoggedIn) { + window.location.hash = '#/' + return } + this.render() + this.loadConversations() + this.unsubscribe = i18n.subscribe(() => this.render()) this.authUnsubscribe = auth.subscribe(() => { - const wasLoggedIn = this.isLoggedIn this.isLoggedIn = auth.isLoggedIn() - if (!wasLoggedIn && this.isLoggedIn) { - this.loading = true - this.render() - this.loadConversations() - } else if (wasLoggedIn && !this.isLoggedIn) { - this.conversations = [] - this.loading = false - this.render() + if (!this.isLoggedIn) { + window.location.hash = '#/' } }) } diff --git a/js/components/pages/page-my-listings.js b/js/components/pages/page-my-listings.js index 788a391..088b63b 100644 --- a/js/components/pages/page-my-listings.js +++ b/js/components/pages/page-my-listings.js @@ -15,27 +15,21 @@ class PageMyListings extends HTMLElement { connectedCallback() { this.isLoggedIn = auth.isLoggedIn() - this.render() - if (this.isLoggedIn) { - this.loadMyListings() - } else { - this.loading = false + if (!this.isLoggedIn) { + window.location.hash = '#/' + return } + this.render() + this.loadMyListings() + this.unsubscribe = i18n.subscribe(() => this.render()) this.authUnsubscribe = auth.subscribe(() => { - const wasLoggedIn = this.isLoggedIn this.isLoggedIn = auth.isLoggedIn() - if (!wasLoggedIn && this.isLoggedIn) { - this.loading = true - this.render() - this.loadMyListings() - } else if (wasLoggedIn && !this.isLoggedIn) { - this.listings = [] - this.loading = false - this.render() + if (!this.isLoggedIn) { + window.location.hash = '#/' } }) } @@ -47,7 +41,7 @@ class PageMyListings extends HTMLElement { async loadMyListings() { try { - const user = auth.getUser() + const user = await auth.getUser() if (!user) { this.loading = false this.updateContent() diff --git a/js/components/pages/page-settings.js b/js/components/pages/page-settings.js index e8d9558..ee6952a 100644 --- a/js/components/pages/page-settings.js +++ b/js/components/pages/page-settings.js @@ -9,6 +9,12 @@ class PageSettings extends HTMLElement { connectedCallback() { this.isLoggedIn = auth.isLoggedIn() + + if (!this.isLoggedIn) { + window.location.hash = '#/' + return + } + this.render() this.setupEventListeners() @@ -19,8 +25,10 @@ class PageSettings extends HTMLElement { this.authUnsubscribe = auth.subscribe(() => { this.isLoggedIn = auth.isLoggedIn() - this.render() - this.setupEventListeners() + + if (!this.isLoggedIn) { + window.location.hash = '#/' + } }) }