From 229a3f0989ef0371e1aa89ff06828dd2cd36e812 Mon Sep 17 00:00:00 2001
From: Pascal Dreissen <pascal@dreissen.nl>
Date: Mon, 18 Jul 2016 18:24:07 -0400
Subject: [PATCH] Prevent password managers to overwrite passwords in reseller / client and mailbox edit screen (fixes #4030)

---
 interface/web/mail/lib/lang/pt_mail_user.lng             |    1 +
 interface/web/mail/lib/lang/ru_mail_user.lng             |    1 +
 interface/web/mail/lib/lang/ro_mail_user.lng             |    1 +
 interface/web/mail/lib/lang/hu_mail_user.lng             |    1 +
 interface/web/mail/lib/lang/it_mail_user.lng             |    1 +
 interface/web/mail/lib/lang/tr_mail_user.lng             |    1 +
 interface/web/client/lib/lang/en_reseller.lng            |    1 +
 interface/web/client/lib/lang/nl_reseller.lng            |    1 +
 interface/web/client/templates/client_edit_address.htm   |    4 ++--
 interface/web/client/lib/lang/en_client.lng              |    1 +
 interface/web/mail/lib/lang/sk_mail_user.lng             |    1 +
 interface/web/client/lib/lang/nl_client.lng              |    1 +
 interface/web/mail/lib/lang/fr_mail_user.lng             |    1 +
 interface/web/mail/lib/lang/en_mail_user.lng             |    1 +
 interface/web/mail/lib/lang/pl_mail_user.lng             |    1 +
 interface/web/mail/lib/lang/se_mail_user.lng             |    1 +
 interface/web/mail/lib/lang/ja_mail_user.lng             |    1 +
 interface/web/mail/lib/lang/nl_mail_user.lng             |    5 +++--
 interface/web/mail/templates/mail_user_mailbox_edit.htm  |    5 +++--
 interface/web/mail/lib/lang/hr_mail_user.lng             |    1 +
 interface/web/client/templates/reseller_edit_address.htm |    4 ++--
 interface/web/mail/lib/lang/id_mail_user.lng             |    1 +
 22 files changed, 28 insertions(+), 8 deletions(-)

diff --git a/interface/web/client/lib/lang/en_client.lng b/interface/web/client/lib/lang/en_client.lng
index 05cf0f4..94a57cf 100644
--- a/interface/web/client/lib/lang/en_client.lng
+++ b/interface/web/client/lib/lang/en_client.lng
@@ -19,6 +19,7 @@
 $wb["contact_name_txt"] = 'Contact name';
 $wb["username_txt"] = 'Username';
 $wb["password_txt"] = 'Password';
+$wb['password_click_to_set_txt'] = 'Click to set';
 $wb["password_strength_txt"] = 'Password strength';
 $wb["language_txt"] = 'Language';
 $wb["usertheme_txt"] = 'Theme';
diff --git a/interface/web/client/lib/lang/en_reseller.lng b/interface/web/client/lib/lang/en_reseller.lng
index b40219f..a9d8ad0 100644
--- a/interface/web/client/lib/lang/en_reseller.lng
+++ b/interface/web/client/lib/lang/en_reseller.lng
@@ -19,6 +19,7 @@
 $wb["contact_name_txt"] = 'Contact name';
 $wb["username_txt"] = 'Username';
 $wb["password_txt"] = 'Password';
+$wb['password_click_to_set_txt'] = 'Click to set';
 $wb["password_strength_txt"] = 'Password strength';
 $wb["language_txt"] = 'Language';
 $wb["usertheme_txt"] = 'Theme';
diff --git a/interface/web/client/lib/lang/nl_client.lng b/interface/web/client/lib/lang/nl_client.lng
index 7206526..b1bec19 100644
--- a/interface/web/client/lib/lang/nl_client.lng
+++ b/interface/web/client/lib/lang/nl_client.lng
@@ -18,6 +18,7 @@
 $wb['contact_name_txt'] = 'Contactpersoon';
 $wb['username_txt'] = 'Gebruikersnaam';
 $wb['password_txt'] = 'Wachtwoord';
+$wb['password_click_to_set_txt'] = 'Klik om in te stellen';
 $wb['password_strength_txt'] = 'Wachtwoord sterkte';
 $wb['language_txt'] = 'Taal';
 $wb['usertheme_txt'] = 'Thema';
diff --git a/interface/web/client/lib/lang/nl_reseller.lng b/interface/web/client/lib/lang/nl_reseller.lng
index 63d76bf..c53d3ec 100644
--- a/interface/web/client/lib/lang/nl_reseller.lng
+++ b/interface/web/client/lib/lang/nl_reseller.lng
@@ -17,6 +17,7 @@
 $wb['contact_name_txt'] = 'Contactpersoon';
 $wb['username_txt'] = 'Gebruikersnaam';
 $wb['password_txt'] = 'Wachtwoord';
+$wb['password_click_to_set_txt'] = 'Klik om in te stellen';
 $wb['password_strength_txt'] = 'Wachtwoord sterkte';
 $wb['language_txt'] = 'Taal';
 $wb['usertheme_txt'] = 'Thema';
diff --git a/interface/web/client/templates/client_edit_address.htm b/interface/web/client/templates/client_edit_address.htm
index e119e59..b033c63 100644
--- a/interface/web/client/templates/client_edit_address.htm
+++ b/interface/web/client/templates/client_edit_address.htm
@@ -31,7 +31,7 @@
                 <label for="password" class="col-sm-3 control-label">{tmpl_var name='password_txt'}</label>
                 <div class="col-sm-9">
 				<div class="input-group">
-					<input type="password" name="password" id="password" value="{tmpl_var name='password'}" class="form-control" autocomplete="off" onkeyup="pass_check(this.value);checkPassMatch('password','repeat_password');" />
+					<input type="password" name="password" id="password" value="{tmpl_var name='password'}" data-toggle="tooltip" data-placement="left" title="{tmpl_var name='password_click_to_set_txt'}" readonly onfocus="this.removeAttribute('readonly');" class="form-control" autocomplete="off" onkeyup="pass_check(this.value);checkPassMatch('password','repeat_password');" />
 					<span class="input-group-btn">
 						<button class="btn btn-default" type="button" onclick="generatePassword('password','repeat_password');">{tmpl_var name='generate_password_txt'}</button>
 					</span>
@@ -47,7 +47,7 @@
             </div>
             <div class="form-group">
                 <label for="repeat_password" class="col-sm-3 control-label">{tmpl_var name='repeat_password_txt'}</label>
-                <div class="col-sm-9"><input type="password" name="repeat_password" id="repeat_password" value="" class="form-control" autocomplete="off" onkeyup="checkPassMatch('password','repeat_password');" /></div></div>
+                <div class="col-sm-9"><input type="password" name="repeat_password" id="repeat_password" value="" data-toggle="tooltip" data-placement="left" title="{tmpl_var name='password_click_to_set_txt'}" readonly onfocus="this.removeAttribute('readonly');" class="form-control" autocomplete="off" onkeyup="checkPassMatch('password','repeat_password');" /></div></div>
             <div class="form-group">
 				<div class="col-sm-offset-3 col-sm-9">
 					<div id="confirmpasswordError" style="display:none;" class="confirmpassworderror">{tmpl_var name='password_mismatch_txt'}</div>
diff --git a/interface/web/client/templates/reseller_edit_address.htm b/interface/web/client/templates/reseller_edit_address.htm
index 7b3adf4..e5b0a55 100644
--- a/interface/web/client/templates/reseller_edit_address.htm
+++ b/interface/web/client/templates/reseller_edit_address.htm
@@ -31,7 +31,7 @@
                 <label for="password" class="col-sm-3 control-label">{tmpl_var name='password_txt'}</label>
                 <div class="col-sm-9">
 				<div class="input-group">
-					<input type="password" name="password" id="password" value="{tmpl_var name='password'}" class="form-control" autocomplete="off" onkeyup="pass_check(this.value);checkPassMatch('password','repeat_password');" />
+					<input type="password" name="password" id="password" value="{tmpl_var name='password'}" data-toggle="tooltip" data-placement="left" title="{tmpl_var name='password_click_to_set_txt'}" readonly onfocus="this.removeAttribute('readonly');" class="form-control" autocomplete="off" onkeyup="pass_check(this.value);checkPassMatch('password','repeat_password');" />
 					<span class="input-group-btn">
 						<button class="btn btn-default" type="button" onclick="generatePassword('password','repeat_password');">{tmpl_var name='generate_password_txt'}</button>
 					</span>
@@ -47,7 +47,7 @@
             </div>
             <div class="form-group">
                 <label for="repeat_password" class="col-sm-3 control-label">{tmpl_var name='repeat_password_txt'}</label>
-                <div class="col-sm-9"><input type="password" name="repeat_password" id="repeat_password" value="" class="form-control" autocomplete="off" onkeyup="checkPassMatch('password','repeat_password');" /></div></div>
+                <div class="col-sm-9"><input type="password" name="repeat_password" id="repeat_password" value="" data-toggle="tooltip" data-placement="left" title="{tmpl_var name='password_click_to_set_txt'}" readonly onfocus="this.removeAttribute('readonly');" class="form-control" autocomplete="off" onkeyup="checkPassMatch('password','repeat_password');" /></div></div>
             <div class="form-group">
 				<div class="col-sm-offset-3 col-sm-9">
 					<div id="confirmpasswordError" style="display:none;" class="confirmpassworderror">{tmpl_var name='password_mismatch_txt'}</div>
diff --git a/interface/web/mail/lib/lang/en_mail_user.lng b/interface/web/mail/lib/lang/en_mail_user.lng
index ba4fdd4..7768662 100644
--- a/interface/web/mail/lib/lang/en_mail_user.lng
+++ b/interface/web/mail/lib/lang/en_mail_user.lng
@@ -21,6 +21,7 @@
 $wb["quota_txt"] = 'Quota (0 for unlimited)';
 $wb["server_id_txt"] = 'Aerver_id';
 $wb["password_txt"] = 'Password';
+$wb['password_click_to_set_txt'] = 'Click to set';
 $wb["maildir_txt"] = 'Maildir';
 $wb["postfix_txt"] = 'Enable receiving';
 $wb['greylisting_txt'] = 'Enable greylisting';
diff --git a/interface/web/mail/lib/lang/fr_mail_user.lng b/interface/web/mail/lib/lang/fr_mail_user.lng
index 775b425..001282c 100644
--- a/interface/web/mail/lib/lang/fr_mail_user.lng
+++ b/interface/web/mail/lib/lang/fr_mail_user.lng
@@ -61,4 +61,5 @@
 $wb['weekly_backup_txt'] = 'Weekly';
 $wb['monthly_backup_txt'] = 'Monthly';
 $wb['sender_cc_note_txt'] = '(Separate multiple email addresses with commas)';
+$wb['password_click_to_set_txt'] = 'Click to set';
 ?>
diff --git a/interface/web/mail/lib/lang/hr_mail_user.lng b/interface/web/mail/lib/lang/hr_mail_user.lng
index b8d541f..50ebef7 100644
--- a/interface/web/mail/lib/lang/hr_mail_user.lng
+++ b/interface/web/mail/lib/lang/hr_mail_user.lng
@@ -17,6 +17,7 @@
 $wb['quota_txt'] = 'Kvota';
 $wb['server_id_txt'] = 'Aerver_id';
 $wb['password_txt'] = 'Šifra';
+$wb['password_click_to_set_txt'] = 'Click to set';
 $wb['maildir_txt'] = 'Maildir';
 $wb['postfix_txt'] = 'Enable Receiving';
 $wb['greylisting_txt'] = 'Enable greylisting';
diff --git a/interface/web/mail/lib/lang/hu_mail_user.lng b/interface/web/mail/lib/lang/hu_mail_user.lng
index 97b0779..a11f7d2 100644
--- a/interface/web/mail/lib/lang/hu_mail_user.lng
+++ b/interface/web/mail/lib/lang/hu_mail_user.lng
@@ -13,6 +13,7 @@
 $wb['quota_txt'] = 'Korlát MB-ban kifejezve';
 $wb['server_id_txt'] = 'szerver_azonosító';
 $wb['password_txt'] = 'Jelszó';
+$wb['password_click_to_set_txt'] = 'Click to set';
 $wb['maildir_txt'] = 'levelezőláda';
 $wb['postfix_txt'] = 'Bejövő engedélyezés';
 $wb['greylisting_txt'] = 'Enable greylisting';
diff --git a/interface/web/mail/lib/lang/id_mail_user.lng b/interface/web/mail/lib/lang/id_mail_user.lng
index 22b3b81..9ae9474 100644
--- a/interface/web/mail/lib/lang/id_mail_user.lng
+++ b/interface/web/mail/lib/lang/id_mail_user.lng
@@ -18,6 +18,7 @@
 $wb['quota_txt'] = 'Kuota';
 $wb['server_id_txt'] = 'id_server';
 $wb['password_txt'] = 'Kata Sandi';
+$wb['password_click_to_set_txt'] = 'Click to set';
 $wb['maildir_txt'] = 'Maildir';
 $wb['postfix_txt'] = 'Dapat Menerima';
 $wb['greylisting_txt'] = 'Enable greylisting';
diff --git a/interface/web/mail/lib/lang/it_mail_user.lng b/interface/web/mail/lib/lang/it_mail_user.lng
index 76f3018..e548a6b 100644
--- a/interface/web/mail/lib/lang/it_mail_user.lng
+++ b/interface/web/mail/lib/lang/it_mail_user.lng
@@ -14,6 +14,7 @@
 $wb['quota_txt'] = 'quota in MB';
 $wb['server_id_txt'] = 'server_id';
 $wb['password_txt'] = 'password';
+$wb['password_click_to_set_txt'] = 'Click to set';
 $wb['maildir_txt'] = 'maildir';
 $wb['postfix_txt'] = 'Abilita ricezione';
 $wb['access_txt'] = 'Abilita indirizzo';
diff --git a/interface/web/mail/lib/lang/ja_mail_user.lng b/interface/web/mail/lib/lang/ja_mail_user.lng
index 7e044b9..6b3d2ea 100644
--- a/interface/web/mail/lib/lang/ja_mail_user.lng
+++ b/interface/web/mail/lib/lang/ja_mail_user.lng
@@ -14,6 +14,7 @@
 $wb['quota_txt'] = 'メールボックスの容量';
 $wb['server_id_txt'] = 'Aerver_id';
 $wb['password_txt'] = 'パスワード';
+$wb['password_click_to_set_txt'] = 'Click to set';
 $wb['maildir_txt'] = 'メールディレクトリ';
 $wb['postfix_txt'] = 'メールを受信する';
 $wb['greylisting_txt'] = 'Enable greylisting';
diff --git a/interface/web/mail/lib/lang/nl_mail_user.lng b/interface/web/mail/lib/lang/nl_mail_user.lng
index f577efd..acc2da9 100644
--- a/interface/web/mail/lib/lang/nl_mail_user.lng
+++ b/interface/web/mail/lib/lang/nl_mail_user.lng
@@ -18,6 +18,7 @@
 $wb['quota_txt'] = 'Quota';
 $wb['server_id_txt'] = 'Server_id';
 $wb['password_txt'] = 'Wachtwoord';
+$wb['password_click_to_set_txt'] = 'Klik om in te stellen';
 $wb['maildir_txt'] = 'Maildir';
 $wb['postfix_txt'] = 'Ontvangen inschakelen';
 $wb['greylisting_txt'] = 'Greylisting inschakelen';
@@ -35,7 +36,7 @@
 $wb['name_optional_txt'] = '(Optioneel)';
 $wb['autoresponder_active'] = 'Inschakelen autoresponder';
 $wb['cc_txt'] = 'Stuur kopie naar';
-$wb['cc_error_isemail'] = 'Het "Stuur kopie naar" veld bevat geen geldig e-mail adres';
+$wb['cc_error_isemail'] = 'Het \"Stuur kopie naar\" veld bevat geen geldig e-mail adres';
 $wb['domain_txt'] = 'Domain';
 $wb['now_txt'] = 'Now';
 $wb['login_error_unique'] = 'Login is already taken.';
@@ -59,6 +60,6 @@
 $wb['disablesmtp_txt'] = 'Uitschakelen SMTP (versturen)';
 $wb['autoresponder_start_date_is_required'] = 'Start date must be set when Autoresponder is enabled.';
 $wb['sender_cc_txt'] = 'Stuur uitgaande kopie aan';
-$wb['sender_cc_error_isemail'] = 'Het "Stuur uitgaande kopie aan" veld bevat geen geldig e-mail adres';
+$wb['sender_cc_error_isemail'] = 'Het \"Stuur uitgaande kopie aan\" veld bevat geen geldig e-mail adres';
 $wb['sender_cc_note_txt'] = '(Meerdere e-mail adressen scheiden met een komma)';
 ?>
diff --git a/interface/web/mail/lib/lang/pl_mail_user.lng b/interface/web/mail/lib/lang/pl_mail_user.lng
index 58e5aba..6997486 100644
--- a/interface/web/mail/lib/lang/pl_mail_user.lng
+++ b/interface/web/mail/lib/lang/pl_mail_user.lng
@@ -14,6 +14,7 @@
 $wb['quota_txt'] = 'Limit';
 $wb['server_id_txt'] = 'Serwer_id';
 $wb['password_txt'] = 'Hasło';
+$wb['password_click_to_set_txt'] = 'Click to set';
 $wb['maildir_txt'] = 'Maildir';
 $wb['postfix_txt'] = 'Zezwól na odbiór poczty';
 $wb['greylisting_txt'] = 'Enable greylisting';
diff --git a/interface/web/mail/lib/lang/pt_mail_user.lng b/interface/web/mail/lib/lang/pt_mail_user.lng
index 4e7934a..f638554 100644
--- a/interface/web/mail/lib/lang/pt_mail_user.lng
+++ b/interface/web/mail/lib/lang/pt_mail_user.lng
@@ -14,6 +14,7 @@
 $wb['quota_txt'] = 'Cota';
 $wb['server_id_txt'] = 'Aerver_id';
 $wb['password_txt'] = 'Senha';
+$wb['password_click_to_set_txt'] = 'Click to set';
 $wb['maildir_txt'] = 'Maildir';
 $wb['postfix_txt'] = 'Permitir Recepção';
 $wb['greylisting_txt'] = 'Enable greylisting';
diff --git a/interface/web/mail/lib/lang/ro_mail_user.lng b/interface/web/mail/lib/lang/ro_mail_user.lng
index 46938cd..af61d06 100644
--- a/interface/web/mail/lib/lang/ro_mail_user.lng
+++ b/interface/web/mail/lib/lang/ro_mail_user.lng
@@ -14,6 +14,7 @@
 $wb['quota_txt'] = 'Quota';
 $wb['server_id_txt'] = 'Server_id';
 $wb['password_txt'] = 'Password';
+$wb['password_click_to_set_txt'] = 'Click to set';
 $wb['maildir_txt'] = 'Maildir';
 $wb['postfix_txt'] = 'Enable Receiving';
 $wb['greylisting_txt'] = 'Enable greylisting';
diff --git a/interface/web/mail/lib/lang/ru_mail_user.lng b/interface/web/mail/lib/lang/ru_mail_user.lng
index 5ed8b07..9214dc8 100644
--- a/interface/web/mail/lib/lang/ru_mail_user.lng
+++ b/interface/web/mail/lib/lang/ru_mail_user.lng
@@ -13,6 +13,7 @@
 $wb['quota_txt'] = 'квота in MB';
 $wb['server_id_txt'] = 'server_id';
 $wb['password_txt'] = 'пароль';
+$wb['password_click_to_set_txt'] = 'Click to set';
 $wb['maildir_txt'] = 'maildir';
 $wb['postfix_txt'] = 'Разрешить получение';
 $wb['greylisting_txt'] = 'Enable greylisting';
diff --git a/interface/web/mail/lib/lang/se_mail_user.lng b/interface/web/mail/lib/lang/se_mail_user.lng
index 7dcdca3..9ded10e 100644
--- a/interface/web/mail/lib/lang/se_mail_user.lng
+++ b/interface/web/mail/lib/lang/se_mail_user.lng
@@ -14,6 +14,7 @@
 $wb['quota_txt'] = 'kvot i MB';
 $wb['server_id_txt'] = 'server-id';
 $wb['password_txt'] = 'lösenord';
+$wb['password_click_to_set_txt'] = 'Click to set';
 $wb['maildir_txt'] = 'maildir';
 $wb['postfix_txt'] = 'Aktivera mottagning';
 $wb['greylisting_txt'] = 'Enable greylisting';
diff --git a/interface/web/mail/lib/lang/sk_mail_user.lng b/interface/web/mail/lib/lang/sk_mail_user.lng
index 115cab9..b8d6114 100644
--- a/interface/web/mail/lib/lang/sk_mail_user.lng
+++ b/interface/web/mail/lib/lang/sk_mail_user.lng
@@ -14,6 +14,7 @@
 $wb['quota_txt'] = 'Kvóta';
 $wb['server_id_txt'] = 'Server_id';
 $wb['password_txt'] = 'Heslo';
+$wb['password_click_to_set_txt'] = 'Click to set';
 $wb['maildir_txt'] = 'Mailová záložka';
 $wb['postfix_txt'] = 'Povoliť príjem';
 $wb['greylisting_txt'] = 'Enable greylisting';
diff --git a/interface/web/mail/lib/lang/tr_mail_user.lng b/interface/web/mail/lib/lang/tr_mail_user.lng
index ebdcce2..71241ec 100644
--- a/interface/web/mail/lib/lang/tr_mail_user.lng
+++ b/interface/web/mail/lib/lang/tr_mail_user.lng
@@ -15,6 +15,7 @@
 $wb['quota_txt'] = 'Kota (sınırsız için 0 yazın)';
 $wb['server_id_txt'] = 'Sunucu kodu';
 $wb['password_txt'] = 'Parola';
+$wb['password_click_to_set_txt'] = 'Click to set';
 $wb['maildir_txt'] = 'Posta Klasörü';
 $wb['postfix_txt'] = 'Alım Etkin';
 $wb['greylisting_txt'] = 'Enable greylisting';
diff --git a/interface/web/mail/templates/mail_user_mailbox_edit.htm b/interface/web/mail/templates/mail_user_mailbox_edit.htm
index 4cb4b51..754c6b7 100644
--- a/interface/web/mail/templates/mail_user_mailbox_edit.htm
+++ b/interface/web/mail/templates/mail_user_mailbox_edit.htm
@@ -29,7 +29,7 @@
                 <label for="password" class="col-sm-3 control-label">{tmpl_var name='password_txt'}</label>
                 <div class="col-sm-9">
 				<div class="input-group">
-					<input type="password" name="password" id="password" value="{tmpl_var name='password'}" class="form-control" autocomplete="off" onkeyup="pass_check(this.value);checkPassMatch('password','repeat_password');" />
+					<input type="password" name="password" id="password" value="{tmpl_var name='password'}" data-toggle="tooltip" data-placement="left" title="{tmpl_var name='password_click_to_set_txt'}" readonly onfocus="this.removeAttribute('readonly');" class="form-control" autocomplete="off" onkeyup="pass_check(this.value);checkPassMatch('password','repeat_password');" />
 					<span class="input-group-btn">
 						<button class="btn btn-default" type="button" onclick="generatePassword('password','repeat_password');">{tmpl_var name='generate_password_txt'}</button>
 					</span>
@@ -45,7 +45,8 @@
             </div>
             <div class="form-group">
                 <label for="repeat_password" class="col-sm-3 control-label">{tmpl_var name='repeat_password_txt'}</label>
-                <div class="col-sm-9"><input type="password" name="repeat_password" id="repeat_password" value="" class="form-control" autocomplete="off" onkeyup="checkPassMatch('password','repeat_password');" /></div></div>
+                <div class="col-sm-9">
+	                <input type="password" name="repeat_password" id="repeat_password" value="" data-toggle="tooltip" data-placement="left" title="{tmpl_var name='password_click_to_set_txt'}" readonly onfocus="this.removeAttribute('readonly');" class="form-control" autocomplete="off" onkeyup="checkPassMatch('password','repeat_password');" /></div></div>
             <div class="form-group">
 				<div class="col-sm-offset-3 col-sm-9">
 					<div id="confirmpasswordError" style="display:none;" class="confirmpassworderror">{tmpl_var name='password_mismatch_txt'}</div>

--
Gitblit v1.9.1