44 lines
1.9 KiB
TypeScript
44 lines
1.9 KiB
TypeScript
// src/script.ts
|
||
|
||
import Keycloak from 'keycloak-js';
|
||
|
||
// 1. Конфигурация клиента Keycloak
|
||
const keycloak = new Keycloak({
|
||
url: 'https://auth.vigdorov.ru', // URL вашего сервера Keycloak
|
||
realm: 'dev-apps', // Имя вашего realm
|
||
clientId: 'test-localapp', // Client ID вашего приложения
|
||
});
|
||
|
||
// 2. Получаем доступ к элементам на странице
|
||
const greetingElement = document.querySelector('h1')!;
|
||
const actionButton = document.querySelector('button')!;
|
||
|
||
// 3. Функция для обновления UI в зависимости от статуса авторизации
|
||
const updateUI = () => {
|
||
if (keycloak.authenticated) {
|
||
// Если пользователь залогинен
|
||
const userName = keycloak.tokenParsed?.given_name || keycloak.tokenParsed?.preferred_username;
|
||
greetingElement.textContent = `Привет, ${userName}!`;
|
||
actionButton.textContent = 'Выйти';
|
||
actionButton.onclick = () => keycloak.logout();
|
||
|
||
} else {
|
||
// Если пользователь не залогинен
|
||
greetingElement.textContent = 'Привет, гость!';
|
||
actionButton.textContent = 'Войти';
|
||
actionButton.onclick = () => keycloak.login();
|
||
}
|
||
};
|
||
|
||
// 4. Инициализация Keycloak
|
||
keycloak
|
||
.init({onLoad: 'check-sso'})
|
||
.then(authenticated => {
|
||
console.log(authenticated ? 'Пользователь аутентифицирован' : 'Пользователь не аутентифицирован');
|
||
updateUI(); // Обновляем UI после инициализации
|
||
})
|
||
.catch(error => {
|
||
console.error('Ошибка инициализации Keycloak', error);
|
||
greetingElement.textContent = 'Не удалось подключиться к серверу авторизации.';
|
||
});
|