public
nobgit
read
NobMail
Based on mailcow: dockerized
Languages
Repository composition by tracked source files.
PHP
49%
JavaScript
35%
HTML
9%
CSS
4%
Shell
2%
Python
1%
Lua
0%
Perl
0%
Ruby
0%
SCSS
0%
Create file
Wiki Documentation
Clone
https://nobgit.com/orgs/nobgit/nobmail.git
ssh://[email protected]:2222/orgs/nobgit/nobmail.git
Commit
autoselect authenticator if only one exists
1ca566f6
data/web/css/build/008-mailcow.css | 1 +
data/web/templates/base.twig | 51 ++++++++++++++++++++++++++++++++++++--
2 files changed, 50 insertions(+), 2 deletions(-)
Diff
diff --git a/data/web/css/build/008-mailcow.css b/data/web/css/build/008-mailcow.css
index f557084f..b118ca01 100644
--- a/data/web/css/build/008-mailcow.css
+++ b/data/web/css/build/008-mailcow.css
@@ -269,6 +269,7 @@ code {
padding: 10px;
background: #fbfbfb;
border: 1px solid #ededed;
+ min-height: 110px;
}
.tag-box {
diff --git a/data/web/templates/base.twig b/data/web/templates/base.twig
index 37c27e21..482b4e24 100644
--- a/data/web/templates/base.twig
+++ b/data/web/templates/base.twig
@@ -182,13 +182,21 @@ function recursiveBase64StrToArrayBuffer(obj) {
keyboard: false
});
+
// validate Yubi OTP tfa
$("#pending_tfa_tab_yubi_otp").click(function(){
$(".totp-authenticator-selection").removeClass("active");
$(".webauthn-authenticator-selection").removeClass("active");
-
$("#collapseTotpTFA").collapse('hide');
$("#collapseWebAuthnTFA").collapse('hide');
+
+ // select default if only one authenticator exists
+ if ($('.yubi-authenticator-selection').length == 1){
+ $('.yubi-authenticator-selection').addClass("active");
+ var id = $('.yubi-authenticator-selection').children('input').first().val();
+ $("#yubi_selected_id").val(id);
+ $("#collapseYubiTFA").collapse('show');
+ }
});
$(".yubi-authenticator-selection").click(function(){
$(".yubi-authenticator-selection").removeClass("active");
@@ -198,14 +206,37 @@ function recursiveBase64StrToArrayBuffer(obj) {
$("#yubi_selected_id").val(id);
$("#collapseYubiTFA").collapse('show');
+ $("#collapseYubiTFA").children('input[name="token"]').focus();
+ });
+ if ($('.yubi-authenticator-selection').length == 1 &&
+ $('.webauthn-authenticator-selection').length == 0){
+
+ // select default if only one authenticator exists
+ $('.yubi-authenticator-selection').addClass("active");
+
+ var id = $('.yubi-authenticator-selection').children('input').first().val();
+ $("#yubi_selected_id").val(id);
+
+ $("#collapseYubiTFA").collapse('show');
+ }
+ $('#collapseYubiTFA').on('shown.bs.collapse', function() {
+ // autofocus
+ setTimeout(function() { $("#collapseYubiTFA").find('input[name="token"]').focus(); }, 200);
});
// validate Time based OTP tfa
$("#pending_tfa_tab_totp").click(function(){
$(".yubi-authenticator-selection").removeClass("active");
$(".webauthn-authenticator-selection").removeClass("active");
-
$("#collapseYubiTFA").collapse('hide');
$("#collapseWebAuthnTFA").collapse('hide');
+
+ // select default if only one authenticator exists
+ if ($('.totp-authenticator-selection').length == 1){
+ $('.totp-authenticator-selection').addClass("active");
+ var id = $('.totp-authenticator-selection').children('input').first().val();
+ $("#totp_selected_id").val(id);
+ $("#collapseTotpTFA").collapse('show');
+ }
});
$(".totp-authenticator-selection").click(function(){
$(".totp-authenticator-selection").removeClass("active");
@@ -216,6 +247,22 @@ function recursiveBase64StrToArrayBuffer(obj) {
$("#collapseTotpTFA").collapse('show');
});
+ if ($('.totp-authenticator-selection').length == 1 &&
+ $('.yubi-authenticator-selection').length == 0 &&
+ $('.webauthn-authenticator-selection').length == 0){
+
+ // select default if only one authenticator exists
+ $('.totp-authenticator-selection').addClass("active");
+
+ var id = $('.totp-authenticator-selection').children('input').first().val();
+ $("#totp_selected_id").val(id);
+
+ $("#collapseTotpTFA").collapse('show');
+ }
+ $('#collapseTotpTFA').on('shown.bs.collapse', function() {
+ // autofocus
+ setTimeout(function() { $("#collapseTotpTFA").find('input[name="token"]').focus(); }, 200);
+ });
// validate WebAuthn tfa
$("#pending_tfa_tab_webauthn").click(function(){
$(".totp-authenticator-selection").removeClass("active");