|
|
@@ -43,44 +43,47 @@ class Core_AclHelper {// Helper class for Acl
|
|
|
return $exportFields;
|
|
|
}
|
|
|
|
|
|
+ public static function getAclByTypeName($typeName, $forceTblAclInit = false) {// TODO: replace getAclFromTypeName in WFS
|
|
|
+ return self::getAclByNamespace(str_replace(':', '/', $typeName), $forceTblAclInit);
|
|
|
+ }
|
|
|
public static function getAclByNamespace($namespace, $forceTblAclInit = false) {
|
|
|
- if ('http' != substr($namespace, 0, 4)) $namespace = Api_WfsNs::getBaseWfsUri() . '/' . $namespace;//Request::getHostUri() . '/' . $namespace;
|
|
|
-
|
|
|
- $baseNsUri = Api_WfsNs::getBaseWfsUri();
|
|
|
- if ("{$baseNsUri}/" == substr($namespace, 0, strlen($baseNsUri) + 1)) {
|
|
|
- $schemaNs = substr($namespace, strlen($baseNsUri) + 1);
|
|
|
- $ns = explode('/', $schemaNs);// "http://biuro.biall-net.pl/wfs/ default_db/{$nazwa_tabeli}/{$nazwa_obj}
|
|
|
- $sourceName = array_shift($ns);// remove first element - source name
|
|
|
- if ('default_db' == $sourceName || 'p5_default_db' == $sourceName) {
|
|
|
- $sourceName = 'default_db';
|
|
|
- $objName = $ns[0];
|
|
|
- if (1 == count($ns)) {
|
|
|
- $acl = User::getAcl()->getObjectAcl($sourceName, $objName);
|
|
|
- if (!$acl) throw new Exception("Could not get acl for '{$schemaNs}'");
|
|
|
- $acl->init($forceTblAclInit);
|
|
|
- return $acl;
|
|
|
- } else if (2 == count($ns)) {
|
|
|
+ if ('http' != substr($namespace, 0, 4)) $namespace = Api_WfsNs::getBaseWfsUri() . '/' . $namespace;//Request::getHostUri() . '/' . $namespace;
|
|
|
+
|
|
|
+ $baseNsUri = Api_WfsNs::getBaseWfsUri();
|
|
|
+ if ("{$baseNsUri}/" == substr($namespace, 0, strlen($baseNsUri) + 1)) {
|
|
|
+ $schemaNs = substr($namespace, strlen($baseNsUri) + 1);
|
|
|
+ $ns = explode('/', $schemaNs);// "http://biuro.biall-net.pl/wfs/ default_db/{$nazwa_tabeli}/{$nazwa_obj}
|
|
|
+ $sourceName = array_shift($ns);// remove first element - source name
|
|
|
+ if ('default_db' == $sourceName || 'p5_default_db' == $sourceName) {
|
|
|
+ $sourceName = 'default_db';
|
|
|
+ $objName = $ns[0];
|
|
|
+ if (1 == count($ns)) {
|
|
|
+ $acl = User::getAcl()->getObjectAcl($sourceName, $objName);
|
|
|
+ if (!$acl) throw new Exception("Could not get acl for '{$schemaNs}'");
|
|
|
+ $acl->init($forceTblAclInit);
|
|
|
+ return $acl;
|
|
|
+ } else if (2 == count($ns)) {
|
|
|
|
|
|
throw new Exception("TODO: default_db: '{$schemaNs}' ns:[ ".implode(", ", $ns)." ]", 501);
|
|
|
- } else throw new Exception("Nieznany namespace default_db: '{$schemaNs}'", 501);
|
|
|
- }
|
|
|
- else if ('default_objects' == $sourceName || 'SystemObjects' == $sourceName || 'p5_objects' == $sourceName) {
|
|
|
- $sourceName = 'objects';
|
|
|
- $objName = $ns[0];
|
|
|
- if (1 == count($ns)) {
|
|
|
- $acl = User::getAcl()->getObjectAcl($sourceName, $objName);
|
|
|
- if (!$acl) throw new Exception("Could not get acl for '{$schemaNs}'");
|
|
|
- $acl->init($forceTblAclInit);
|
|
|
- return $acl;
|
|
|
- } else throw new Exception("Nieznany namespace SystemObjects: '{$schemaNs}'", 501);
|
|
|
- }
|
|
|
- else if ('zasob_' == substr($sourceName, 0, 6)) {
|
|
|
- $dbName = substr($sourceName, 6);
|
|
|
- throw new Exception("TODO db[{$dbName}] namespace '{$schemaNs}'", 501);
|
|
|
- }
|
|
|
- else throw new Exception("Nieznany namespace '{$schemaNs}'", 501);
|
|
|
- }
|
|
|
- else throw new HttpException("Zasoby zewnętrzenj systemu nie są jeszcze zaimplementowane", 501);
|
|
|
+ } else throw new Exception("Nieznany namespace default_db: '{$schemaNs}'", 501);
|
|
|
+ }
|
|
|
+ else if ('default_objects' == $sourceName || 'SystemObjects' == $sourceName || 'p5_objects' == $sourceName) {
|
|
|
+ $sourceName = 'objects';
|
|
|
+ $objName = $ns[0];
|
|
|
+ if (1 == count($ns)) {
|
|
|
+ $acl = User::getAcl()->getObjectAcl($sourceName, $objName);
|
|
|
+ if (!$acl) throw new Exception("Could not get acl for '{$schemaNs}'");
|
|
|
+ $acl->init($forceTblAclInit);
|
|
|
+ return $acl;
|
|
|
+ } else throw new Exception("Nieznany namespace SystemObjects: '{$schemaNs}'", 501);
|
|
|
+ }
|
|
|
+ else if ('zasob_' == substr($sourceName, 0, 6)) {
|
|
|
+ $dbName = substr($sourceName, 6);
|
|
|
+ throw new Exception("TODO db[{$dbName}] namespace '{$schemaNs}'", 501);
|
|
|
+ }
|
|
|
+ else throw new Exception("Nieznany namespace '{$schemaNs}'", 501);
|
|
|
+ }
|
|
|
+ else throw new HttpException("Zasoby zewnętrzenj systemu nie są jeszcze zaimplementowane", 501);
|
|
|
|
|
|
throw new HttpException("TODO L.".__LINE__." ns({$namespace})", 501);
|
|
|
}
|
|
|
@@ -220,7 +223,8 @@ class Core_AclHelper {// Helper class for Acl
|
|
|
// SE/se-lib/Schema/FileStorageAcl.php:class Schema_FileStorageAcl extends Core_AclBase {
|
|
|
// SE/se-lib/Schema/KorespondencjaStorageAcl.php:class Schema_KorespondencjaStorageAcl extends Core_AclBase {
|
|
|
// SE/se-lib/Schema/TestPermsStorageAcl.php:class Schema_TestPermsStorageAcl extends Core_AclBase {
|
|
|
- $aclList[] = 'default_objects:AccessGroup';
|
|
|
+ $aclList[] = 'default_objects:AccessGroupRead';
|
|
|
+ $aclList[] = 'default_objects:AccessGroupWrite';
|
|
|
$aclList[] = 'default_objects:AccessOwner';
|
|
|
$aclList[] = 'default_objects:File';
|
|
|
$aclList[] = 'default_objects:Korespondencja';
|