Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 9 additions & 4 deletions plugins/two-factor-auth/frontend/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@ const { generateQRCode } = require('../lib.js');

// member is found
countlyDb.collection('members').findOne({_id: passwordReset.user_id}, {}, function(memberErr, member) {
if (member && member.two_factor_auth && member.two_factor_auth.enabled && member.two_factor_auth.secret_token) {
// Only enforce 2FA during reset while it is globally enabled (SER-2911)
if (plugins.getConfig("two-factor-auth").globally_enabled && member && member.two_factor_auth && member.two_factor_auth.enabled && member.two_factor_auth.secret_token) {
if (!req.query.auth_code) {
// user has not passed the 2fa
res.render("../../../plugins/two-factor-auth/frontend/public/templates/enter2fa_reset", {
Expand Down Expand Up @@ -91,7 +92,8 @@ const { generateQRCode } = require('../lib.js');
}

countlyDb.collection('members').findOne({_id: passwordReset.user_id}, {}, function(memberErr, member) {
if (member && member.two_factor_auth && member.two_factor_auth.enabled && member.two_factor_auth.secret_token) {
// Only enforce 2FA during reset while it is globally enabled (SER-2911)
if (plugins.getConfig("two-factor-auth").globally_enabled && member && member.two_factor_auth && member.two_factor_auth.enabled && member.two_factor_auth.secret_token) {
if (passwordReset.two_factor_auth_passed) {
next();
}
Expand All @@ -113,8 +115,11 @@ const { generateQRCode } = require('../lib.js');
// modify login flow
app.post(countlyConfig.path + '/login', function(req, res, next) {
members.verifyCredentials(req.body.username, req.body.password, async function(member) {
// if member exists and 2fa is enabled globally or for the user
if (member && (member.two_factor_auth && member.two_factor_auth.enabled || plugins.getConfig("two-factor-auth").globally_enabled)) {
// 2FA is governed solely by the global setting. When it is
// disabled no user is prompted for 2FA, even if their member
// record still carries two_factor_auth.enabled from a time when
// 2FA was globally enabled (SER-2911).
if (member && plugins.getConfig("two-factor-auth").globally_enabled) {
// if 2fa is not set up for the user
if ((member.two_factor_auth === undefined || member.two_factor_auth.secret_token === undefined) &&
(req.body.auth_code === undefined || req.body.secret_token === undefined)) {
Expand Down
Loading