const app = { getToken: function () { return new Promise(function (resolve, reject) { if (app.keycloak) { if (app.keycloak.authenticated) { resolve(app.keycloak.token) } else { reject(new Error('Не найден токен, запрос данных невозможен')) } } else { app.keycloak = new Keycloak({ url: 'https://auth.rustat-service.ru', realm: 'rustat', clientId: 'node-manager', }) app.keycloak.init({ onLoad: 'login-required', // onLoad: 'check-sso', // silentCheckSsoRedirectUri: `${location.origin}/static/silent-check-sso.html`, }).then((result) => { if (app.keycloak.authenticated) { resolve(app.keycloak.token) } else { reject(new Error('Не удалось получить токен')) } }) app.keycloak.onTokenExpired = () => app.keycloak.updateToken().catch((err) => console.log(err)) app.keycloak.onAuthRefreshError = (err) => console.log(err) app.keycloak.onAuthRefreshSuccess = () => console.log('token is refreshed') } }) }, request: function (data, success) { this.getToken() .then(function (token) { $.ajax(window.location.pathname, { method: 'POST', headers: { authorization: `Bearer ${token}` }, contentType: 'application/json; charset=utf-8', data: JSON.stringify(data || {}), success, }) }) .catch(function (err) { console.log('request', err) alert(err.message) }) }, }