Fix for login token with SSO, #3293

Ylian Saint-Hilaire committed Nov 25, 2021 at 10:09 UTC 725f9923e7d3328a8435443b1a9ede0cad13fbeb
2 files changed +23 -8
package.json
+15 -2
@@ -36,6 +36,8 @@
36 "sample-config-advanced.json"
37 ],
38 "dependencies": {
39 + "@yetzt/nedb": "^1.8.0",
40 + "archiver": "^4.0.2",
41 "body-parser": "^1.19.0",
42 "cbor": "~5.2.0",
43 "compression": "^1.7.4",
@@ -43,13 +45,24 @@
45 "express": "^4.17.0",
46 "express-handlebars": "^3.1.0",
47 "express-ws": "^4.0.0",
48 + "image-size": "^1.0.0",
49 "ipcheck": "^0.1.0",
50 + "ldapauth-fork": "^5.0.1",
51 + "loadavg-windows": "^1.1.1",
52 "minimist": "^1.2.5",
53 "multiparty": "^4.2.1",
49 - "@yetzt/nedb": "^1.8.0",
54 "node-forge": "^0.10.0",
55 + "node-rdpjs-2": "^0.3.5",
56 + "node-windows": "^0.1.4",
57 + "nodemailer": "^6.7.1",
58 + "otplib": "^10.2.3",
59 + "pg": "^8.7.1",
60 + "pgtools": "^0.3.2",
61 + "ssh2": "^1.5.0",
62 + "web-push": "^3.4.5",
63 "ws": "^5.2.3",
52 - "yauzl": "^2.10.0"
64 + "yauzl": "^2.10.0",
65 + "yubikeyotp": "^0.2.0"
66 },
67 "engines": {
68 "node": ">=10.0.0"
webserver.js
+8 -6
@@ -6407,7 +6407,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
6407 } else {
6408 // We are authenticated with 2nd factor.
6409 // Check email verification
6410 - if (emailcheck && (user.email != null) && (user.emailVerified !== true)) {
6410 + if (emailcheck && (user.email != null) && (!(user._id.split('/')[2].startsWith('~'))) && (user.emailVerified !== true)) {
6411 parent.debug('web', 'Invalid login, asking for email validation');
6412 try { ws.send(JSON.stringify({ action: 'close', cause: 'emailvalidation', msg: 'emailvalidationrequired', email2fa: email2fa, sms2fa: sms2fa, email2fasent: true })); ws.close(); } catch (e) { }
6413 } else {
@@ -6421,7 +6421,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
6421 }
6422 } else {
6423 // Check email verification
6424 - if (emailcheck && (user.email != null) && (user.emailVerified !== true)) {
6424 + if (emailcheck && (user.email != null) && (!(user._id.split('/')[2].startsWith('~'))) && (user.emailVerified !== true)) {
6425 parent.debug('web', 'Invalid login, asking for email validation');
6426 var email2fa = (((typeof domain.passwordrequirements != 'object') || (domain.passwordrequirements.email2factor != false)) && (domain.mailserver != null) && (user.otpekey != null));
6427 var sms2fa = (((typeof domain.passwordrequirements != 'object') || (domain.passwordrequirements.sms2factor != false)) && (parent.smsserver != null) && (user.phone != null));
@@ -6554,7 +6554,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
6554 } else {
6555 // We are authenticated with 2nd factor.
6556 // Check email verification
6557 - if (emailcheck && (user.email != null) && (user.emailVerified !== true)) {
6557 + if (emailcheck && (user.email != null) && (!(user._id.split('/')[2].startsWith('~'))) && (user.emailVerified !== true)) {
6558 parent.debug('web', 'Invalid login, asking for email validation');
6559 try { ws.send(JSON.stringify({ action: 'close', cause: 'emailvalidation', msg: 'emailvalidationrequired', email2fa: email2fa, sms2fa: sms2fa, email2fasent: true })); ws.close(); } catch (e) { }
6560 } else {
@@ -6565,7 +6565,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
6565 }
6566 } else {
6567 // Check email verification
6568 - if (emailcheck && (user.email != null) && (user.emailVerified !== true)) {
6568 + if (emailcheck && (user.email != null) && (!(user._id.split('/')[2].startsWith('~'))) && (user.emailVerified !== true)) {
6569 parent.debug('web', 'Invalid login, asking for email validation');
6570 var email2fa = (((typeof domain.passwordrequirements != 'object') || (domain.passwordrequirements.email2factor != false)) && (domain.mailserver != null) && (user.otpekey != null));
6571 var sms2fa = (((typeof domain.passwordrequirements != 'object') || (domain.passwordrequirements.sms2factor != false)) && (parent.smsserver != null) && (user.phone != null));
@@ -6668,7 +6668,8 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
6668 } else {
6669 // We are authenticated with 2nd factor.
6670 // Check email verification
6671 - if (emailcheck && (user.email != null) && (user.emailVerified !== true)) {
6671 + if (emailcheck && (user.email != null) && (!(user._id.split('/')[2].startsWith('~'))) && (user.emailVerified !== true)) {
6672 + parent.debug('web', 'Invalid login, asking for email validation');
6673 try { ws.send(JSON.stringify({ action: 'close', cause: 'emailvalidation', msg: 'emailvalidationrequired', email2fa: email2fa, email2fasent: true, twoFactorCookieDays: twoFactorCookieDays })); ws.close(); } catch (e) { }
6674 } else {
6675 func(ws, req, domain, user);
@@ -6679,7 +6680,8 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
6680 } else {
6681 // We are authenticated
6682 // Check email verification
6682 - if (emailcheck && (user.email != null) && (user.emailVerified !== true)) {
6683 + if (emailcheck && (user.email != null) && (!(user._id.split('/')[2].startsWith('~'))) && (user.emailVerified !== true)) {
6684 + parent.debug('web', 'Invalid login, asking for email validation');
6685 try { ws.send(JSON.stringify({ action: 'close', cause: 'emailvalidation', msg: 'emailvalidationrequired', email2fa: email2fa, email2fasent: true })); ws.close(); } catch (e) { }
6686 } else {
6687 func(ws, req, domain, user);