Approve new users in your Project
Use this page to approve new members of your Project. 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; user remains pending 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 |
  |
Root |
- |
User may create/destroy experiments in your project and
has root privileges on machines in your experiments |
\n";
#
# Find all of the groups that this person has group_root in, and then in
# all of those groups, all of the people who are awaiting to be approved
# (status = none).
#
# First off, just determine if this person has group_root anywhere.
#
$query_result = mysql_db_query($TBDBNAME,
"SELECT pid FROM proj_memb WHERE uid='$auth_usr' ".
"and trust='group_root'");
if (! $query_result) {
$err = mysql_error();
TBERROR("Database Error getting project info for $auth_usr: $err\n", 1);
}
if (mysql_num_rows($query_result) == 0) {
USERERROR("You do not have Project Root permissions in any Project.", 1);
}
#
# Okay, so this operation sucks out the right people by joining the
# proj_memb table with itself. Kinda obtuse if you are not a natural
# DB guy. Sorry. Well, obtuse to me.
#
$query_result = mysql_db_query($TBDBNAME,
"SELECT proj_memb.* ".
"FROM proj_memb LEFT JOIN proj_memb as authed ".
"ON proj_memb.pid=authed.pid and proj_memb.uid!='$auth_usr' ".
"and proj_memb.trust='none' ".
"WHERE authed.uid='$auth_usr' and authed.trust='group_root'");
if (! $query_result) {
$err = mysql_error();
TBERROR("Database Error getting approvable users for $auth_usr: $err\n",
1);
}
if (mysql_num_rows($query_result) == 0) {
USERERROR("You have no new project members who need approval.", 1);
}
#
# 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
# name=stoller$$approval-testbed value=approved,denied,postpone
# name=stoller$$trust-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 "
User |
Project |
Date Applied |
Action |
Trust |
Name |
Title |
Affil |
E-mail |
Phone |
Addr |
Addr2 |
City |
State |
Zip |
\n";
echo "
\n";
#
# Standard Testbed Footer
#
PAGEFOOTER();
?>