UNPKG

lisa-box

Version:
55 lines 2.17 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const common_1 = require("@fabrix/fabrix/dist/common"); class AuthTokenPolicy extends common_1.FabrixPolicy { protect(req, res, next) { const header = req.headers['device-id']; const nextPolicy = () => this.app.policies['Passport'].jwt(req, res, next); const checkHeaderKnownDevice = () => { return this.app.orm.Device.findAll({ where: { pluginName: 'lisa-plugin-voice' } }).then(devices => { const results = devices.filter(device => device.privateData.identifier === header); if (!devices || devices.length === 0 || results.length === 0) { if (req.connection.remoteAddress === '127.0.0.1' || req.connection.remoteAddress === '::ffff:127.0.0.1' || req.connection.remoteAddress === '::1') { next(); } else { nextPolicy(); } } else { if (!req.body.context) { req.body.context = {}; } if (req.body.context.room) { next(); } else { this.app.orm.Room.find({ where: { id: results[0].roomId } }).then(room => { req.body.context.room = room ? room.toJSON() : undefined; next(); }); } } }).catch(err => nextPolicy()); }; if (header) { checkHeaderKnownDevice(); } else if (req.connection.remoteAddress === '127.0.0.1' || req.connection.remoteAddress === '::ffff:127.0.0.1' || req.connection.remoteAddress === '::1') { next(); } else { nextPolicy(); } } } exports.AuthTokenPolicy = AuthTokenPolicy; //# sourceMappingURL=AuthTokenPolicy.js.map