@redocly/portal-plugin-gravitee-sso
Version:
Gravitee SSO plugin for @redocly/portal
40 lines • 2.07 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 { LOGIN_PAGE_SLUG } from './constants.js';
import { isGraviteeSsoConfig } from './is-gravitee-sso-config.js';
export default function (ctx, store) {
return __awaiter(this, void 0, void 0, function* () {
var _a;
const logger = ctx.get('logger');
const parsedUrl = new URL(ctx.req.url);
const idpId = parsedUrl.searchParams.get('idpId');
if (!idpId) {
logger.error('Gravitee SSO: idpId query parameter not found');
return ctx.text('Forbidden', 403);
}
const idpConfig = (_a = store.getConfig().ssoDirect) === null || _a === void 0 ? void 0 : _a[idpId];
if (!isGraviteeSsoConfig(idpConfig)) {
logger.error(`Gravitee SSO: invalid idpId in query params: ${idpId}`);
return ctx.text('Forbidden', 403);
}
logger.info('Gravitee login initiated');
const redirectTo = parsedUrl.searchParams.get('redirectTo') || '/';
const localePrefix = parsedUrl.searchParams.get('localePrefix') || '';
const loginQueryParams = new URLSearchParams({
redirectTo,
idpId,
});
const loginPageUrl = `${localePrefix}${LOGIN_PAGE_SLUG}?${loginQueryParams.toString()}`;
return ctx.newResponse(null, 302, {
Location: loginPageUrl,
});
});
}
//# sourceMappingURL=handle-initiate-login.js.map