Acl\Adapter\IniAcl::check PHP Метод

check() публичный метод

Main ACL check function. Checks to see if the ARO (access request object) has access to the ACO (access control object).Looks at the acl.ini file for permissions (see instructions in /config/acl.ini).
public check ( string $aro, string $aco, string $action = null ) : boolean
$aro string ARO
$aco string ACO
$action string Action
Результат boolean Success
    public function check($aro, $aco, $action = null)
    {
        $aclConfig = $this->options;
        if (is_array($aro)) {
            $aro = Hash::get($aro, $this->userPath);
        }
        if (isset($aclConfig[$aro]['deny'])) {
            $userDenies = $this->arrayTrim(explode(",", $aclConfig[$aro]['deny']));
            if (array_search($aco, $userDenies)) {
                return false;
            }
        }
        if (isset($aclConfig[$aro]['allow'])) {
            $userAllows = $this->arrayTrim(explode(",", $aclConfig[$aro]['allow']));
            if (array_search($aco, $userAllows)) {
                return true;
            }
        }
        if (isset($aclConfig[$aro]['groups'])) {
            $userGroups = $this->arrayTrim(explode(",", $aclConfig[$aro]['groups']));
            foreach ($userGroups as $group) {
                if (array_key_exists($group, $aclConfig)) {
                    if (isset($aclConfig[$group]['deny'])) {
                        $groupDenies = $this->arrayTrim(explode(",", $aclConfig[$group]['deny']));
                        if (array_search($aco, $groupDenies)) {
                            return false;
                        }
                    }
                    if (isset($aclConfig[$group]['allow'])) {
                        $groupAllows = $this->arrayTrim(explode(",", $aclConfig[$group]['allow']));
                        if (array_search($aco, $groupAllows)) {
                            return true;
                        }
                    }
                }
            }
        }
        return false;
    }

Usage Example

Пример #1
0
 /**
  * check should accept a user array.
  *
  * @return void
  */
 public function testCheckArray()
 {
     $iniFile = TEST_APP . 'TestApp/Config/acl.ini.php';
     $Ini = new IniAcl();
     $Ini->config = $Ini->readConfigFile($iniFile);
     $Ini->userPath = 'User.username';
     $user = array('User' => array('username' => 'admin'));
     $this->assertTrue($Ini->check($user, 'posts'));
 }