diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Display.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Display.pm
index 9a4b3cd72..6760fc3cd 100644
--- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Display.pm
+++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Display.pm
@@ -396,6 +396,7 @@ sub display {
? ( CUSTOM_SCRIPT => $req->data->{customScript} )
: ()
),
+ ENABLE_PASSWORD_DISPLAY => $self->conf->{portalEnablePasswordDisplay},
);
# Display captcha if it's enabled
diff --git a/lemonldap-ng-portal/site/coffee/portal.coffee b/lemonldap-ng-portal/site/coffee/portal.coffee
index af6f2c870..32bbbec9c 100644
--- a/lemonldap-ng-portal/site/coffee/portal.coffee
+++ b/lemonldap-ng-portal/site/coffee/portal.coffee
@@ -515,6 +515,14 @@ $(window).on 'load', () ->
if window.datas.ppolicy? and $('#newpassword').length
$('#reset').change togglecheckpassword
+ if datas['enablePasswordDisplay']
+ $(".toggle-password").mousedown (e) ->
+ $(this).toggleClass("fa-eye fa-eye-slash");
+ $("input[name=password]").attr("type", "text");
+ $(".toggle-password").mouseup (e) ->
+ $(this).toggleClass("fa-eye fa-eye-slash");
+ $("input[name=password]").attr("type", "password");
+
# Ping if asked
if datas['pingInterval'] and datas['pingInterval'] > 0
window.setTimeout ping, datas['pingInterval']
@@ -577,4 +585,4 @@ $(window).on 'load', () ->
console.log 'Error', err if err
res = JSON.parse j.responseText if j
if res and res.error
- console.log 'Returned error', res
\ No newline at end of file
+ console.log 'Returned error', res
diff --git a/lemonldap-ng-portal/site/htdocs/static/common/js/portal.js b/lemonldap-ng-portal/site/htdocs/static/common/js/portal.js
index b32b11d3c..d4237a225 100644
--- a/lemonldap-ng-portal/site/htdocs/static/common/js/portal.js
+++ b/lemonldap-ng-portal/site/htdocs/static/common/js/portal.js
@@ -561,6 +561,16 @@ LemonLDAP::NG Portal jQuery scripts
if ((window.datas.ppolicy != null) && $('#newpassword').length) {
$('#reset').change(togglecheckpassword);
}
+ if (datas['enablePasswordDisplay']) {
+ $(".toggle-password").mousedown(function(e) {
+ $(this).toggleClass("fa-eye fa-eye-slash");
+ return $("input[name=password]").attr("type", "text");
+ });
+ $(".toggle-password").mouseup(function(e) {
+ $(this).toggleClass("fa-eye fa-eye-slash");
+ return $("input[name=password]").attr("type", "password");
+ });
+ }
if (datas['pingInterval'] && datas['pingInterval'] > 0) {
window.setTimeout(ping, datas['pingInterval']);
}
diff --git a/lemonldap-ng-portal/site/templates/bootstrap/standardform.tpl b/lemonldap-ng-portal/site/templates/bootstrap/standardform.tpl
index 887bb6338..904007808 100644
--- a/lemonldap-ng-portal/site/templates/bootstrap/standardform.tpl
+++ b/lemonldap-ng-portal/site/templates/bootstrap/standardform.tpl
@@ -20,6 +20,11 @@
+
+
+
+
+
diff --git a/lemonldap-ng-portal/site/templates/common/script.tpl b/lemonldap-ng-portal/site/templates/common/script.tpl
index 9b6dfd9c6..19f678a24 100644
--- a/lemonldap-ng-portal/site/templates/common/script.tpl
+++ b/lemonldap-ng-portal/site/templates/common/script.tpl
@@ -26,7 +26,7 @@
"scriptname":"",
"activeTimer":,
"pingInterval":,
- "trOver":,
+ "trOver":,
"ppolicy": {
"display": "",
"minsize": "",
@@ -36,7 +36,8 @@
"nopolicy": "",
"allowedspechar": "",
"minspechar": ""
- }
+ },
+ "enablePasswordDisplay":
}