Abmelden beendet auch die Authentik-Sitzung und springt zurück ins Tool
- Kopfleiste meldet immer über das Portal ab, auch ohne Portal-Sitzung, und gibt die aktuelle Seite als returnTo mit. - Portal merkt sich den Rücksprung über den Umweg zu Authentik. - Setup-Skript setzt den Abmelde-Ablauf des Providers 'Portal' auf default-invalidation-flow (der Provider-Ablauf meldet nur bei der App ab). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
c674fce196
commit
edc64f159a
5 files changed
+59
-8
No files matched your search
@@ -213,7 +213,7 @@ class HiTopbar extends HTMLElement {
|
||||
}
|
||||
|
||||
/** Erst das Tool abmelden lassen (Ereignis "hi-abmelden"), dann Portal und Authentik. */
|
||||
private async logout(href: string | null): Promise<void> {
|
||||
private async logout(href: string): Promise<void> {
|
||||
const pending: Promise<unknown>[] = [];
|
||||
const event = new CustomEvent('hi-abmelden', {
|
||||
bubbles: true,
|
||||
@@ -226,9 +226,9 @@ class HiTopbar extends HTMLElement {
|
||||
await Promise.race([Promise.allSettled(pending), new Promise((r) => setTimeout(r, LOGOUT_WAIT_MS))]);
|
||||
}
|
||||
if (event.defaultPrevented) return;
|
||||
// Ohne Portal-Sitzung gibt es dort nichts abzumelden; neu laden zeigt die Anmeldung des Tools.
|
||||
if (href) location.href = href;
|
||||
else location.reload();
|
||||
// Immer über das Portal, auch ohne Portal-Sitzung: nur so endet auch die Authentik-Sitzung.
|
||||
// Danach geht es zurück auf diese Seite, die dann die Anmeldung des Tools zeigt.
|
||||
location.href = `${href}?returnTo=${encodeURIComponent(location.href)}`;
|
||||
}
|
||||
|
||||
private render(): void {
|
||||
@@ -291,7 +291,7 @@ class HiTopbar extends HTMLElement {
|
||||
);
|
||||
this.root.querySelector<HTMLAnchorElement>('[data-logout]')?.addEventListener('click', (e) => {
|
||||
e.preventDefault();
|
||||
void this.logout(user ? links.logout : null);
|
||||
void this.logout(links.logout);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user