Created branch "cursed"

Modified pairing to support new registrations
pull/4/head
AdamSBlack 2021-09-30 20:18:37 +01:00
parent 5ca26f7b19
commit 6521cda85a
2 changed files with 16 additions and 5 deletions

View File

@ -6,7 +6,7 @@ module.exports = (_models, _controllers, _logger) => {
return {
useradmin: require('./useradmin')(_models, _controllers, _logger),
api: require('./api')(_models, _controllers, _logger),
useradminapi: require('./userAdminApi')(_models, _controllers, _logger),
adminApi: require('./administration/adminApi')(_models, _controllers, _logger)
//useradminapi: require('./userAdminApi')(_models, _controllers, _logger)
//adminApi: require('./administration/adminApi')(_models, _controllers, _logger)
}
}

View File

@ -256,13 +256,24 @@ router.get('/useradmin/unpair_device/:dongleId', runAsyncWrapper(async (req, res
return;
}
var qrCodeParts = req.body.qr_string.split("--"); // imei, serial, jwtToken
// Legacy registrations encode QR data as imei - serial - pairtoken, => 0.8.3 uses only a pairtoken
const qrCode = req.body.qr_string;
var qrCodeParts = qrCode.split("--");
let device;
let pairJWT;
if (qrCodeParts.length > 0) {
device = await models.__db.get('SELECT * FROM devices WHERE imei = ? AND serial = ?', qrCodeParts[0], qrCodeParts[1]);
pairJWT = qrCodeParts[2];
} else {
pairJWT = qrCode;
const data = controllers.authentication.readJWT(qrCode);
device = await models.__db.get('SELECT * FROM devices WHERE dongleId = ?', data.identiy);
}
const device = await models.__db.get('SELECT * FROM devices WHERE imei = ? AND serial = ?', qrCodeParts[0], qrCodeParts[1]);
if (device == null) {
res.redirect('/useradmin/overview?linkstatus=' + encodeURIComponent('Device not registered on Server'));
}
var decoded = controllers.authentication.validateJWT(qrCodeParts[2], device.public_key);
var decoded = controllers.authentication.validateJWT(pairJWT, device.public_key);
if (decoded == null || decoded.pair == undefined) {
res.redirect('/useradmin/overview?linkstatus=' + encodeURIComponent('Device QR Token is invalid or has expired'));
}