public function isAllowed(Doozr_Acl_Service $acl, $action)
    {
        if ($this->getType() === self::TYPE_CONSUMER && $acl->getType() === self::TYPE_PROVIDER) {
            return ($acl->hasPermission($action) && $acl->grant($this->getPermissions(), $action));

        } else {
            throw new Doozr_Exception_Service(
                'Type mismatch! Only Consumer ca be allowed to access Provider.'
            );
        }
    }