Просмотр исходного кода

fetch object TableAcl namespace at login to handle remote db tables

Piotr Labudda 7 лет назад
Родитель
Сommit
cef8f57834
2 измененных файлов с 8 добавлено и 1 удалено
  1. 1 0
      SE/se-lib/Schema/UserObjectStorageAcl.php
  2. 7 1
      SE/se-lib/UserAcl.php

+ 1 - 0
SE/se-lib/Schema/UserObjectStorageAcl.php

@@ -192,6 +192,7 @@ class Schema_UserObjectStorageAcl extends Core_AclSimpleSchemaBase {
 					, t.label
 					, t.opis
 					, t._rootTableName
+					, (select o.namespace from `CRM_#CACHE_ACL_OBJECT` o where o.idZasob = t.ID_TABLE) as namespace
 			from (
 				select c.ID_TABLE
 						, c.db

+ 7 - 1
SE/se-lib/UserAcl.php

@@ -346,7 +346,13 @@ class UserAcl {
 			]);
 		}
 
-		$userAccessForTables = $userObject->getItems();
+		$userAccessForTables = array_map(function ($tableConfig) {
+			$sourceNs = substr($tableConfig['namespace'], 0, strpos($tableConfig['namespace'], '/'));
+
+			return array_merge($tableConfig, [
+				'_sourceNamespace' => $sourceNs,
+			]);
+		}, $userObject->getItems());
 		DBG::simpleLog('auth', "UserAcl::fetchPerms fetched " . count($userAccessForTables) . " tables");
 		DBG::_('DBG_SCH', '1', "userAccessForTables", $userAccessForTables, __CLASS__, __FUNCTION__, __LINE__ );
 		foreach ($userAccessForTables as $tableConfig) {