2 $use_global_login = 1; # Always login as master user, not the mysql
3 # login of the current Webmin user
6 # useradmin_create_user(&details)
7 # Create a new mysql user if syncing is enabled
8 sub useradmin_create_user
10 if ($config{'sync_create'}) {
12 map { $privs{$_}++ } split(/\s+/, $config{'sync_privs'});
14 for($i=3; $i<=&user_priv_cols()+3-1; $i++) {
15 push(@yesno, $privs{$i} ? "'Y'" : "'N'");
17 local @desc = &table_structure($master_db, 'user');
18 local $sql = sprintf "insert into user (%s) values ('%s', '%s', %s, %s)",
19 join(",", map { $desc[$_]->{'field'} } (0 .. &user_priv_cols()+3-1)),
22 $_[0]->{'passmode'} == 3 ? "$password_func('$_[0]->{'plainpass'}')" :
23 $_[0]->{'passmode'} == 0 ? "''" : "'*'",
25 &execute_sql_logged($master_db, $sql);
26 &execute_sql_logged($master_db, 'flush privileges');
30 # useradmin_delete_user(&details)
32 sub useradmin_delete_user
34 if ($config{'sync_delete'}) {
35 &execute_sql_logged($master_db,
36 "delete from user where user = '$_[0]->{'user'}'");
37 &execute_sql_logged($master_db,
38 "delete from db where user = '$_[0]->{'user'}'");
39 &execute_sql_logged($master_db,
40 "delete from tables_priv where user = '$_[0]->{'user'}'");
41 &execute_sql_logged($master_db,
42 "delete from columns_priv where user = '$_[0]->{'user'}'");
43 &execute_sql_logged($master_db, 'flush privileges');
47 # useradmin_modify_user(&details)
49 sub useradmin_modify_user
51 if ($config{'sync_modify'}) {
53 $_[0]->{'olduser'} ||= $_[0]->{'user'}; # In case not changed
54 if ($_[0]->{'passmode'} == 4) {
55 # Not changing password
56 $sql = sprintf "update user set user = '%s' where user = '%s'", $_[0]->{'user'}, $_[0]->{'olduser'};
58 elsif ($_[0]->{'passmode'} == 3) {
59 # Setting new password
60 $sql = sprintf "update user set user = '%s', password = $password_func('%s') where user = '%s'", $_[0]->{'user'}, $_[0]->{'plainpass'}, $_[0]->{'olduser'};
62 elsif ($_[0]->{'passmode'} == 0) {
64 $sql = sprintf "update user set user = '%s', password = '' where user = '%s'", $_[0]->{'user'}, $_[0]->{'olduser'};
68 $sql = sprintf "update user set user = '%s', password = '*' where user = '%s'", $_[0]->{'user'}, $_[0]->{'olduser'};
70 &execute_sql_logged($master_db, $sql);
71 if ($_[0]->{'user'} ne $_[0]->{'olduser'}) {
72 &execute_sql_logged($master_db,
73 "update db set user = '$_[0]->{'user'}' ".
74 "where user = '$_[0]->{'olduser'}'");
75 &execute_sql_logged($master_db,
76 "update tables_priv set user = '$_[0]->{'user'}' ".
77 "where user = '$_[0]->{'olduser'}'");
78 &execute_sql_logged($master_db,
79 "update columns_priv set user = '$_[0]->{'user'}' ".
80 "where user = '$_[0]->{'olduser'}'");
82 &execute_sql_logged($master_db, 'flush privileges');