58 lines
1.1 KiB
JavaScript
58 lines
1.1 KiB
JavaScript
import keycloak from "./keycloak";
|
|
|
|
/**
|
|
* Initialise Keycloak sans forcer le login.
|
|
* - onLoad: "check-sso" => ne redirige pas si user non loggé
|
|
*/
|
|
export function initAuth() {
|
|
return keycloak.init({
|
|
onLoad: "check-sso",
|
|
checkLoginIframe: false,
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Appelle une action qui nécessite d'être authentifié.
|
|
* Si non loggé => ouvre la page de login Keycloak, puis revient sur la même page.
|
|
*/
|
|
export function requireAuth(action) {
|
|
if (keycloak.authenticated) {
|
|
return action();
|
|
}
|
|
|
|
keycloak.login({
|
|
redirectUri: window.location.href,
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Retourne le token JWT actuel (ou null)
|
|
*/
|
|
export function getToken() {
|
|
return keycloak.token || null;
|
|
}
|
|
|
|
/**
|
|
* Retourne le username depuis le token (si présent)
|
|
*/
|
|
export function getUsername() {
|
|
const profile = keycloak.tokenParsed || {};
|
|
return (
|
|
profile.preferred_username ||
|
|
profile.email ||
|
|
profile.name ||
|
|
null
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Logout et revient sur la même page.
|
|
*/
|
|
export function logout() {
|
|
keycloak.logout({
|
|
redirectUri: window.location.origin,
|
|
});
|
|
}
|
|
|
|
export default keycloak;
|