@hellocoop/api
Version:
Client API for Hellō https://hello.dev
86 lines (85 loc) • 3.71 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const config_1 = __importDefault(require("../lib/config"));
const callback_1 = __importDefault(require("./callback"));
const login_1 = __importDefault(require("./login"));
const logout_1 = __importDefault(require("./logout"));
const invite_1 = __importDefault(require("./invite"));
const command_1 = __importDefault(require("./command"));
// import { handleAuth, handleCookieTokenVerify } from './auth'
const auth_1 = require("./auth");
const wildcard_1 = __importDefault(require("./wildcard"));
const initiateLogin_1 = __importDefault(require("./initiateLogin"));
const definitions_1 = require("@hellocoop/definitions");
const router = async (req, res) => {
const { query, method } = req;
if (config_1.default.logDebug)
console.log('\n@hellocoop/api:\n', JSON.stringify({ method, query, params: req.body }, null, 2));
if (method === 'POST') {
const params = req.body;
if (params.iss || params.domain_hint || params.login_hint) {
return res.redirect(config_1.default.apiRoute + '/?' + new URLSearchParams(params));
}
if (params.command_token) {
return await (0, command_1.default)(req, res, params);
}
// we don't know how to process the POST
const keys = Object.keys(params);
if (!keys || keys.length === 0) {
console.error('No POST parameters found');
return res.status(400).send('Invalid request');
}
const message = 'Unknown POST parameters: ' + JSON.stringify(keys);
console.error(message);
return res.status(400).send(message);
}
if (!query) {
// Q: repurpose as returning configuration if content-type is application/json
console.error(new Error('No query parameters'));
return res.redirect(config_1.default.routes.loggedOut || '/');
}
if (method !== 'GET')
return res.status(400).send('Method not allowed');
if (query.op) { // not a protocol flow
if (query.op === 'auth' || query.op === 'getAuth') {
if (config_1.default.error) {
return res.json(definitions_1.NotLoggedIn);
}
else {
return await (0, auth_1.handleAuth)(req, res);
}
}
if (query.op === 'login') { // start login flow, redirect to Hellō
return await (0, login_1.default)(req, res);
}
if (query.op === 'logout') { // logout user
return await (0, logout_1.default)(req, res);
}
if (query.op === 'invite') { // start invite flow, redirect to Hellō
return await (0, invite_1.default)(req, res);
}
res.status(500);
res.send('unknown op parameter:\n' + JSON.stringify(query, null, 4));
return;
}
if (config_1.default.error) { // not able to process requests
res.status(500);
res.send('Missing configuration:\n' + JSON.stringify(config_1.default.error, null, 4));
return;
}
if (query.code || query.error) { // authorization response
return await (0, callback_1.default)(req, res);
}
if (query.wildcard_console) {
return await (0, wildcard_1.default)(req, res);
}
if (query.iss || query.domain_hint || query.login_hint) { // IdP initiated login
return await (0, initiateLogin_1.default)(req, res, query);
}
res.status(500);
res.send('unknown query:\n' + JSON.stringify(query, null, 4));
};
exports.default = router;
;