diff --git a/agents/MeshCentralRouter.exe b/agents/MeshCentralRouter.exe
index cf902ccf..34d4e128 100644
Binary files a/agents/MeshCentralRouter.exe and b/agents/MeshCentralRouter.exe differ
diff --git a/views/default-mobile.handlebars b/views/default-mobile.handlebars
index cc880aae..c7d21c2a 100644
--- a/views/default-mobile.handlebars
+++ b/views/default-mobile.handlebars
@@ -259,10 +259,10 @@
Account Security
Account Actions
@@ -720,6 +720,11 @@
QV('verifyEmailId', (userinfo.emailVerified !== true) && (userinfo.email != null) && (serverinfo.emailcheck == true));
QV('manageAuthApp', features & 4096);
QV('manageOtp', ((features & 4096) != 0) && ((userinfo.otpsecret == 1) || (userinfo.otphkeys > 0)));
+ QV('authPhoneNumberCheck', (userinfo.phone != null));
+ QV('authEmailSetupCheck', (userinfo.otpekey == 1) && (userinfo.email != null) && (userinfo.emailVerified == true));
+ QV('authAppSetupCheck', userinfo.otpsecret == 1);
+ //QV('authKeySetupCheck', userinfo.otphkeys > 0);
+ QV('authCodesSetupCheck', userinfo.otpkeys > 0);
// On the mobile app, don't allow group creation (for now).
QV('p3createMeshLink1', false);
@@ -1309,7 +1314,7 @@
function account_manageOtp(action) {
if ((xxdialogMode == 2) && (xxdialogTag == 'otpauth-manage')) { dialogclose(0); }
- if (xxdialogMode || (userinfo.otpsecret != 1) || ((features & 4096) == 0)) return;
+ if (xxdialogMode || ((features & 4096) == 0) || ((userinfo.otpsecret != 1) && (userinfo.otphkeys < 1))) return;
meshserver.send({ action: 'otpauth-getpasswords', subaction: action });
}
diff --git a/webserver.js b/webserver.js
index 061e46e5..c35def99 100644
--- a/webserver.js
+++ b/webserver.js
@@ -4143,7 +4143,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
var email2fa = (((typeof domain.passwordrequirements != 'object') || (domain.passwordrequirements.email2factor != false)) && (parent.mailserver != null) && (user.otpekey != null));
var sms2fa = (((typeof domain.passwordrequirements != 'object') || (domain.passwordrequirements.sms2factor != false)) && (parent.smsserver != null) && (user.phone != null));
if (s.length != 3) {
- try { ws.send(JSON.stringify({ action: 'close', cause: 'noauth', msg: 'tokenrequired', email2fa: email2fa })); ws.close(); } catch (e) { }
+ try { ws.send(JSON.stringify({ action: 'close', cause: 'noauth', msg: 'tokenrequired', email2fa: email2fa, sms2fa: sms2fa })); ws.close(); } catch (e) { }
} else {
checkUserOneTimePassword(req, domain, user, s[2], null, function (result) {
if (result == false) {