UNPKG

@betha-plataforma/oauth

Version:

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

79 lines 7.21 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.OAuthApplication = void 0; const Api_1 = require("./Api"); const Helpers_1 = require("./Helpers"); const Persistence_1 = require("./Persistence"); const Protocol_1 = require("./Protocol"); class OAuthApplication { constructor(config) { this.login = (anonymous = false, configs = {}) => __awaiter(this, void 0, void 0, function* () { this.lastPageStore.storeLastPage(); return this.flow.authorize(anonymous, configs); }); this.logout = (end_session_endpoint) => __awaiter(this, void 0, void 0, function* () { this.invalidateSession(); // TODO: post_logout_redirect_uri as query param if (end_session_endpoint) { return Helpers_1.navigate(end_session_endpoint); } return Helpers_1.navigate(this.config.provider.end_session_endpoint); }); this.invalidateSession = () => { this.sessionStore.clear(); }; this.silentRefresh = (anonymous = false) => __awaiter(this, void 0, void 0, function* () { const session = yield this.flow.silentAuthorize(anonymous); return this.establishUserSession(session); }); this.getUser = () => { return this.userStore.retrieveUser(); }; this.getSession = () => { return this.sessionStore.retrieveSession(); }; this.handleCallback = () => __awaiter(this, void 0, void 0, function* () { const authSession = yield this.flow.handleAuthorizeResponse(); yield this.establishUserSession(authSession); const lastPage = this.lastPageStore.retrieveLastPage(); return Helpers_1.navigate(lastPage); }); this.hasActiveSession = () => { var _a; const session = this.getSession(); if (!session) { return false; } return !!((_a = session.accessToken) === null || _a === void 0 ? void 0 : _a.access_token); }; this.establishUserSession = (session) => __awaiter(this, void 0, void 0, function* () { this.sessionStore.storeSession(session); return this.loadUser(); }); this.loadUser = () => __awaiter(this, void 0, void 0, function* () { // TODO: check if user changed before loading again const session = this.getSession(); const { access_token } = session.accessToken; const userInfo = yield this.api.userInfo.get(access_token); return this.userStore.storeUser(userInfo); }); this.config = config; this.api = new Api_1.Api(config); this.storage = Persistence_1.parsePersistence(config); this.flow = Protocol_1.parseFlow(config.flow, this.api, this.storage); this.lastPageStore = new Protocol_1.LastPageStore(this.storage); this.sessionStore = new Protocol_1.SessionStore(this.storage); this.userStore = new Protocol_1.UserStore(this.storage); } } exports.OAuthApplication = OAuthApplication; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT0F1dGhBcHBsaWNhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvT0F1dGhBcHBsaWNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSwrQkFBd0Q7QUFFeEQsdUNBQXFDO0FBRXJDLCtDQUE4RDtBQUM5RCx5Q0FBbUc7QUFTbkcsTUFBYSxnQkFBZ0I7SUFVM0IsWUFBWSxNQUFtQjtRQVVmLFVBQUssR0FBRyxDQUFPLFlBQXFCLEtBQUssRUFBRSxVQUF3QixFQUFFLEVBQWlCLEVBQUU7WUFDdEcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNuQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNqRCxDQUFDLENBQUEsQ0FBQztRQUVjLFdBQU0sR0FBRyxDQUFPLG9CQUE2QixFQUFpQixFQUFFO1lBQzlFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3pCLGdEQUFnRDtZQUVoRCxJQUFJLG9CQUFvQixFQUFFO2dCQUN4QixPQUFPLGtCQUFRLENBQUMsb0JBQW9CLENBQUMsQ0FBQzthQUN2QztZQUNELE9BQU8sa0JBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzdELENBQUMsQ0FBQSxDQUFDO1FBRWMsc0JBQWlCLEdBQUcsR0FBUyxFQUFFO1lBQzdDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDNUIsQ0FBQyxDQUFDO1FBRWMsa0JBQWEsR0FBRyxDQUFPLFlBQXFCLEtBQUssRUFBNkIsRUFBRTtZQUM5RixNQUFNLE9BQU8sR0FBZ0IsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN4RSxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMs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