UNPKG

@hellocoop/api

Version:

Client API for Hellō https://hello.dev

86 lines (85 loc) 3.71 kB
"use strict"; 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;