Acl\Adapter\IniAcl::check PHP Méthode

check() public méthode

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
Résultat 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

Exemple #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'));
 }