|
|
@@ -39,7 +39,7 @@ class SyncUsers {
|
|
|
if (!$usrTo) throw new Exception("Nie udało się utworzyć użytkownika '{$usrLogin}' w bazie LDAP");
|
|
|
$this->syncExistingUser($usrLogin, $usrFrom, $usrTo);
|
|
|
}
|
|
|
- else {// $usrFrom && $usrTo
|
|
|
+ else if (true !== $usrFromDisabled) {
|
|
|
$this->syncExistingUser($usrLogin, $usrFrom, $usrTo);
|
|
|
}
|
|
|
|
|
|
@@ -76,16 +76,31 @@ class SyncUsers {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- if ($this->hasErrors()) {
|
|
|
- return false;
|
|
|
+ {// clean up members by apple-generateduid
|
|
|
+ $groupsTo = $this->_toStorage->getGroupsByUserUid($usrLogin);
|
|
|
+ $groupsTodo = $this->getCleanupSyncUserGroupsByUidTodoList($usrLogin);
|
|
|
+ DBG::_('DBG_SU', '>0', "groupsTodo Cleanup member uid's usrFromDisabeld(" . (($usrFromDisabled)? 'true' : 'false') . ")", $groupsTodo, __CLASS__, __FUNCTION__, __LINE__);
|
|
|
+
|
|
|
+ if (!empty($groupsTodo)) {
|
|
|
+ foreach ($groupsTodo as $kGroupID => $vBool) {
|
|
|
+ if ($vBool) {
|
|
|
+ //$syncTodoList[] = "Dodaj '{$usrLogin}' do grupy {$kGroupID}";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ $this->_toStorage->removeUserUidFromGroup($usrLogin, $groupsTo[$kGroupID]);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- return true;
|
|
|
}
|
|
|
|
|
|
$this->_fromStorage->setSyncUserDate($usrLogin);
|
|
|
$this->_toStorage->setSyncUserDate($usrLogin);
|
|
|
|
|
|
+ if ($this->hasErrors()) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
@@ -119,8 +134,8 @@ class SyncUsers {
|
|
|
$syncTodoList = array();
|
|
|
$usrFrom = $this->_fromStorage->getUser($usrLogin);
|
|
|
$usrTo = $this->_toStorage->getUser($usrLogin);
|
|
|
- DBG::_('DBG_SU', true, 'usrFrom', $usrFrom, __CLASS__, __FUNCTION__, __LINE__);
|
|
|
- DBG::_('DBG_SU', true, 'usrTo', $usrTo, __CLASS__, __FUNCTION__, __LINE__);
|
|
|
+ DBG::_('DBG_SU', true, 'usrFrom', ($usrFrom)? $usrFrom->exportData() : null, __CLASS__, __FUNCTION__, __LINE__);
|
|
|
+ DBG::_('DBG_SU', true, 'usrTo', ($usrTo)? $usrTo->exportData() : null, __CLASS__, __FUNCTION__, __LINE__);
|
|
|
|
|
|
if (!$usrFrom) {
|
|
|
$syncTodoList[] = "Użytkownik {$usrLogin} nie istnieje w bazie danych";
|
|
|
@@ -136,8 +151,8 @@ class SyncUsers {
|
|
|
$syncDisabled = false;
|
|
|
$syncTodoList[] = "Utwórz użytkownika '{$usrLogin}' w bazie LDAP";
|
|
|
}
|
|
|
- else {// $usrFrom && $usrTo
|
|
|
-
|
|
|
+ else if (true !== $usrFromDisabled) {
|
|
|
+ //throw new Exception("Użytkownik '{$usrLogin}' jest zablokowany bazie danych, więc nie ma potrzeby aktualizacji jego danych w bazie LDAP.");
|
|
|
$updateData = array();
|
|
|
if ($usrFrom->name != $usrTo->name) $updateData['name'] = $usrFrom->name;
|
|
|
if ($usrFrom->email != $usrTo->email) $updateData['email'] = $usrFrom->email;
|
|
|
@@ -152,8 +167,8 @@ class SyncUsers {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- $usrToDisabeld = $this->_toStorage->isDisabled($usrTo);
|
|
|
- if ($syncDisabled) {
|
|
|
+ if ($syncDisabled && $usrTo && $usrFrom) {
|
|
|
+ $usrToDisabeld = $this->_toStorage->isDisabled($usrTo);
|
|
|
|
|
|
if ($usrFromDisabled === null || $usrToDisabeld === null) {
|
|
|
$syncTodoList[] = "Status blokady '{$usrLogin}' nieznany w bazie danych lub LDAP";
|
|
|
@@ -180,6 +195,22 @@ class SyncUsers {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ {// clean up members by apple-generateduid
|
|
|
+ $groupsTodo = $this->getCleanupSyncUserGroupsByUidTodoList($usrLogin);
|
|
|
+ DBG::_('DBG_SU', '>0', "groupsTodo Cleanup member uid's usrFromDisabeld(" . (($usrFromDisabled)? 'true' : 'false') . ")", $groupsTodo, __CLASS__, __FUNCTION__, __LINE__);
|
|
|
+
|
|
|
+ if (!empty($groupsTodo)) {
|
|
|
+ foreach ($groupsTodo as $kGroupID => $vBool) {
|
|
|
+ if ($vBool) {
|
|
|
+ //$syncTodoList[] = "Dodaj '{$usrLogin}' do grupy {$kGroupID}";
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ $syncTodoList[] = "Usuń `uid` usera '{$usrLogin}' z grupy {$kGroupID}";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
return $syncTodoList;
|
|
|
}
|
|
|
|
|
|
@@ -212,6 +243,33 @@ class SyncUsers {
|
|
|
return $groupsTodo;
|
|
|
}
|
|
|
|
|
|
+ public function getCleanupSyncUserGroupsByUidTodoList($usrLogin) {
|
|
|
+ $groupsTodo = array();// `guid` => true (add), false (remove)
|
|
|
+ $groupsTo = $this->_toStorage->getGroupsByUserUid($usrLogin);
|
|
|
+ DBG::_('DBG_SU', '>0', "CleanupAppleMemberUidTodoList user groups by apple-generateduid({$usrAppleUid})", $userGroupsLdap, __CLASS__, __FUNCTION__, __LINE__);
|
|
|
+
|
|
|
+ $usrFrom = $this->_fromStorage->getUser($usrLogin);
|
|
|
+ $usrFromDisabled = $this->_fromStorage->isDisabled($usrFrom);
|
|
|
+ $groupsFrom = $this->_fromStorage->getUserGroups($usrLogin);
|
|
|
+ foreach ($groupsTo as $kUid => $vName) {
|
|
|
+ $groupsTodo[$kUid] = false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (true === $usrFromDisabled) {
|
|
|
+ // remove all groups
|
|
|
+ } else {
|
|
|
+ foreach ($groupsFrom as $kUid => $vGroup) {
|
|
|
+ if (isset($groupsTodo[$kUid])) {
|
|
|
+ unset($groupsTodo[$kUid]);
|
|
|
+ } else {
|
|
|
+ $groupsTodo[$kUid] = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ DBG::_('DBG_SU', '>0', "CleanupAppleMemberUidTodoList groupsTodo apple-generateduid({$usrAppleUid})", $groupsTodo, __CLASS__, __FUNCTION__, __LINE__);
|
|
|
+ return $groupsTodo;
|
|
|
+ }
|
|
|
+
|
|
|
public function getSyncGroupTodoList($idGroup, $syncNestedGroups = false) {
|
|
|
$syncTodoList = array();
|
|
|
$groupFrom = $this->_fromStorage->getGroup($idGroup);
|