UNPKG

@betha-plataforma/oauth

Version:

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

75 lines 7.17 kB
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()); }); }; import { Api } from './Api'; import { navigate } from './Helpers'; import { parsePersistence } from './Persistence'; import { LastPageStore, parseFlow, SessionStore, UserStore } from './Protocol'; export 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 navigate(end_session_endpoint); } return 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 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(config); this.storage = parsePersistence(config); this.flow = parseFlow(config.flow, this.api, this.storage); this.lastPageStore = new LastPageStore(this.storage); this.sessionStore = new SessionStore(this.storage); this.userStore = new UserStore(this.storage); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT0F1dGhBcHBsaWNhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvT0F1dGhBcHBsaWNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsR0FBRyxFQUE4QixNQUFNLE9BQU8sQ0FBQztBQUV4RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXJDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQXNCLGFBQWEsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQVNuRyxNQUFNLE9BQU8sZ0JBQWdCO0lBVTNCLFlBQVksTUFBbUI7UUFVZixVQUFLLEdBQUcsQ0FBTyxZQUFxQixLQUFLLEVBQUUsVUFBd0IsRUFBRSxFQUFpQixFQUFFO1lBQ3RHLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbkMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFBLENBQUM7UUFFYyxXQUFNLEdBQUcsQ0FBTyxvQkFBNkIsRUFBaUIsRUFBRTtZQUM5RSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN6QixnREFBZ0Q7WUFFaEQsSUFBSSxvQkFBb0IsRUFBRTtnQkFDeEIsT0FBTyxRQUFRLENBQUMsb0JBQW9CLENBQUMsQ0FBQzthQUN2QztZQUNELE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDN0QsQ0FBQyxDQUFBLENBQUM7UUFFYyxzQkFBaUIsR0FBRyxHQUFTLEVBQUU7WUFDN0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM1QixDQUFDLENBQUM7UUFFYyxrQkFBYSxH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