Skip to content

Commit

Permalink
feat: guard password fields in login/register against accidental caps…
Browse files Browse the repository at this point in the history
… lock
  • Loading branch information
julianlam committed Jan 28, 2021
1 parent e8429f5 commit 4bb3b03
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 6 deletions.
4 changes: 2 additions & 2 deletions install/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -101,9 +101,9 @@
"nodebb-plugin-spam-be-gone": "0.7.7",
"nodebb-rewards-essentials": "0.1.4",
"nodebb-theme-lavender": "5.0.17",
"nodebb-theme-persona": "10.4.1",
"nodebb-theme-persona": "10.4.2",
"nodebb-theme-slick": "1.3.8",
"nodebb-theme-vanilla": "11.3.10",
"nodebb-theme-vanilla": "11.3.11",
"nodebb-widget-essentials": "5.0.2",
"nodemailer": "^6.4.6",
"nprogress": "0.2.0",
Expand Down
3 changes: 2 additions & 1 deletion public/language/en-GB/login.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,6 @@
"failed_login_attempt": "Login Unsuccessful",
"login_successful": "You have successfully logged in!",
"dont_have_account": "Don't have an account?",
"logged-out-due-to-inactivity": "You have been logged out of the Admin Control Panel due to inactivity"
"logged-out-due-to-inactivity": "You have been logged out of the Admin Control Panel due to inactivity",
"caps-lock-enabled": "Caps Lock is enabled"
}
34 changes: 33 additions & 1 deletion public/src/client/login.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@


define('forum/login', ['jquery-form'], function () {
var Login = {};
var Login = {
_capsState: false,
};

Login.init = function () {
var errorEl = $('#login-error-notify');
Expand Down Expand Up @@ -59,6 +61,9 @@ define('forum/login', ['jquery-form'], function () {
}
});

// Guard against caps lock
Login.capsLockCheck(document.querySelector('#password'), document.querySelector('#caps-lock-warning'));

$('#login-error-notify button').on('click', function (e) {
e.preventDefault();
errorEl.hide();
Expand All @@ -73,5 +78,32 @@ define('forum/login', ['jquery-form'], function () {
$('#content #noscript').val('false');
};

Login.capsLockCheck = (inputEl, warningEl) => {
const toggle = (state) => {
warningEl.classList[state ? 'remove' : 'add']('hidden');
warningEl.parentNode.classList[state ? 'add' : 'remove']('has-warning');
};

inputEl.addEventListener('keyup', function (e) {
if (Login._capsState && e.key === 'CapsLock') {
toggle(false);
Login._capsState = !Login._capsState;
return;
}

if (e.getModifierState('CapsLock')) {
toggle(true);
} else {
toggle(false);
}

Login._capsState = e.getModifierState('CapsLock');
});

if (Login._capsState) {
toggle(true);
}
};

return Login;
});
7 changes: 5 additions & 2 deletions public/src/client/register.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@


define('forum/register', [
'translator', 'zxcvbn', 'slugify', 'api', 'jquery-form',
], function (translator, zxcvbn, slugify, api) {
'translator', 'zxcvbn', 'slugify', 'api', 'forum/login', 'jquery-form',
], function (translator, zxcvbn, slugify, api, Login) {
var Register = {};
var validationError = false;
var successIcon = '';
Expand Down Expand Up @@ -65,6 +65,9 @@ define('forum/register', [
});
}

// Guard against caps lock
Login.capsLockCheck(document.querySelector('#password'), document.querySelector('#caps-lock-warning'));

register.on('click', function (e) {
var registerBtn = $(this);
var errorEl = $('#register-error-notify');
Expand Down

0 comments on commit 4bb3b03

Please sign in to comment.