'localhost', 'hosts' => array('127.0.0.1'), 'port' => 389, 'base_dn' => 'cn=users,dc=biall,dc=pl', 'search_base_dn' => '', 'required_fields' => array('cn', 'sn', 'mail'), 'filter' => '(&(!(uid=_*))(mail=*@*))', 'search_dn_default' => '', 'LDAP_Object_Classes' => array('top', 'inetOrgPerson'), 'search_fields' => array('givenName', 'cn', 'sn', 'mail'), 'fieldmap' => array( // Roundcube => LDAP 'name' => 'cn', 'surname' => 'sn', 'firstname' => 'givenName', 'email' => 'mail', 'phone:work' => 'telephoneNumber' ), 'LDAP_rdn' => 'mail', 'ldap_version' => 3, 'scope' => 'sub', 'fuzzy_search' => true ); * */ function SYNC_LDAP_PERMS() { SE_Layout::menu(); echo '
Error storage not exists
'; } else { echo '' . "Ustal stanowisko: "; echo 'ustal stanowisko'; echo '
'; } } Lib::loadClass('SyncUsers'); $synUsers = new SyncUsers($usrStorageDB, $usrStorageLdap); $syncTodoList = $synUsers->getSyncUserTodoList($userName, $syncGroups = true, $syncDisabled = true); ?>Lista zadań do wykonania:
zasobyGroups (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($zasobyGroups);echo'';
echo'zasobyGroupsTreeRoot (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($zasobyGroupsTreeRoot);echo'';
}
// print tree stanowiska
function tmpPrintTreeItem($vGroup) {
if ('' !== ($userName = V::get('userName', '', $_GET))) {
$userGroups = UsersHelper::getGroupByUserName($userName);
}
if (is_array($userGroups) && !empty($userGroups) && array_key_exists($vGroup->ID, $userGroups)) {
echo '' . "[{$vGroup->ID}] {$vGroup->TYPE} {$vGroup->DESC}" . '';
} else if (in_array($vGroup->TYPE, array('DZIAL', 'PODMIOT'))) {
echo '' . "[{$vGroup->ID}] {$vGroup->TYPE} {$vGroup->DESC}" . '';
} else {
echo "[{$vGroup->ID}] {$vGroup->TYPE} {$vGroup->DESC}";
}
}
function tmpPrintTreeRec($treeIds, $items, $callback) {
echo 'groupsLdapAll (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($groupsLdapAll);echo'';}
}
if (0 < ($syncGroupID = V::get('syncGroup', 0, $_GET, 'int'))) {
Lib::loadClass('UserStorageFactory');
$usrStorageDB = UserStorageFactory::getStorage('DB');
$usrStorageLdap = UserStorageFactory::getStorage('MacOSX');
if (!$usrStorageDB || !$usrStorageLdap) {
echo 'Ustal powiązania między grupami uprawnień - grupy uprawnień
getSyncGroupTodoList($syncGroupID, $syncNestedGroups = true); ?>Lista zadań do wykonania:
Brak dostępu
| usrDB (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($usrDB);echo''; ?> | usrLdap (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($usrLdap);echo''; ?> |
sysGroups (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($sysGroups);echo'';
if ($usrDB && $usrLdap) {
echo 'OK jest DB i LDAP
'; } else if (!$usrDB) { echo 'Brak DB
'; } else if (!$usrLdap) { ?>Brak LDAP utwórz usera ldap na podstawie danych w bazie
0) { $errorMsg = ''; if (!$ldap->bindDiradmin($errorMsg)) { echo'Error: cant bind as diradmin (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($errorMsg);echo'';
} else {
$attr = array();
$attr['telephoneNumber'] = $usrDB->ADM_PHONE;
$ldap->mod_replace($userName, $attr);
//$attr = array();
//$attr['homePhone'] = $usrDB->ADM_PHONE;
//$ret = $ldap->mod_del($userName, $attr);
}
}
}
if ('' !== ($userName = V::get('userName', '', $_GET))) {
$ldapUser = array();
$filter = (false !== strpos($userName, '@'))? "(mail={$userName})" : "(uid={$userName})";
//$filter = "cn=*";// show all ldap accounts
$justthese = array();//array("uid", "givenName", "mail", "*");
$res = $ldap->search($filter, 'cn=users', $justthese);
if ($ldap->count_entries($res) > 0) {
$entry = $ldap->first_entry($res);
if ($entry) {
$ldapUser['user_dn'] = $ldap->get_dn($entry);
$val = $ldap->get_values($entry, 'uid');
$ldapUser['uid'] = $val[0];
$val = $ldap->get_values($entry, 'mail');
$ldapUser['mail'] = $val[0];
$val = $ldap->get_values($entry, 'cn');
$ldapUser['cn'] = $val[0];
} else {
echo 'Login nie istnieje';
return false;
}
}
if($DBG){echo'ldapUser (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($ldapUser);echo'';}
$userLdapGroups = UsersLdapHelper::getUserGroups($userName);
$userGroups = UsersHelper::getGroupByUserName($userName);
$gidNumbers = array();
if (!empty($userLdapGroups)) {
foreach ($userLdapGroups as $vLdapGroup) {
$gidNumbers[] = $vLdapGroup->gidNumber;
}
}
$groupsAll = UsersHelper::getGroupsByLdapGids($gidNumbers);
if($DBG){echo'groupsAll (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($groupsAll);echo'';}
$zasobyGroupsTreeRoot = UsersHelper::getGroupsTreeRoot();
$zasobyGroups = UsersHelper::getGroupsTreeItems();
if($DBG){echo'treeZasoby (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($treeZasoby);echo'';}
if($DBG){echo'zasobyGroups (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($zasobyGroups);echo'';}
if($DBG){echo'zasobyGroupsTreeRoot (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($zasobyGroupsTreeRoot);echo'';}
// print tree stanowiska
function tmpPrintTreeItem($vGroup) {
if ('' !== ($userName = V::get('userName', '', $_GET))) {
$userGroups = UsersHelper::getGroupByUserName($userName);
}
if (array_key_exists($vGroup->ID, $userGroups)) {
echo '' . "[{$vGroup->ID}] {$vGroup->TYPE} {$vGroup->DESC}" . '';
} else if (in_array($vGroup->TYPE, array('DZIAL', 'PODMIOT'))) {
echo '' . "[{$vGroup->ID}] {$vGroup->TYPE} {$vGroup->DESC}" . '';
} else {
echo "[{$vGroup->ID}] {$vGroup->TYPE} {$vGroup->DESC}";
}
}
function tmpPrintTreeRec($treeIds, $items, $callback) {
echo '| LDAP Groups () | Zasoby Groups () |
|---|---|
db errors: (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($db->get_errors());echo'';
}
}
}
if (V::get('group_add', '', $_POST)) {
$zasob_id = V::get('zasob_id', 0, $_POST);
if ($zasob_id > 0) {
$db = DB::getDB();
$zasob = $db->get_by_id('CRM_LISTA_ZASOBOW', $zasob_id);
if ($zasob) {
if (in_array($zasob->TYPE, array('STANOWISKO', 'DZIAL', 'PODMIOT'))) {
$ldap_gid = 0;
// TODO: search for free GID
$allLdapGroups = UsersLdapHelper::getGroupsAll();
$ldapGids = array();
foreach ($allLdapGroups as $vLdapGroup) {
$ldapGids[] = $vLdapGroup->gidNumber;
}
$allGroups = UsersHelper::getGroupsAll();
$dbGids = array_keys($allGroups);
if ($zasob->ID > 1050 && !in_array($zasob->ID, $ldapGids)) {
$ldap_gid = $zasob->ID;
} else {
for ($i = 10000 + $zasob->ID; $i < 20000 + $zasob->ID; $i++) {
if (!in_array($i, $ldapGids) && !in_array($i, $dbGids)) {
$ldap_gid = $i;
break;
}
}
}
if ($ldap_gid) {
$ldapUser = User::getName();
$ldapPass = V::get('pass', '', $_POST);
$newGroup = new stdClass();
$newGroup->nameShort = mb_substr($zasob->DESC, 0, 50, 'utf8');
$newGroup->name = $zasob->ID . '_' . $newGroup->nameShort;
$newGroup->name = str_replace(' ' , '_', $newGroup->name);
$pl_letters = array('ą', 'ć', 'ę', 'ł', 'ń', 'ó', 'ś', 'ź', 'ż', 'Ą', 'Ć', 'Ę', 'Ł', 'Ń', 'Ó', 'Ś', 'Ź', 'Ż');
$en_letters = array('a', 'c', 'e', 'l', 'n', 'o', 's', 'z', 'z', 'A', 'C', 'E', 'L', 'N', 'O', 'S', 'Z', 'Z');
$newGroup->name = str_replace($pl_letters , $en_letters, $newGroup->name);
$newGroup->name = preg_replace('/[^a-z0-9-_]/i' , '', $newGroup->name);
$newGroup->realName = "[{$zasob->ID}] {$zasob->TYPE} {$newGroup->nameShort}";
$newGroup->gidNumber = $ldap_gid;
$command1="dscl -u {$ldapUser} -P {$ldapPass} /LDAPv3/127.0.0.1 -create /Groups/{$newGroup->name} PrimaryGroupID {$newGroup->gidNumber}";
$command2="dscl -u {$ldapUser} -P {$ldapPass} /LDAPv3/127.0.0.1 -create /Groups/{$newGroup->name} RealName \"{$newGroup->realName}\" ";
$return_dscl1 = system($command1, $retVal1);
$return_dscl2 = system($command2, $retVal2);
echo' (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r(array($command1, $command2));echo'';
if ($retVal1 === 0 && $retVal2 === 0) {
echo 'db errors: (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($db->get_errors());echo'';
}
}
else {
echo '| All LDAP Groups | All Zasoby Groups |
|---|---|
| () | () |
| Połącz Zasoby z Grupami na serwerze LDAP | |
|
|
|
$usersConnected (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($usersConnected);echo'';
?>
| LDAP Users (ok) | DB Users (ok) |
|---|---|
| LDAP Users (todo) | DB Users (todo) |
| konta bez możliwości zalogwania się | |
| allLdapUsers('.count($allLdapUsers).') (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($allLdapUsers);echo''; ?> | allUsers('.count($allUsers).') (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($allUsers);echo''; ?> |