@hellocoop/api
Version:
Client API for Hellō https://hello.dev
48 lines (47 loc) • 1.97 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const helper_server_1 = require("@hellocoop/helper-server");
const config_1 = __importDefault(require("../lib/config"));
const oidc_1 = require("../lib/oidc");
const handleLogin = async (req, res) => {
const { provider_hint: providerParam, scope: scopeParam, target_uri, redirect_uri, nonce: providedNonce, prompt, login_hint, domain_hint } = req.query;
if (!config_1.default.clientId) {
res.status(500);
res.send('Missing HELLO_CLIENT_ID configuration');
return;
}
const redirectURI = config_1.default.redirectURI || redirect_uri;
if (!redirectURI) {
console.log('Hellō: Discovering API RedirectURI route ...');
return res.send((0, helper_server_1.redirectURIBounce)());
}
// parse out param strings
const targetURIstring = (Array.isArray(providerParam) ? providerParam[0] : providerParam);
const provider_hint = targetURIstring?.split(' ').map((s) => s.trim());
const scopeString = (Array.isArray(scopeParam) ? scopeParam[0] : scopeParam);
const scope = scopeString?.split(' ').map((s) => s.trim());
const request = {
redirect_uri: redirectURI,
client_id: config_1.default.clientId,
wallet: config_1.default.helloWallet,
scope,
provider_hint,
login_hint,
domain_hint,
prompt
};
if (providedNonce)
request.nonce = providedNonce;
const { url, nonce, code_verifier } = await (0, helper_server_1.createAuthRequest)(request);
await (0, oidc_1.saveOidc)(req, res, {
nonce,
code_verifier,
redirect_uri: redirectURI,
target_uri: (Array.isArray(target_uri) ? target_uri[0] : target_uri)
});
res.redirect(url);
};
exports.default = handleLogin;