AclBootstrap.php 1.15 KB
<?php

namespace App\Bootstrap;

use App\BootstrapInterface;
use App\Constants\Services;
use Phalcon\Acl;
use Phalcon\Acl\Resource;
use Phalcon\Acl\Role;
use Phalcon\Config;
use Phalcon\DiInterface;
use PhalconRest\Api;
use App\Constants\AclRoles;

class AclBootstrap implements BootstrapInterface
{
    public function run(Api $api, DiInterface $di, Config $config)
    {
        /** @var \PhalconApi\Acl\MountingEnabledAdapterInterface $acl */
        $acl = $di->get(Services::ACL);

        $unauthorizedRole   = new Role(AclRoles::UNAUTHORIZED);
        $authorizedRole     = new Role(AclRoles::AUTHORIZED);

        $acl->addRole($unauthorizedRole);
        $acl->addRole($authorizedRole);

        $administrator  = new Role(AclRoles::ADMINISTRATOR);
        $user           = new Role(AclRoles::USER);
        $editor         = new Role(AclRoles::EDITOR);
        $author         = new Role(AclRoles::AUTHOR);


        $acl->addRole($administrator, $authorizedRole);
        $acl->addRole($user, $authorizedRole);
        $acl->addRole($editor, $authorizedRole);
        $acl->addRole($author, $authorizedRole);

        $acl->mountMany($api->getCollections());
    }
}