Podpora odhlášení přes Authelia

This commit is contained in:
Martin Berka 2023-08-08 21:32:11 +02:00
parent 6b824ce33a
commit d41e0e9113
4 changed files with 11 additions and 1 deletions

View File

@ -283,6 +283,7 @@ function App() {
<li>Oprava časové zóny v "Poslední aktualizace"</li> <li>Oprava časové zóny v "Poslední aktualizace"</li>
<li>Oprava přesměrování při přihlášení přes Authelia</li> <li>Oprava přesměrování při přihlášení přes Authelia</li>
<li>Zobrazení jména uživatele místo loginu při přihlášení přes Authelia</li> <li>Zobrazení jména uživatele místo loginu při přihlášení přes Authelia</li>
<li>Funkční odhlášení přes Authelia</li>
</ul> </ul>
</Alert> </Alert>
<h1 className='title'>Dnes je {data.date}</h1> <h1 className='title'>Dnes je {data.date}</h1>

View File

@ -46,8 +46,13 @@ function useProvideAuth(): AuthContextProps {
}, [decodedToken]); }, [decodedToken]);
function logout() { function logout() {
const trusted = (decodedToken as any).trusted;
const logoutUrl = (decodedToken as any).logoutUrl;
setToken(null); setToken(null);
setLoginName(undefined); setLoginName(undefined);
if (trusted && logoutUrl?.length) {
window.location.replace(logoutUrl);
}
} }
return { return {

View File

@ -1,6 +1,9 @@
# Secret pro podepisování JWT tokenů. Minimální délka 32 znaků. # Secret pro podepisování JWT tokenů. Minimální délka 32 znaků.
# JWT_SECRET='CHANGE_ME' # 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). # 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). # 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. # redis - Data jsou ukládána v Redis serveru. Dle potřeby může být nutné upravit REDIS_ proměnné viz dále.

View File

@ -17,7 +17,8 @@ export function generateToken(login?: string, trusted?: boolean): string {
if (!login || login.trim().length === 0) { if (!login || login.trim().length === 0) {
throw Error("Nebyl předán login"); 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);
} }
/** /**