$cmd && $cmd->execute() ||
&error("Failed to query users : ".$dbh->errstr);
while(my ($id, $name, $pass) = $cmd->fetchrow()) {
- my $u = { 'name' => $pass, 'pass' => $pass,
+ my $u = { 'name' => $name, 'pass' => $pass,
'proto' => $proto };
push(@rv, $u);
$userid{$id} = $u;
sub list_groups
{
my @rv;
+my %miniserv;
+&get_miniserv_config(\%miniserv);
# Add groups from local files
open(GROUPS, "$config_directory/webmin.groups");
$cmd && $cmd->execute() ||
&error("Failed to query groups : ".$dbh->errstr);
while(my ($id, $name, $desc) = $cmd->fetchrow()) {
- my $g = { 'name' => $pass, 'desc' => $desc,
+ my $g = { 'name' => $name, 'desc' => $desc,
'proto' => $proto };
push(@rv, $g);
$groupid{$id} = $g;
sub delete_group
{
my ($groupname) = @_;
+my %miniserv;
+&get_miniserv_config(\%miniserv);
# Delete from local files
&lock_file("$config_directory/webmin.groups");
if (defined($fromid) && defined($toid)) {
# Copy from database to database
if ($proto eq "mysql" || $proto eq "postgresql") {
- my $cmd = $dbh->prepare("insert into webmin_user_acl select ?,attr,value from webmin_user_acl where id = ?");
+ my $cmd = $dbh->prepare("insert into webmin_user_acl select ?,module,attr,value from webmin_user_acl where id = ?");
$cmd && $cmd->execute($toid, $fromid) ||
&error("Failed to copy ACLs : ".$dbh->errstr);
$cmd->finish();
sub userdb_table_sql
{
my ($str) = @_;
-my ($key, $auto);
+my ($key, $auto, $index);
if ($str =~ /^(mysql|postgresql):/) {
$key = "not null primary key";
}
if ($str =~ /^mysql:/) {
- $auto = "autoincrement";
+ $auto = "auto_increment";
+ $index = ", index(id)";
}
# XXX will this work on postgresql?
-return ( "create table webmin_user (id int(20) $key $auto, name varchar(255), pass varchar(255))",
- "create table webmin_group (id int(20) $key $auto, name varchar(255), description varchar(255))",
- "create table webmin_user_attr (id int(20) $key, attr varchar(32), value varchar(255))",
- "create table webmin_group_attr (id int(20) $key, attr varchar(32), value varchar(255))",
- "create table webmin_user_acl (id int(20) $key, module varchar(32), attr varchar(32), value varchar(255))",
- "create table webmin_group_acl (id int(20) $key, module varchar(32), attr varchar(32), value varchar(255))",
+return ( "create table webmin_user (id int(20) $key $auto, name varchar(255) not null, pass varchar(255))",
+ "create table webmin_group (id int(20) $key $auto, name varchar(255) not null, description varchar(255))",
+ "create table webmin_user_attr (id int(20) $index, attr varchar(32) not null, value varchar(255))",
+ "create table webmin_group_attr (id int(20) $index, attr varchar(32) not null, value varchar(255))",
+ "create table webmin_user_acl (id int(20) $index, module varchar(32), attr varchar(32) not null, value varchar(255))",
+ "create table webmin_group_acl (id int(20) $index, module varchar(32), attr varchar(32) not null, value varchar(255))",
);
}
require './acl-lib.pl';
&ui_print_header(undef, $text{'index_title'}, "", undef, 1, 1);
-@glist = &list_groups();
-foreach $g (@glist) {
- foreach $gm (@{$g->{'members'}}) {
- $ingroup{$gm} = $g;
+# Fetch user and group lists, if possible
+eval {
+ $main::error_must_die = 1;
+ @glist = &list_groups();
+ foreach $g (@glist) {
+ foreach $gm (@{$g->{'members'}}) {
+ $ingroup{$gm} = $g;
+ }
}
+ @ulist = &list_users();
+ };
+if ($@) {
+ print "<b>",&text('index_eulist', "$@"),"</b><p>\n";
}
-@ulist = &list_users();
foreach $u (@ulist) {
$me = $u if ($u->{'name'} eq $base_remote_user);
}
index_sessions=View Login Sessions
index_rbac=Setup RBAC
index_delete=Delete Selected
+index_eulist=Failed to list users : $1
+index_eglist=Failed to list groups : $1
edit_title=Edit Webmin User
edit_title2=Create Webmin User
gedit_rights=Webmin group access rights
gedit_modules=Members' modules
gedit_members=Member users and groups
+gedit_desc=Group description
gdelete_err=Failed to delete group
gdelete_ecannot=You are not allowed to delete groups
gsave_ename=Missing or invalid group name
gsave_enamewebmin=The group name 'webmin' is reserved for internal use
gsave_edup=Group name is already in use
+gsave_edesc=Invalid description - the : character is not allowed
convert_title=Convert Users
convert_ecannot=You are not allowed to convert Unix user