UNPKG

@betha-plataforma/oauth

Version:

Biblioteca JavaScript para lidar com o fluxo do OAuth 2.0 em aplicações Web, com suporte a TypeScript.

112 lines 8.55 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.OAuthMonitor = void 0; const Helpers_1 = require("./Helpers"); class OAuthMonitor { constructor({ app, interval = 1000 }, { onSessionChanged = () => void 0, onSessionEnded = () => void 0, onSessionRestablished = () => void 0, }) { this.start = () => __awaiter(this, void 0, void 0, function* () { if (this.isRunning) { this.stop(); } this.isRunning = true; this.session = this.app.getSession(); this.frame = new Helpers_1.MessageBoundHiddenIFrame({ url: this.app.config.provider.check_session_iframe, window: Helpers_1.getWindow(), }, { onMessage: this.handleMessage }); return this.frame.load().then(() => { this.timer = setInterval(this.checkSession, this.interval); }); }); this.stop = () => { if (!this.isRunning) { return; } try { clearInterval(this.timer); this.frame.destroy(); this.currentStat = 'unchanged'; } finally { this.isRunning = false; } }; this.checkSession = () => { if (!this.session) { this.session = this.app.getSession(); } const sessionToCheck = `${this.app.config.clientId} ${this.session.sessionState.session_state}`; this.frame.postMessage(sessionToCheck); }; this.handleMessage = (e) => { const stat = e.data; const isSameStatus = stat === this.currentStat; if (isSameStatus) { if (stat === 'changed') { this.handleChangedSameStatus(); } return; } this.currentStat = stat; if (stat === 'changed') { this.handleChanged(); } else if (stat === 'unchanged') { this.handleUnchanged(); } }; this.handleUnchanged = () => __awaiter(this, void 0, void 0, function* () { this.handlers.onSessionRestablished(); return this.start(); }); this.handleChangedSameStatus = () => __awaiter(this, void 0, void 0, function* () { if (this.isSameUser()) { this.usersChanged = false; return; } if (!this.usersChanged) { this.handlers.onSessionChanged(); } this.usersChanged = true; }); this.handleChanged = () => __awaiter(this, void 0, void 0, function* () { const app = this.app; try { yield app.silentRefresh(); } catch (e) { this.handlers.onSessionEnded(); return app.invalidateSession(); } return this.start(); }); this.isSameUser = () => { const newSession = this.app.getSession(); if (!newSession) { return true; } return newSession.accessToken.principal === this.session.accessToken.principal; }; this.app = app; this.currentStat = 'unchanged'; this.interval = interval; this.handlers = { onSessionChanged, onSessionEnded, onSessionRestablished, }; this.isRunning = false; this.usersChanged = false; } } exports.OAuthMonitor = OAuthMonitor; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT0F1dGhNb25pdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9PQXV0aE1vbml0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQ0EsMkNBQW9FO0FBZ0JwRSxNQUFhLFlBQVk7SUFhdkIsWUFDRSxFQUFFLEdBQUcsRUFBRSxRQUFRLEdBQUcsSUFBSSxFQUF1QixFQUM3QyxFQUNFLGdCQUFnQixHQUFHLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUMvQixjQUFjLEdBQUcsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQzdCLHFCQUFxQixHQUFHLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUNWO1FBY2QsVUFBSyxHQUFHLEdBQXdCLEVBQUU7WUFDaEQsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNsQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDYjtZQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksa0NBQXdCLENBQ3ZDO2dCQUNFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsb0JBQW9CO2dCQUNsRCxNQUFNLEVBQUUsbUJBQVMsRUFBRTthQUNwQixFQUNELEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FDbEMsQ0FBQztZQUVGLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNqQyxJQUFJLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM3RCxDQUFDLENBQUMsQ0FBQztR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