lisa-box
Version:
Home automation system L.I.S.A.
55 lines • 2.17 kB
JavaScript
;
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