@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
JavaScript
"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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