|
|
@@ -6,7 +6,7 @@ class UsersLdapHelper {
|
|
|
public static function getUser($userName, $allAttrs = false) {
|
|
|
$ldapUsers = array();
|
|
|
|
|
|
- $fetchAttrs = array('uid', 'apple-generateduid', 'givenName', 'uidNumber', 'cn', 'mail');// (givenName, sn) = cn
|
|
|
+ $attrMap = array('uid', 'apple-generateduid', 'givenName', 'uidNumber', 'cn', 'mail');// (givenName, sn) = cn
|
|
|
|
|
|
Lib::loadClass('LDAP');
|
|
|
$ldap = LDAP::getInstance();
|
|
|
@@ -30,7 +30,7 @@ class UsersLdapHelper {
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
- foreach ($fetchAttrs as $vAttrName) {
|
|
|
+ foreach ($attrMap as $vAttrName) {
|
|
|
$vAttrVal = V::get($vAttrName, '', $attrs);
|
|
|
if (is_array($vAttrVal) && !empty($vAttrVal)) {
|
|
|
$userObj->{$vAttrName} = $vAttrVal[0];
|
|
|
@@ -49,7 +49,7 @@ class UsersLdapHelper {
|
|
|
public static function getUsersAll() {
|
|
|
$allLdapUsers = array();
|
|
|
|
|
|
- $fetchAttrs = array('uid', 'apple-generateduid', 'givenName', 'uidNumber', 'cn', 'mail');// (givenName, sn) = cn
|
|
|
+ $attrMap = array('uid', 'apple-generateduid', 'givenName', 'uidNumber', 'cn', 'mail');// (givenName, sn) = cn
|
|
|
|
|
|
Lib::loadClass('LDAP');
|
|
|
$ldap = LDAP::getInstance();
|
|
|
@@ -61,7 +61,7 @@ class UsersLdapHelper {
|
|
|
while ($entry) {
|
|
|
$attrs = $ldap->get_attributes($entry);
|
|
|
$userObj = new stdClass();
|
|
|
- foreach ($fetchAttrs as $vAttrName) {
|
|
|
+ foreach ($attrMap as $vAttrName) {
|
|
|
$vAttrVal = V::get($vAttrName, '', $attrs);
|
|
|
if (is_array($vAttrVal) && !empty($vAttrVal)) {
|
|
|
$userObj->{$vAttrName} = $vAttrVal[0];
|
|
|
@@ -79,7 +79,7 @@ class UsersLdapHelper {
|
|
|
public static function getUserGroups($userName, $authLDAPSubGroupDepth = 3) {
|
|
|
$userLdapGroups = array();
|
|
|
|
|
|
- $fetchAttrs = array('apple-generateduid'=>'appleUID', 'gidNumber'=>'gidNumber', 'cn'=>'cn');// (givenName, sn) = cn
|
|
|
+ $attrMap = array('apple-generateduid'=>'appleUID', 'gidNumber'=>'gidNumber', 'cn'=>'cn');// (givenName, sn) = cn
|
|
|
|
|
|
Lib::loadClass('LDAP');
|
|
|
$ldap = LDAP::getInstance();
|
|
|
@@ -114,7 +114,7 @@ class UsersLdapHelper {
|
|
|
if(V::get('DBG_L', '', $_GET) > 0){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">user('.$userName.') (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($attrs);echo'</pre>';}
|
|
|
|
|
|
$groupObj = new stdClass();
|
|
|
- foreach ($fetchAttrs as $kAttrName => $vField) {
|
|
|
+ foreach ($attrMap as $kAttrName => $vField) {
|
|
|
$vAttrVal = V::get($kAttrName, '', $attrs);
|
|
|
if (is_array($vAttrVal) && !empty($vAttrVal)) {
|
|
|
$groupObj->{$vField} = $vAttrVal[0];
|
|
|
@@ -151,9 +151,9 @@ class UsersLdapHelper {
|
|
|
$allLdapGroups = array();
|
|
|
if (empty($appleUids)) return $allLdapGroups;
|
|
|
|
|
|
- $fetchAttrs = array('apple-generateduid'=>'appleUID', 'gidNumber'=>'gidNumber', 'cn'=>'cn');// (givenName, sn) = cn
|
|
|
- $fetchAttrs['apple-group-realname'] = 'realName';
|
|
|
- $fetchAttrs['apple-group-nestedgroup'] = 'nestedGroups';
|
|
|
+ $attrMap = array('apple-generateduid'=>'appleUID', 'gidNumber'=>'gidNumber', 'cn'=>'cn');// (givenName, sn) = cn
|
|
|
+ $attrMap['apple-group-realname'] = 'realName';
|
|
|
+ $attrMap['apple-group-nestedgroup'] = 'nestedGroups';
|
|
|
|
|
|
Lib::loadClass('LDAP');
|
|
|
$ldap = LDAP::getInstance();
|
|
|
@@ -172,7 +172,7 @@ class UsersLdapHelper {
|
|
|
if ($allAttrs) {
|
|
|
for ($i = 0; $i < $attrs['count']; $i++) {
|
|
|
$vAttrName = $attrs[$i];
|
|
|
- $vFldName = V::get($vAttrName, $vAttrName, $fetchAttrs);
|
|
|
+ $vFldName = V::get($vAttrName, $vAttrName, $attrMap);
|
|
|
$vAttrVal = $attrs[$vAttrName];
|
|
|
if (is_array($vAttrVal) && !empty($vAttrVal)) {
|
|
|
if ($vAttrVal['count'] > 1) {
|
|
|
@@ -186,7 +186,7 @@ class UsersLdapHelper {
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
- foreach ($fetchAttrs as $kAttrName => $vFldName) {
|
|
|
+ foreach ($attrMap as $kAttrName => $vFldName) {
|
|
|
$vAttrVal = V::get($kAttrName, '', $attrs);
|
|
|
if (is_array($vAttrVal) && !empty($vAttrVal)) {
|
|
|
if ($vAttrVal['count'] > 1) {
|
|
|
@@ -215,12 +215,78 @@ class UsersLdapHelper {
|
|
|
return $allLdapGroups;
|
|
|
}
|
|
|
|
|
|
+ public static function getParentGroupsByAppleUID($appleUid, $allAttrs = false) {
|
|
|
+ $allLdapGroups = array();
|
|
|
+ if (!$appleUid) return $allLdapGroups;
|
|
|
+
|
|
|
+ $attrMap = array('apple-generateduid'=>'appleUID', 'gidNumber'=>'gidNumber', 'cn'=>'cn');// (givenName, sn) = cn
|
|
|
+ $attrMap['apple-group-realname'] = 'realName';
|
|
|
+ $attrMap['apple-group-nestedgroup'] = 'nestedGroups';
|
|
|
+
|
|
|
+ Lib::loadClass('LDAP');
|
|
|
+ $ldap = LDAP::getInstance();
|
|
|
+
|
|
|
+ $filters = array();
|
|
|
+ $filter = "(&(objectClass=apple-group)(apple-group-nestedgroup={$appleUid}))";
|
|
|
+ $attributes = array();
|
|
|
+ $res = $ldap->search($filter, 'cn=groups', $attributes);
|
|
|
+ $entry = $ldap->first_entry($res);
|
|
|
+ while ($entry) {
|
|
|
+ $attrs = $ldap->get_attributes($entry);
|
|
|
+
|
|
|
+ $groupObj = new stdClass();
|
|
|
+
|
|
|
+ if ($allAttrs) {
|
|
|
+ for ($i = 0; $i < $attrs['count']; $i++) {
|
|
|
+ $vAttrName = $attrs[$i];
|
|
|
+ $vFldName = V::get($vAttrName, $vAttrName, $attrMap);
|
|
|
+ $vAttrVal = $attrs[$vAttrName];
|
|
|
+ if (is_array($vAttrVal) && !empty($vAttrVal)) {
|
|
|
+ if ($vAttrVal['count'] > 1) {
|
|
|
+ $groupObj->{$vFldName} = array();
|
|
|
+ for ($j = 0; $j < $vAttrVal['count']; $j++) {
|
|
|
+ $groupObj->{$vFldName}[] = $vAttrVal[$j];
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ $groupObj->{$vFldName} = $vAttrVal[0];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ foreach ($attrMap as $kAttrName => $vFldName) {
|
|
|
+ $vAttrVal = V::get($kAttrName, '', $attrs);
|
|
|
+ if (is_array($vAttrVal) && !empty($vAttrVal)) {
|
|
|
+ if ($vAttrVal['count'] > 1) {
|
|
|
+ $groupObj->{$vFldName} = array();
|
|
|
+ for ($j = 0; $j < $vAttrVal['count']; $j++) {
|
|
|
+ $groupObj->{$vFldName}[] = $vAttrVal[$j];
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ $groupObj->{$vFldName} = $vAttrVal[0];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($groupObj->cn && $groupObj->appleUID) {
|
|
|
+ $allLdapGroups[$groupObj->appleUID] = $groupObj;
|
|
|
+ } else {
|
|
|
+ echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">Error: brak cn lub apple-generateduid (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r(array('attrs'=>$attrs, 'groupObj'=>$groupObj));echo'</pre>';
|
|
|
+ }
|
|
|
+
|
|
|
+ $entry = $ldap->next_entry($entry);
|
|
|
+ }
|
|
|
+ $ldap->free_result($res);
|
|
|
+
|
|
|
+ return $allLdapGroups;
|
|
|
+ }
|
|
|
+
|
|
|
public static function getGroupsByID($groupID, $allAttrs = false) {
|
|
|
$allLdapGroups = array();
|
|
|
|
|
|
- $fetchAttrs = array('apple-generateduid'=>'appleUID', 'gidNumber'=>'gidNumber', 'cn'=>'cn');// (givenName, sn) = cn
|
|
|
- $fetchAttrs['apple-group-realname'] = 'realName';
|
|
|
- $fetchAttrs['apple-group-nestedgroup'] = 'nestedGroups';
|
|
|
+ $attrMap = array('apple-generateduid'=>'appleUID', 'gidNumber'=>'gidNumber', 'cn'=>'cn');// (givenName, sn) = cn
|
|
|
+ $attrMap['apple-group-realname'] = 'realName';
|
|
|
+ $attrMap['apple-group-nestedgroup'] = 'nestedGroups';
|
|
|
|
|
|
Lib::loadClass('LDAP');
|
|
|
$ldap = LDAP::getInstance();
|
|
|
@@ -237,7 +303,7 @@ class UsersLdapHelper {
|
|
|
if ($allAttrs) {
|
|
|
for ($i = 0; $i < $attrs['count']; $i++) {
|
|
|
$vAttrName = $attrs[$i];
|
|
|
- $vFldName = V::get($vAttrName, $vAttrName, $fetchAttrs);
|
|
|
+ $vFldName = V::get($vAttrName, $vAttrName, $attrMap);
|
|
|
$vAttrVal = $attrs[$vAttrName];
|
|
|
if (is_array($vAttrVal) && !empty($vAttrVal)) {
|
|
|
if ($vAttrVal['count'] > 1) {
|
|
|
@@ -251,7 +317,7 @@ class UsersLdapHelper {
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
- foreach ($fetchAttrs as $kAttrName => $vFldName) {
|
|
|
+ foreach ($attrMap as $kAttrName => $vFldName) {
|
|
|
$vAttrVal = V::get($kAttrName, '', $attrs);
|
|
|
if (is_array($vAttrVal) && !empty($vAttrVal)) {
|
|
|
if ($vAttrVal['count'] > 1) {
|
|
|
@@ -283,9 +349,9 @@ class UsersLdapHelper {
|
|
|
public static function getGroupsAll($allAttrs = false) {
|
|
|
$allLdapGroups = array();
|
|
|
|
|
|
- $fetchAttrs = array('apple-generateduid'=>'appleUID', 'gidNumber'=>'gidNumber', 'cn'=>'cn');// (givenName, sn) = cn
|
|
|
- $fetchAttrs['apple-group-realname'] = 'realName';
|
|
|
- $fetchAttrs['apple-group-nestedgroup'] = 'nestedGroups';
|
|
|
+ $attrMap = array('apple-generateduid'=>'appleUID', 'gidNumber'=>'gidNumber', 'cn'=>'cn');// (givenName, sn) = cn
|
|
|
+ $attrMap['apple-group-realname'] = 'realName';
|
|
|
+ $attrMap['apple-group-nestedgroup'] = 'nestedGroups';
|
|
|
|
|
|
Lib::loadClass('LDAP');
|
|
|
$ldap = LDAP::getInstance();
|
|
|
@@ -302,7 +368,7 @@ class UsersLdapHelper {
|
|
|
if ($allAttrs) {
|
|
|
for ($i = 0; $i < $attrs['count']; $i++) {
|
|
|
$vAttrName = $attrs[$i];
|
|
|
- $vFldName = V::get($vAttrName, $vAttrName, $fetchAttrs);
|
|
|
+ $vFldName = V::get($vAttrName, $vAttrName, $attrMap);
|
|
|
$vAttrVal = $attrs[$vAttrName];
|
|
|
if (is_array($vAttrVal) && !empty($vAttrVal)) {
|
|
|
if ($vAttrVal['count'] > 1) {
|
|
|
@@ -316,7 +382,7 @@ class UsersLdapHelper {
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
- foreach ($fetchAttrs as $kAttrName => $vFldName) {
|
|
|
+ foreach ($attrMap as $kAttrName => $vFldName) {
|
|
|
$vAttrVal = V::get($kAttrName, '', $attrs);
|
|
|
if (is_array($vAttrVal) && !empty($vAttrVal)) {
|
|
|
if ($vAttrVal['count'] > 1) {
|