|
|
@@ -5,6 +5,7 @@ Lib::loadClass('UsersHelper');
|
|
|
Lib::loadClass('ProcesHelper');
|
|
|
Lib::loadClass('TableAcl');
|
|
|
Lib::loadClass('SchemaReader');
|
|
|
+Lib::loadClass('SchemaFactory');
|
|
|
|
|
|
class UserAcl {
|
|
|
|
|
|
@@ -156,27 +157,21 @@ class UserAcl {
|
|
|
}
|
|
|
|
|
|
public function getObjectAcl($sourceName, $objName) {// TODO: rename $sourceName to $prefix (xml namespace - @see Core_AclHelper)
|
|
|
+ if (empty($objName)) throw new Exception("Missing object name", 400);
|
|
|
if ('default_db' == $sourceName) {
|
|
|
$zasobTblInfo = ProcesHelper::getZasobTableInfoByUri("{$sourceName}/{$objName}");
|
|
|
if (!$zasobTblInfo) throw new HttpException("Object not Found '{$objName}'", 404);
|
|
|
- if ($this->hasTableAcl($zasobTblInfo->ID)) {
|
|
|
- return $this->getTableAcl($zasobTblInfo->ID);
|
|
|
- }
|
|
|
- } else if ('objects' == $sourceName && !empty($objName)) {
|
|
|
- $objClassName = "Schema_{$objName}StorageAcl";
|
|
|
- if (!Lib::tryLoadClass($objClassName)) throw new HttpException("Not implemented", 501);
|
|
|
- return new $objClassName();
|
|
|
- } else if ('default_objects' == $sourceName && !empty($objName)) {
|
|
|
- $objClassName = "Schema_{$objName}StorageAcl";
|
|
|
- if (!Lib::tryLoadClass($objClassName)) throw new HttpException("Not implemented - storage object not found '{$objName}'", 501);
|
|
|
- return new $objClassName();
|
|
|
- } else if ('default_db__x3A__' == substr($sourceName, 0, 17) && !empty($objName)) {
|
|
|
+ if (!$this->hasTableAcl($zasobTblInfo->ID)) throw new HttpException("Access Denied for '{$sourceName}/{$objName}'", 403);
|
|
|
+ return $this->getTableAcl($zasobTblInfo->ID);
|
|
|
+ } else if ('objects' == $sourceName) {
|
|
|
+ return SchemaFactory::loadDefaultObject($objName);
|
|
|
+ } else if ('default_objects' == $sourceName) {
|
|
|
+ return SchemaFactory::loadDefaultObject($objName);
|
|
|
+ } else if ('default_db__x3A__' == substr($sourceName, 0, 17)) {
|
|
|
$rootTableName = strtolower(substr($sourceName, 17));
|
|
|
- $objClassName = "Schema_DefaultDb_{$rootTableName}_{$objName}StorageAcl";// TODO: load by Factory class which build from schema file
|
|
|
- if (!Lib::tryLoadClass($objClassName)) throw new HttpException("Not implemented", 501);
|
|
|
- return new $objClassName();
|
|
|
- } else throw new HttpException("Not Implemented", 501);
|
|
|
- return false;
|
|
|
+ return SchemaFactory::loadTableObject($rootTableName, $objName);
|
|
|
+ }
|
|
|
+ throw new HttpException("Not Implemented", 501);
|
|
|
}
|
|
|
|
|
|
public function getTablesAcl() {// TODO: read from `CRM_PROCES_idx_TABLE_TO_USER_VIEW`
|