From 24741b9973c6552059720c51ef46c638893f7316 Mon Sep 17 00:00:00 2001 From: "terry%netscape.com" Date: Tue, 22 Sep 1998 16:56:39 +0000 Subject: [PATCH] Added disabled, voucher, signedform. git-svn-id: svn://10.0.0.236/trunk@10690 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/webtools/despot/despot.cgi | 133 +++++++++++++++++++++----- mozilla/webtools/despot/maketables.sh | 3 + mozilla/webtools/despot/syncit.pl | 6 +- 3 files changed, 117 insertions(+), 25 deletions(-) diff --git a/mozilla/webtools/despot/despot.cgi b/mozilla/webtools/despot/despot.cgi index 2c0383cad17..35e73ee8930 100755 --- a/mozilla/webtools/despot/despot.cgi +++ b/mozilla/webtools/despot/despot.cgi @@ -104,7 +104,7 @@ $::db = Mysql->Connect("localhost", "mozusers", $F::loginname, "") || die "Can't connect to database server"; -my $query = Query("select passwd,despot,neednewpassword,id from users where email = '$F::loginname'"); +my $query = Query("select passwd,despot,neednewpassword,id,disabled from users where email = '$F::loginname'"); my @row = $query->fetchrow(); if (!@row || !checkpassword($F::loginpassword, $row[0])) { if ($F::loginname !~ /@/) { @@ -114,22 +114,29 @@ if (!@row || !checkpassword($F::loginpassword, $row[0])) { } } +my $passwd; +my $disabled; +($passwd,$::candespot,$::neednewpassword,$::loginid,$disabled) = @row; + +if ($disabled eq "Yes") { + Punt("Your account has been disabled."); +} -$::candespot = 0; -if ($row[1] eq "Yes") { + +if ($::candespot eq "Yes") { $::candespot = 1; } else { + $::candespot = 0; $::despot = 0; } -$::neednewpassword = 0; -if ($row[2] eq "Yes") { +if ($::neednewpassword eq "Yes") { $::neednewpassword = 1; +} else { + $::neednewpassword = 0; } -$::loginid = $row[3]; - $::skiptrailer = 0; if (defined $F::command) { @@ -210,13 +217,22 @@ sub MainMenu() { param("_despot", $::despot); if ($::despot) { my @l2 = (); + my $opts = popup_menu(-name=>"matchtype", + -values=>["regexp", "not regexp"], + -default=>"regexp", + -labels=>{"regexp"=>"Matching regexp", + "not regexp"=>"Not matching regexp"}); push(@l2, - li(MyForm("ListUsers") . submit("List all users") . + li("" . + MyForm("ListUsers") . submit("List all users") . + $opts . + textfield(-name=>"match", -size=>50) . + "" . end_form())); push(@l2, li(MyForm("AddUser") . submit("Add or edit user") . "with email " . - textfield(-name=>"email", -size=>50) . "" . + textfield(-name=>"email", -size=>25) . "" . end_form())); my $query = Query("select id,name from repositories order by id"); my @vals = (); @@ -300,13 +316,15 @@ sub EditUser() { my @desc; for (my $i=0 ; $i<@row ; $i++) { @desc = $query2->fetchrow(); - my $line = th({-align=>"right"}, "$desc[0]:" . - hidden("orig_$desc[0]", $row[$i])); + my $line = th({-align=>"right"}, "$desc[0]:"); if ($desc[0] ne ($query->name)[$i]) { die "show columns in different order than select???"; } $_ = $desc[1]; if (/^varchar/ || /int\([0-9]*\)$/) { + if ($desc[0] eq "voucher") { + $row[$i] = IdToEmail($row[$i]); + } $line .= td(textfield(-name=>($query->name)[$i], -default=>$row[$i], -size=>50, @@ -323,6 +341,9 @@ sub EditUser() { $line .= td(radio_group(-name=>$desc[0], "-values"=>\@values, -default=>$row[$i])); } + $line .= hidden("orig_$desc[0]", $row[$i]); + + push(@list,Tr($line)); } @@ -367,14 +388,20 @@ sub ChangeUser() { my @list; my @row; while (@row = $query->fetchrow()) { - if (defined $row[0] && (param($row[0]) ne param("orig_$row[0]"))) { + my $old = param("orig_$row[0]"); + my $new = param($row[0]); + if ($old ne $new) { + if ($row[0] eq "voucher") { + $old = EmailToId($old); + $new = EmailToId($new); + } Query("insert into changes (email,field,oldvalue,newvalue,who) values (" . $::db->quote($F::orig_email) . ",'$row[0]'," . - $::db->quote(param("orig_$row[0]")) . "," . - $::db->quote(param($row[0])) . ",'" . - $F::loginname . "')"); + $::db->quote($old) . "," . + $::db->quote($new) . ",'" . + $F::loginname . "')"); } - push(@list, "$row[0] = '" . SqlQuote(param($row[0])) . "'"); + push(@list, "$row[0] = '" . SqlQuote($new) . "'"); } my $qstr = "update users set " . join(",", @list) . " where email='" . SqlQuote($F::orig_email) . "'"; @@ -407,22 +434,28 @@ sub ListPartitions () { print p("If you're wondering what a 'partition' is, " . a({-href=>"help.html#partition"}, "read this") . "."); ListSomething("partitions", "id", "ListPartitions", "EditPartition", "name", - "name,repositoryid,state,description", + "name,repositoryid,state,description", "", {"branchid"=>"branches.name,branches.id=partitions.branchid", - "repositoryid"=>"repositories.name,repositories.id=partitions.repositoryid"}); + "repositoryid"=>"repositories.name,repositories.id=partitions.repositoryid"}, + ""); } sub ListUsers() { EnsureDespot(); - ListSomething("users", "email", "ListUsers", "EditUser", "email", "email,realname,gila_group,cvs_group,neednewpassword", {}); + # ListSomething("users", "email", "ListUsers", "EditUser", "email", "email,realname,gila_group,cvs_group", "users as u2", {"voucher"=>"u2.email,u2.id=users.voucher"}); + my $wherepart = ""; + if ($F::match ne "") { + $wherepart = "email $F::matchtype " . $::db->quote($F::match); + } + ListSomething("users", "email", "ListUsers", "EditUser", "email", "email,realname,gila_group,cvs_group", "", {}, $wherepart); } sub ListSomething { my ($tablename,$idcolumn,$listprocname,$editprocname,$defaultsortorder, - $defaultcolumns,$columndefs) = (@_); + $defaultcolumns,$extratables,$columndefs,$extrawhere) = (@_); my %columnremap; @@ -480,6 +513,9 @@ sub ListSomething { my @mungedcols; my %usedtables; my $wherepart = ""; + if (defined $extrawhere && $extrawhere ne "") { + $wherepart = " where " . $extrawhere; + } foreach my $c (@cols) { my $t = $columnremap{$c}; push(@mungedcols,$t); @@ -494,6 +530,14 @@ sub ListSomething { $wherepart .= $columnwhere{$c}; } } + if ($extratables ne "") { + foreach my $i (split(/,/, $extratables)) { + $usedtables{$i} = 1; + if ($i =~ m/as (.*)$/) { + delete $usedtables{$1}; + } + } + } $query = Query("select $tablename.$idcolumn," . join(",", @mungedcols) . " from " . join(",", keys(%usedtables)) . $wherepart . " order by $columnremap{$sortorder}"); while (@row = $query->fetchrow()) { my $i; @@ -542,7 +586,9 @@ sub ViewAccount { if ($desc[0] ne ($query->name)[$i]) { die "show columns in different order than select???"; } - $_ = $desc[1]; + if ($desc[0] eq "voucher") { + $row[$i] = IdToEmail($row[$i]); + } $line .= td($row[$i]); push(@list,Tr($line)); } @@ -637,7 +683,7 @@ sub EditPartition() { $query = Query("select pattern from files where partitionid=$partitionid order by pattern"); push(@list, CreateListRow("files", $query)); foreach my $class ("Owner", "Peer", "Member") { - $query = Query("select users.email from members,users where members.partitionid = $partitionid and members.class = '$class' and users.id = members.userid order by users.email"); + $query = Query("select users.email,users.disabled from members,users where members.partitionid = $partitionid and members.class = '$class' and users.id = members.userid order by users.email"); push(@list, CreateListRow($class, $query)); } @@ -692,6 +738,7 @@ sub ChangePartition { foreach my $class ("Owner", "Peer", "Member") { my @names = split(/\n/, param($class)); foreach my $n (@names) { + $n =~ s/\(.*\)//g; $n = trim($n); if ($n eq "") { next; @@ -741,6 +788,7 @@ sub ChangePartition { foreach my $class ("Owner", "Peer", "Member") { my @names = split(/\n/, param($class)); foreach my $n (@names) { + $n =~ s/\(.*\)//g; $n = trim($n); if ($n eq "") { next; @@ -791,6 +839,9 @@ sub CreateListRow { my @row; while (my @row = $query->fetchrow()) { my $v = $row[0]; + if ($row[1] eq "Yes") { + $v .= " (disabled)"; + } $result .= $v . "\n"; } return Tr(th(a({-href=>"help.html#$title"}, "$title:")) . @@ -914,3 +965,41 @@ sub pickrandompassword { } return $result; } + +sub IdToEmail { + my ($id) = (@_); + if ($id eq "0") { + return "(none)"; + } else { + my $query3 = + Query("select email,disabled from users where id = $id"); + my @row3; + if (@row3 = $query3->fetchrow()) { + if ($row3[1] eq "Yes") { + $row3[0] .= " (Disabled)"; + } + return $row3[0]; + } + } + + return "Unknown Id $id"; +} + +sub EmailToId { + my ($email, $forcevalid) = (@_); + + $email =~ s/\(.*\)//g; + $email = trim($email); + + my $query = Query("select id from users where email = " . + $::db->quote($email)); + my @row; + if (@row = $query->fetchrow()) { + return $row[0]; + } + if ($forcevalid || $email ne "") { + Punt("$email is not a registered email address."); + } + return 0; +} + diff --git a/mozilla/webtools/despot/maketables.sh b/mozilla/webtools/despot/maketables.sh index dd5bc06414f..7c702274945 100755 --- a/mozilla/webtools/despot/maketables.sh +++ b/mozilla/webtools/despot/maketables.sh @@ -98,6 +98,9 @@ create table users ( cvs_group enum("None", "webmonkey", "cvsadm"), despot enum("No", "Yes"), neednewpassword enum("No", "Yes"), + disabled enum("No", "Yes"), + voucher mediumint not null, + signedform enum("No", "Yes"), unique(email), unique(mozlogin) diff --git a/mozilla/webtools/despot/syncit.pl b/mozilla/webtools/despot/syncit.pl index a537b04ac57..91f2cf7a1e6 100755 --- a/mozilla/webtools/despot/syncit.pl +++ b/mozilla/webtools/despot/syncit.pl @@ -93,7 +93,7 @@ $repquery = Query("select id,name,cvsroot from repositories order by name"); while (@reprow = $repquery->fetchrow()) { ($repid,$repname,$reproot) = (@reprow); - $query = Query("select email,passwd,${repname}_group,neednewpassword from users where ${repname}_group != 'None' and passwd != '' order by email"); + $query = Query("select email,passwd,${repname}_group,neednewpassword,disabled from users where ${repname}_group != 'None' and passwd != '' order by email"); $tmpdir = "/tmp/syncit.$$"; mkdir $tmpdir, 0777; @@ -110,8 +110,8 @@ while (@reprow = $repquery->fetchrow()) { print PASSWD "# tweak things from there.\n"; while (@row = $query->fetchrow()) { - ($email,$password,$group,$neednew) = @row; - if ($neednew eq "Yes") { + ($email,$password,$group,$neednew,$disabled) = @row; + if ($neednew eq "Yes" || $disabled eq "Yes") { next; } $login = $email;