UNPKG

@m-ld/gateway

Version:

m-ld gateway for services

86 lines 8.19 kB
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; import { EndPoint, get, head, post } from './EndPoint.js'; import { plugins } from 'restify'; import { AccountOwnedId, resolveGateway, validate } from '../lib/index.js'; import { as } from '../lib/validate.js'; import { pipeline } from 'stream/promises'; import { MethodNotAllowedError, toHttpError } from './errors.js'; // @ts-ignore import { version } from '../../package.json' assert { type: 'json' }; export class GatewayWebsite extends EndPoint { constructor(gateway, server, notifier, liquid) { super(server, '', ({ useFor }) => useFor('post', plugins.bodyParser())); this.gateway = gateway; this.notifier = notifier; this.liquid = liquid; this.startTime = new Date(); this.pageVars = Promise.resolve(resolveGateway(gateway.config.gateway)).then(url => ({ origin: url.origin, domain: gateway.domainName, root: gateway.rootAccountName, version })); } async getPage(req, res) { if (req.path() === '/activate') throw new MethodNotAllowedError; await this.renderHtml(res, req.path().slice(1) || 'index', await this.pageVars); } async headPage(req, res) { if (req.path() === '/activate') throw new MethodNotAllowedError; // This will throw ENOENT if not found await this.liquid.parseFile(req.path().slice(1) || 'index'); this.setHtmlHeaders(res).send(); } async activation(req, res) { const { account, email, code, jwe } = req.body; const pageVars = { account, email, version }; try { if (email) { AccountOwnedId.checkComponentId(account); // Requesting activation code by email validate(email, as.string().email()); const { jwe, code } = await this.gateway.activation(account, email); await this.notifier.sendActivationCode(email, code); pageVars.jwe = jwe; } else { const { user: account, email } = this.gateway.verifyActivation(code, jwe); const acc = await this.gateway.account(account, true); const { auth: { key } } = await acc.generateKey({ email }); pageVars.key = key; } } catch (e) { pageVars.error = toHttpError(e).toJSON(); } await this.renderHtml(res, 'activate', pageVars); } async renderHtml(res, file, pageVars) { // This will throw ENOENT if not found const html = await this.liquid.renderFileToNodeStream(file, pageVars); await pipeline(html, this.setHtmlHeaders(res)); } setHtmlHeaders(res) { res.header('content-type', 'text/html'); res.header('transfer-encoding', 'chunked'); res.header('last-modified', this.startTime); return res; } } __decorate([ get('/*') ], GatewayWebsite.prototype, "getPage", null); __decorate([ head('/*') ], GatewayWebsite.prototype, "headPage", null); __decorate([ post('/activate') ], GatewayWebsite.prototype, "activation", null); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2F0ZXdheVdlYnNpdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaHR0cC9HYXRld2F5V2Vic2l0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxPQUFPLEVBQTZCLE1BQU0sU0FBUyxDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUdqRSxhQUFhO0FBQ2IsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG9CQUFvQixDQUFDLFNBQVMsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBSXJFLE1BQU0sT0FBTyxjQUFlLFNBQVEsUUFBZ0I7SUFJbEQsWUFDVyxPQUFnQixFQUN6QixNQUFjLEVBQ0csUUFBa0IsRUFDbEIsTUFBYztRQUUvQixLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUMvQixNQUFNLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFOL0IsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUVSLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQU5oQixjQUFTLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQVV0QyxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMs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