diff --git a/client/src/App.tsx b/client/src/App.tsx
index 86954d3..cb538db 100644
--- a/client/src/App.tsx
+++ b/client/src/App.tsx
@@ -283,6 +283,7 @@ function App() {
Oprava časové zóny v "Poslední aktualizace"
Oprava přesměrování při přihlášení přes Authelia
Zobrazení jména uživatele místo loginu při přihlášení přes Authelia
+ Funkční odhlášení přes Authelia
Dnes je {data.date}
diff --git a/client/src/context/auth.tsx b/client/src/context/auth.tsx
index 7eb654c..aeee767 100644
--- a/client/src/context/auth.tsx
+++ b/client/src/context/auth.tsx
@@ -46,8 +46,13 @@ function useProvideAuth(): AuthContextProps {
}, [decodedToken]);
function logout() {
+ const trusted = (decodedToken as any).trusted;
+ const logoutUrl = (decodedToken as any).logoutUrl;
setToken(null);
setLoginName(undefined);
+ if (trusted && logoutUrl?.length) {
+ window.location.replace(logoutUrl);
+ }
}
return {
diff --git a/server/.env.template b/server/.env.template
index eb55c72..0525728 100644
--- a/server/.env.template
+++ b/server/.env.template
@@ -1,6 +1,9 @@
# Secret pro podepisování JWT tokenů. Minimální délka 32 znaků.
# JWT_SECRET='CHANGE_ME'
+# URL pro externí odhlášení, kam bude uživatel při odhlášení přesměrován pokud byl přihlášen pomocí Trusted Headers.
+# LOGOUT_URL='https://auth.example.com/logout'
+
# Datové úložiště. Musí být 'json' nebo 'redis' (není case sensitive).
# json - Data jsou ukládána do JSON souboru. Pomalé (práce se souborem), ale vhodné pro vývoj (snadnější prohlížení dat).
# redis - Data jsou ukládána v Redis serveru. Dle potřeby může být nutné upravit REDIS_ proměnné viz dále.
diff --git a/server/src/auth.ts b/server/src/auth.ts
index d382ca3..8fe2706 100644
--- a/server/src/auth.ts
+++ b/server/src/auth.ts
@@ -17,7 +17,8 @@ export function generateToken(login?: string, trusted?: boolean): string {
if (!login || login.trim().length === 0) {
throw Error("Nebyl předán login");
}
- return jwt.sign({ login, trusted: trusted || false }, process.env.JWT_SECRET);
+ const payload = { login, trusted: trusted || false, logoutUrl: process.env.LOGOUT_URL };
+ return jwt.sign(payload, process.env.JWT_SECRET);
}
/**