Update messages

This commit is contained in:
Julian Gassner 2025-02-05 16:48:57 +00:00
parent 5d2a76adfe
commit 34194e65d2
5 changed files with 26 additions and 11 deletions

View File

@ -30,10 +30,11 @@ module.exports = {
.where('user_id', userId)
.first()
.then((auth) => {
console.log(auth);
if (!auth) {
throw new error.AuthError('User not found.');
}
return auth.mfa_enabled === 1;
return auth.mfa_enabled === true;
});
},
createMfaSecretForUser: (userId) => {
@ -68,7 +69,7 @@ module.exports = {
return authModel
.query()
.where('user_id', userId)
.update({ mfa_enabled: 1 })
.update({ mfa_enabled: true })
.then(() => true);
});
},

View File

@ -27,11 +27,12 @@
</div>
<div class="col-sm-12 col-md-12">
<button type="button" class="btn btn-info add-mfa">Add MFA</button>
<p class="qr-instructions" style="display: none;">Scan this QR code in your authenticator app to set up MFA and then enter the current MFA code in the input field.</p>
<label class="form-label mfa-label" style="display: none;"><%- i18n('mfa', 'mfa') %></label>
<button type="button" class="btn btn-info add-mfa"><%- i18n('mfa', 'add-mfa') %></button>
<p class="qr-instructions" style="display: none;"><%- i18n('mfa', 'mfa-setup-instruction') %></p>
<div class="mfa-validation-container" style="display: none;">
<label class="form-label"><%- i18n('str', 'mfa') %> <span class="form-required">*</span></label>
<input name="mfa_validation" type="text" class="form-control" placeholder="000000" value="" required>
<label class="form-label"><%- i18n('mfa', 'mfa-token') %> <span class="form-required">*</span></label>
<input name="mfa_validation" type="text" class="form-control" placeholder="000000" value="">
</div>
</div>

View File

@ -16,6 +16,7 @@ module.exports = Mn.View.extend({
save: 'button.save',
error: '.secret-error',
addMfa: '.add-mfa',
mfaLabel: '.mfa-label', // added binding
mfaValidation: '.mfa-validation-container', // added binding
qrInstructions: '.qr-instructions' // added binding for instructions
},
@ -99,6 +100,8 @@ module.exports = Mn.View.extend({
view.ui.addMfa.replaceWith(`<img class="qr-code" src="${response.qrCode}" alt="QR Code">`);
view.ui.qrInstructions.show();
view.ui.mfaValidation.show();
// Add required attribute once MFA is activated
view.ui.mfaValidation.find('input[name="mfa_validation"]').attr('required', true);
})
.catch(err => {
view.ui.error.text(err.message).show();
@ -140,12 +143,17 @@ module.exports = Mn.View.extend({
.then(response => {
if (response.active) {
view.ui.addMfa.hide();
view.ui.mfaLabel.hide();
view.ui.qrInstructions.hide();
view.ui.mfaValidation.hide();
// Remove required attribute if MFA is active & field is hidden
view.ui.mfaValidation.find('input[name="mfa_validation"]').removeAttr('required');
} else {
view.ui.addMfa.show();
view.ui.mfaLabel.show();
view.ui.qrInstructions.hide();
view.ui.mfaValidation.hide();
view.ui.mfaValidation.find('input[name="mfa_validation"]').removeAttr('required');
}
})
.catch(err => {

View File

@ -2,7 +2,6 @@
"en": {
"str": {
"email-address": "Email address",
"mfa": "Multi factor authentication token",
"username": "Username",
"password": "Password",
"sign-in": "Sign in",
@ -38,9 +37,15 @@
"all": "All",
"any": "Any"
},
"mfa": {
"mfa": "Multi Factor Authentication",
"add-mfa": "Generate secret",
"mfa-setup-instruction": "Scan this QR code in your authenticator app to set up MFA and then enter the current MFA code in the input field.",
"mfa-token": "Multi factor authentication token"
},
"login": {
"title": "Login to your account",
"mfa_required_text": "Please enter your MFA token to continue"
"mfa-required-text": "Please enter your MFA token to continue"
},
"main": {
"app": "Nginx Proxy Manager",

View File

@ -26,9 +26,9 @@
<div class="invalid-feedback secret-error"></div>
</div>
<div class="form-group mfa-group" style="display: none;">
<p class="mfa-info"><%- i18n('login', 'mfa_required_text') %>:</p>
<label class="form-label"><%- i18n('str', 'mfa') %></label>
<input name="mfa_token" type="text" class="form-control" placeholder="<%- i18n('str', 'mfa') %>">
<p class="mfa-info"><%- i18n('login', 'mfa-required-text') %>:</p>
<label class="form-label"><%- i18n('mfa', 'mfa-token') %></label>
<input name="mfa_token" type="text" class="form-control" placeholder="<%- i18n('mfa', 'mfa-token') %>">
<div class="invalid-feedback mfa-error"></div>
</div>
<div class="form-footer">