From 15a922937cb3c9810234f650682f61a4a7dc9298 Mon Sep 17 00:00:00 2001
From: Paul Mehrer
Date: Wed, 18 Dec 2024 16:18:40 +0100
Subject: [PATCH] tweak(TB AD) user sync group pwd cant change sddl fixed
---
tine20/Tinebase/User/ActiveDirectory.php | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/tine20/Tinebase/User/ActiveDirectory.php b/tine20/Tinebase/User/ActiveDirectory.php
index fa2647a5f0..1ee382f38f 100644
--- a/tine20/Tinebase/User/ActiveDirectory.php
+++ b/tine20/Tinebase/User/ActiveDirectory.php
@@ -173,6 +173,8 @@ public function addUserToSyncBackend(Tinebase_Model_FullUser $_user)
$user = $this->getUserByPropertyFromSyncBackend('accountId', $_user, 'Tinebase_Model_FullUser');
if (Tinebase_Config::getInstance()->{Tinebase_Config::USERBACKEND}->{Tinebase_Config::SYNCOPTIONS}->{Tinebase_Config::PWD_CANT_CHANGE}) {
+ $user->accountId = $_user->accountId;
+ $user->xprops()[static::class]['syncId'] = $_user->xprops()[static::class]['syncId'];
$this->updateUserInSyncBackend($user);
$user = $this->getUserByPropertyFromSyncBackend('accountId', $_user, 'Tinebase_Model_FullUser');
}
@@ -571,6 +573,8 @@ protected function _user2ldap(Tinebase_Model_FullUser $_user, array $_ldapEntry
);
if (Tinebase_Config::getInstance()->{Tinebase_Config::USERBACKEND}->{Tinebase_Config::SYNCOPTIONS}->{Tinebase_Config::PWD_CANT_CHANGE}
&& ($_ldapEntry['ntsecuritydescriptor'][0] ?? false)) {
+ if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG))
+ Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' start parsing sddl');
try {
$sddl = SDDL::fromBytes($_ldapEntry['ntsecuritydescriptor'][0]);
$foundSelf = false;
@@ -629,6 +633,8 @@ protected function _user2ldap(Tinebase_Model_FullUser $_user, array $_ldapEntry
}
$ldapData['ntsecuritydescriptor'] = $sddl->toBytes();
+ if ($_ldapEntry['ntsecuritydescriptor'][0] !== $ldapData['ntsecuritydescriptor'] && Tinebase_Core::isLogLevel(Zend_Log::DEBUG))
+ Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' changing ntsecuritydescriptor');
} catch (\Tine\SDDL_Parser\ParserException $e) {
Tinebase_Exception::log($e);
}