Commit 34ccee17 authored by Manfred Kutas's avatar Manfred Kutas

ZP-1357 Get authenticated and impersonated user from the backend instead

of from the request.

Released under the Affero GNU General Public License (AGPL) version 3.
parent ee2c00e6
......@@ -254,7 +254,7 @@ class ImportChangesICS implements IImportChanges {
$sharedUser = ZPush::GetAdditionalSyncFolderStore(bin2hex($this->folderid));
// if this is either a user folder or SYSTEM and no restriction is set, we don't need to check
if (($sharedUser == false || $sharedUser == 'SYSTEM') && $this->cutoffdate === false && !Request::GetImpersonatedUser()) {
if (($sharedUser == false || $sharedUser == 'SYSTEM') && $this->cutoffdate === false && !ZPush::GetBackend()->GetImpersonatedUser()) {
return true;
}
......
......@@ -1498,6 +1498,26 @@ class BackendKopano implements IBackend, ISearchProvider {
return $this->storeName;
}
/**
* Returns the impersonated user name.
*
* @access public
* @return string or false if no user is impersonated
*/
public function GetImpersonatedUser() {
return $this->impersonateUser;
}
/**
* Returns the authenticated user name.
*
* @access public
* @return string or false if no user is impersonated
*/
public function GetMainUser() {
return $this->mainUser;
}
/**
* Indicates if the Backend supports folder statistics.
*
......
......@@ -990,9 +990,10 @@ class MAPIProvider {
$folder->BackendId = bin2hex($folderprops[PR_SOURCE_KEY]);
$folderOrigin = DeviceManager::FLD_ORIGIN_USER;
if (Request::GetImpersonatedUser() && Request::GetImpersonatedUser() != Request::GetAuthUser()) {
if (ZPush::GetBackend()->GetImpersonatedUser() && ZPush::GetBackend()->GetImpersonatedUser() != ZPush::GetBackend()->GetMainUser()) {
$folderOrigin = DeviceManager::FLD_ORIGIN_IMPERSONATED;
}
ZLog::Write(LOGLEVEL_DEBUG, sprintf("origin:%s current user:'%s' impersonated user:'%s'", $folderOrigin, ZPush::GetBackend()->GetMainUser(), ZPush::GetBackend()->GetImpersonatedUser()));
$folder->serverid = ZPush::GetDeviceManager()->GetFolderIdForBackendId($folder->BackendId, true, $folderOrigin, $folderprops[PR_DISPLAY_NAME]);
if($folderprops[PR_PARENT_ENTRYID] == $storeprops[PR_IPM_SUBTREE_ENTRYID]) {
$folder->parentid = "0";
......
......@@ -368,7 +368,7 @@ class MAPIUtils {
$hexFolderid = bin2hex($folderid);
$shortId = ZPush::GetDeviceManager()->GetFolderIdForBackendId($hexFolderid);
if (Utils::GetFolderOriginFromId($shortId) == DeviceManager::FLD_ORIGIN_IMPERSONATED) {
ZLog::Write(LOGLEVEL_DEBUG, sprintf("MAPIUtils->IsMessageSharedAndPrivate(): Message is in impersonated store '%s' and marked as private", Request::GetImpersonatedUser()));
ZLog::Write(LOGLEVEL_DEBUG, sprintf("MAPIUtils->IsMessageSharedAndPrivate(): Message is in impersonated store '%s' and marked as private", ZPush::GetBackend()->GetImpersonatedUser()));
return true;
}
$sharedUser = ZPush::GetAdditionalSyncFolderStore($hexFolderid);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment