Working on LDAP admin section

This commit is contained in:
jengo 2000-10-26 01:16:10 +00:00
parent cb30556aaf
commit bbcc442177
4 changed files with 68 additions and 99 deletions

View File

@ -46,11 +46,22 @@
$account_info = account_read($method,$start,$sort,$order);
while (list($null,$account) = each($account_info)) {
// while (list($key) = each($account_info[0])) {
// for ($i=0; $i<count($account_info);$i++) {
// echo "<br>0: " . $account_info[1][$key];
// echo "<br>1: " . $a[2];
// echo "<br>2: " . $b[1];
$lastname = $account["account_lastname"];
$firstname = $account["account_firstname"];
$account_id = $account["account_id"];
$loginid = $account["account_lid"];
$tr_color = $phpgw->nextmatchs->alternate_row_color($tr_color);
$t->set_var("tr_color",$tr_color);
$lastname = $account["account_lastname"];
$firstname = $account["account_firstname"];
// $lastname = $account["account_lastname"];
// $firstname = $account["account_firstname"];
if (! $lastname) $lastname = '&nbsp;';
if (! $firstname) $firstname = '&nbsp;';
@ -58,17 +69,17 @@
$t->set_var("row_firstname",$firstname);
$t->set_var("row_lastname",$lastname);
$t->set_var("row_edit",'<a href="'.$phpgw->link("editaccount.php","account_id="
. $account["account_id"]) . '"> ' . lang("Edit") . ' </a>');
. $account_id) . '"> ' . lang("Edit") . ' </a>');
if ($phpgw_info["user"]["userid"] != $account["account_lid"]) {
$t->set_var("row_delete",'<a href="' . $phpgw->link("deleteaccount.php",'account_id='
. $account["account_id"]) . '"> '.lang("Delete").' </a>');
. $account_id) . '"> '.lang("Delete").' </a>');
} else {
$t->set_var("row_delete","&nbsp;");
}
$t->set_var("row_view",'<a href="' . $phpgw->link("viewaccount.php", "account_id="
. $account["account_id"]) . '"> ' . lang("View") . ' </a>');
. $account_id) . '"> ' . lang("View") . ' </a>');
if ($total == 1) {
$t->set_var("output","");

View File

@ -24,16 +24,6 @@
Header("Location: " . $phpgw->link("accounts.php"));
}
// This function is gonna go soon. (jengo)
function change_owner($app,$table,$field,$new,$old)
{
global $phpgw, $phpgw_info;
if ($phpgw_info["apps"][$app]["enabled"] || ! $app) {
$phpgw->db->query("update $table set $field='$new' where $field='$old'");
}
}
if ($submit) {
if ($old_loginid != $n_loginid) {
if (account_exsists($n_loginid)) {
@ -64,64 +54,8 @@
"groups" => $phpgw->accounts->groups_array_to_string($n_groups)));
}
// $phpgw->db->query("select account_lid from accounts where account_id=$account_id");
// $phpgw->db->next_record();
// $lid = $phpgw->db->f("account_lid");
/* if (! $error) {
$phpgw->db->lock(array('accounts','preferences','sessions'));
if ($n_passwd) {
$phpgw->db->query("update accounts set account_pwd='" . md5($n_passwd) . "', "
. "account_lastpwd_change='" . time() . "' where account_lid='" . "$lid'");
$phpgw->db->query("update sessions set session_pwd='" . addslashes($n_passwd)
. "' where session_lid='$lid'");
}
while ($permission = each($new_permissions)) {
if ($phpgw_info["apps"][$permission[0]]["enabled"]) {
$phpgw->accounts->add_app($permission[0]);
}
}
if (! $n_account_status) {
$n_account_status = "L";
}
$cd = 27;
// If they changed there loginid, we need to change the owner in ALL
// tables to reflect on the new one
if ($lid != $n_loginid) {
change_owner("","preferences","preference_owner",$n_loginid,$lid);
change_owner("addressbook","addressbook","ab_owner",$n_loginid,$lid);
change_owner("todo","todo","todo_owner",$n_loginid,$lid);
change_owner("","accounts","account_lid",$n_loginid,$lid);
change_owner("","sessions","session_lid",$n_loginid,$lid);
change_owner("calendar","webcal_entry","cal_create_by",$n_loginid,$lid);
change_owner("calendar","webcal_entry_user","cal_login",$n_loginid,$lid);
if ($lid <> $n_loginid) {
$sep = $phpgw->common->filesystem_separator();
$basedir = $phpgw_info["server"]["files_dir"] . $sep . "users" . $sep;
if (! @rename($basedir . $lid, $basedir . $n_loginid)) {
$cd = 35;
}
}
}
$phpgw->db->query("update accounts set account_firstname='" . addslashes($n_firstname) . "',"
. " account_lastname='" . addslashes($n_lastname) . "', account_permissions='"
. $phpgw->accounts->add_app("",True) . "', account_status='"
. "$n_account_status', account_groups='"
. $phpgw->accounts->groups_array_to_string($n_groups)
. "' where account_lid='$n_loginid'");
$phpgw->db->unlock();
Header("Location: " . $phpgw->link("accounts.php", "cd=$cd"));
exit;
} // if ! $error */
Header("Location: " . $phpgw->link("accounts.php", "cd=$cd"));
exit;
} // if $submit
$phpgw->common->phpgw_header();

View File

@ -41,7 +41,14 @@
$sr = ldap_search($ldap,$phpgw_info["server"]["ldap_context"],$filter,array("uid"));
$info = ldap_get_entries($ldap, $sr);
return count($info);
$total = 0;
for ($i=0;$i<count($info);$i++) {
if (! $phpgw_info["server"]["global_denied_users"][$info[$i]["uid"][0]]) {
$total++;
}
}
return $total;
}
function account_view($loginid)
@ -63,7 +70,18 @@
function account_read($method,$start,$sort,$order)
{
global $phpgw_info, $ldap;
/* echo "sort: $sort";
if ($sort == "account_lastname") {
$sort = 3;
} else if ($sort == "account_firstname") {
$sort = 2;
} else {
$sort = 1;
}
echo " - sort: $sort";
*/
$filter = "(|(uid=*))";
$sr = ldap_search($ldap,$phpgw_info["server"]["ldap_context"],$filter,array("sn","givenname","uid","uidnumber"));
$info = ldap_get_entries($ldap, $sr);
@ -72,10 +90,17 @@
if (! $phpgw_info["server"]["global_denied_users"][$info[$i]["uid"][0]]) {
$account_info[$i]["account_id"] = $info[$i]["uidnumber"][0];
$account_info[$i]["account_lid"] = $info[$i]["uid"][0];
$account_info[$i]["account_firstname"] = $info[$i]["givenname"][0];
$account_info[$i]["account_lastname"] = $info[$i]["sn"][0];
$account_info[$i]["account_lastname"] = $info[$i]["givenname"][0];
$account_info[$i]["account_firstname"] = $info[$i]["sn"][0];
}
}
// echo " - order: $order";
/* if ($order == "ASC") {
sort($account_info[$sort]);
} else {
rsort($account_info[$sort]);
} */
return $account_info;
}
@ -205,11 +230,24 @@
$phpgw->db->next_record();
ldap_delete($ldap,"uid=" . $phpgw->db->f("account_lid") . ", ". $phpgw_info["server"]["ldap_context"]);
$phpgw->db->query("delete from accounts where account_id='$account_id'");
}
function account_exsists($loginid)
{
global $phpgw_info, $ldap;
$filter = "(|(uid=$loginid))";
$sr = ldap_search($ldap,$phpgw_info["server"]["ldap_context"],$filter,array("uid"));
$total = ldap_get_entries($ldap, $sr);
// Odd, but it works
if (count($total) == 2) {
return True;
} else {
return False;
}
}
function account_close()

View File

@ -140,9 +140,9 @@
}
while ($permission = each($account_info["permissions"])) {
if ($phpgw_info["apps"][$permission[0]]["enabled"]) {
$phpgw->accounts->add_app($permission[0]);
}
if ($phpgw_info["apps"][$permission[0]]["enabled"]) {
$phpgw->accounts->add_app($permission[0]);
}
}
if (! $account_info["account_status"]) {
@ -150,27 +150,13 @@
}
$cd = 27;
// If they changed there loginid, we need to change the owner in ALL
// tables to reflect on the new one
if ($lid != $account_info["loginid"]) {
/*
change_owner("","preferences","preference_owner",$account_info["loginid"],$lid);
change_owner("addressbook","addressbook","ab_owner",$account_info["loginid"],$lid);
change_owner("todo","todo","todo_owner",$account_info["loginid"],$lid);
// change_owner("","accounts","account_lid",$account_info["loginid"],$lid);
change_owner("","sessions","session_lid",$account_info["loginid"],$lid);
change_owner("calendar","webcal_entry","cal_create_by",$account_info["loginid"],$lid);
change_owner("calendar","webcal_entry_user","cal_login",$account_info["loginid"],$lid);
*/
if ($lid != $n_loginid) {
$sep = $phpgw->common->filesystem_separator();
if ($account_info["c_loginid"] != $account_info["loginid"]) {
$sep = $phpgw->common->filesystem_separator();
$basedir = $phpgw_info["server"]["files_dir"] . $sep . "users" . $sep;
$basedir = $phpgw_info["server"]["files_dir"] . $sep . "users" . $sep;
if (! @rename($basedir . $lid, $basedir . $account_info["loginid"])) {
$cd = 35;
}
if (! @rename($basedir . $lid, $basedir . $account_info["loginid"])) {
$cd = 35;
}
}