diff --git a/routes/index.js b/routes/index.js index de46c35..fcb16fa 100644 --- a/routes/index.js +++ b/routes/index.js @@ -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) } } \ No newline at end of file diff --git a/routes/useradmin.js b/routes/useradmin.js index 3054eb0..54dbd0a 100644 --- a/routes/useradmin.js +++ b/routes/useradmin.js @@ -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')); }