From 51daa708fe1a99105e8fbc2549e3628259577486 Mon Sep 17 00:00:00 2001 From: Ilia Rostovtsev Date: Thu, 8 Oct 2020 20:01:44 +0300 Subject: [PATCH] Fix to update password properly for all db versions/variants --- mysql/edit_user.cgi | 6 +++++- mysql/save_user.cgi | 16 ++++++++++++---- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/mysql/edit_user.cgi b/mysql/edit_user.cgi index 570e8cde8..db6f7e2e4 100755 --- a/mysql/edit_user.cgi +++ b/mysql/edit_user.cgi @@ -57,8 +57,12 @@ print &ui_table_row($text{'user_user'}, $text{'user_all'})); # Password field +my $epassfield1 = $fieldmap{'Password'} || 1e10; +my $epassfield2 = $fieldmap{'authentication_string'} || 1e10; print &ui_table_row($text{'user_pass'}, - &ui_radio("mysqlpass_mode", $in{'new'} ? 0 : $u->[2] ? 1 : 2, + &ui_radio("mysqlpass_mode", $in{'new'} ? 0 : + (($epassfield1 && !$u->[$epassfield1]) && + ($epassfield2 && !$u->[$epassfield2])) ? 2 : 1, [ [ 2, $text{'user_none'} ], $in{'new'} ? ( ) : ( [ 1, $text{'user_leave'} ] ), [ 0, $text{'user_set'} ] ])." ". diff --git a/mysql/save_user.cgi b/mysql/save_user.cgi index 201f18eb1..cbfe1019b 100755 --- a/mysql/save_user.cgi +++ b/mysql/save_user.cgi @@ -75,10 +75,18 @@ else { } } elsif ($in{'mysqlpass_mode'} == 2) { - &execute_sql_logged($master_db, - "update user set password = NULL ". - "where user = ? and host = ?", - $user, $host); + if ($fieldmap{'Password'}) { + &execute_sql_logged($master_db, + "update user set password = '' ". + "where user = ? and host = ?", + $user, $host); + } + if ($fieldmap{'authentication_string'}) { + &execute_sql_logged($master_db, + "update user set authentication_string = '' ". + "where user = ? and host = ?", + $user, $host); + } } # Save various limits