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