. # # }}} # include("defs.php3"); # # Only known and logged in users can be verified. # $this_user = CheckLoginOrDie(); $auth_usr = $this_user->uid(); $auth_usridx = $this_user->uid_idx(); # # The reason for this call is to make sure that globals are set properly. # $reqargs = RequiredPageArguments(); # # Find all of the groups that this person has project/group root in, and # then in all of those groups, all of the people who are awaiting to be # approved (status = none). # $approvelist = $this_user->ApprovalList(1); if (count($approvelist) == 0) { USERERROR("You have no new project members who need approval.", 1); } # # Standard Testbed Header # PAGEHEADER("New User Approval"); echo "

Approve new users in your Project or Group

Use this page to approve new members of your Project or Group. Once approved, they will be able to log into machines in your Project's experiments. Be sure to toggle the menu options appropriately for each pending user.

You have the following choices for Action:

Postpone Do nothing; application remains, pending a decision.
Deny Deny user application and so notify the user.
Nuke Nuke user application. Kills user account, without notice to user. Useful for bogus project applications.
Approve Approve the user

You have the following choices for Trust:

User User may log into machines in your experiments
Local Root User may create/destroy experiments in your project and has root privileges on machines in your experiments
Group Root In addition to Local Root privileges, user may also approve new group members and modify user info for other users within the group. This level of trust is typically given only to TAs and the like.

Important group security issues are discussed in the Groups Tutorial.

\n"; # # Now build a table with a bunch of selections. The thing to note about the # form inside this table is that the selection fields are constructed with # name= on the fly, from the uid of the user to be approved. In other words: # # uid menu project/group # name=stoller$$approval-testbed/testbed value=approved,denied,postpone # name=stoller$$trust-testbed/testbed value=user,local_root # # so that we can go through the entire list of post variables, looking # for these. The alternative is to work backwards, and I do not like that. # echo "\n"; echo "\n"; echo "\n"; while (list ($uid_idx, $grouplist) = each ($approvelist)) { if (! ($user = User::Lookup($uid_idx))) { TBERROR("Could not lookup user $uid_idx", 1); } # Iterate over groups for this user. for ($i = 0; $i < count($grouplist); $i++) { $group = $grouplist[$i]; $newuid = $user->uid(); $gid = $group->gid(); $gid_idx = $group->gid_idx(); $pid = $group->pid(); $pid_idx = $group->pid_idx(); $group->MemberShipInfo($user, $trust, $date_applied, $date_approved); # # Cause this field was added late and might be null. # if (! $date_applied) { $date_applied = "--"; } $name = CleanString($user->name()); $email = CleanString($user->email()); $title = CleanString($user->title()); $affil = CleanString($user->affil()); $addr = CleanString($user->addr()); $addr2 = CleanString($user->addr2()); $city = CleanString($user->city()); $state = CleanString($user->state()); $zip = CleanString($user->zip()); $country = CleanString($user->country()); $phone = CleanString($user->phone()); echo "\n"; echo " \n"; echo "\n"; } } echo "
User Project Group Date
Applied
Action Trust Name Title Affil E-mail Phone
Address
$newuid $pid $gid $date_applied  $name   $title   $affil   $email   $phone 
 $addr "; if (strcmp($addr2,"")) { echo " $addr2 "; } echo "  $city   $state   $zip   $country 
\n"; # # Standard Testbed Footer # PAGEFOOTER(); ?>