public function testPermissionOverride() { $readonly = new \AJXP_Permission("r"); $writeonly = new \AJXP_Permission("w"); $readwrite = new \AJXP_Permission("rw"); $deny = new \AJXP_Permission("d"); $empty = new \AJXP_Permission(); $this->isRW($writeonly->override($readonly)); $this->isRW($readonly->override($writeonly)); $this->isRW($readwrite->override($readonly)); $this->isRW($readwrite->override($writeonly)); $this->isRW($readonly->override($readwrite)); $this->isRW($writeonly->override($readwrite)); $this->isDenied($deny->override($readonly)); $this->isDenied($deny->override($writeonly)); $this->isDenied($deny->override($readwrite)); $this->isDenied($empty->override($readonly)); $this->isDenied($empty->override($writeonly)); $this->isDenied($empty->override($readwrite)); $this->isRW($writeonly->override($readonly)); }
/** * Initialize an empty mask, or from a serializedForm. * @param array|null $serializedForm */ function __construct($serializedForm = null) { if ($serializedForm != null) { foreach ($serializedForm as $path => $permissionValue) { $path = AJXP_Utils::sanitize(AJXP_Utils::securePath($path), AJXP_SANITIZE_DIRNAME); if (!is_array($permissionValue) || $permissionValue["children"]) { continue; } $perm = new AJXP_Permission(); if ($permissionValue["read"]) { $perm->setRead(); } if ($permissionValue["write"]) { $perm->setWrite(); } if ($permissionValue["deny"]) { $perm->setDeny(); } if ($perm->isEmpty()) { continue; } $this->updateBranch($path, $perm); } } }
/** * Override this permission value with the one passed in parameter * @param AJXP_Permission $perm * @return AJXP_Permission */ function override($perm) { $newPerm = $perm->getCopy(); if ($this->denies()) { $newPerm->setDeny(); } else { if ($this->canRead()) { $newPerm->setRead(); } if ($this->canWrite()) { $newPerm->setWrite(); } } return $newPerm; }