承接 zfstarter/zfs-rbac 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

zfstarter/zfs-rbac

Composer 安装命令:

composer require zfstarter/zfs-rbac

包简介

README 文档

README

Обертка на Zf2\Rbac для удобного использования в ZF2/ZFStarter проектах

Подключение

Сервис оформлен в модуль, и потому вам остается лишь добавить его имя в список модулей на подключение в application.config.php:

'modules' => array(
        'ZFS\Rbac', // <--
        'Application'
    ),

Настройка через события

Модуль содержит сервис ZFS\Rbac\Rbac, помощник представления isGranted и плагин контроллера isGranted.

В процессе работы сервиса, он выбрасывает 2 события:

  • EVENT_GET_CONFIG (ZFS\Rbac\Service\Event\GetConfig)
  • EVENT_GET_USER_ROLES (ZFS\Rbac\Service\Event\GetUserRoles)

EVENT_GET_CONFIG ожидает от программной среды конфигурацию ролей и их разрешений. Предоставить ее можно подписавшись на событие:

$this->getEventManager()->getSharedManager()->attach(
    ZFS\Rbac\Rbac::EVENT_MANAGER_IDENTIFIER,
    ZFS\Rbac\Rbac::EVENT_GET_CONFIG,
    function () {
        return array(
            'user' => array(
                'permissions' => array(
                    'login'
                )
            ),
            'users_manager' => array(
                'permissions' => array(
                    'modify_users'
                )
            ),
            'admin' => array(
                'children' => array(
                    'users_manager'
                )
            )
        );
    }
);

Обработчик должен вернуть массив из ролей (ключ) и его настройкой (значение). Среди настроек могут быть массив из самих разрешений (ключ permissions) и массив из дочерних ролей (ключ children).

EVENT_GET_USER_ROLES ожидает список ролей текущего пользователя. Предоставить его можно подписавшись на событие:

$this->getEventManager()->getSharedManager()->attach(
    ZFS\Rbac\Rbac::EVENT_MANAGER_IDENTIFIER,
    ZFS\Rbac\Rbac::EVENT_GET_USER_ROLES,
    function () {
        return array('admin');
    }
);

Оба события могут обрабатывать несколько обработчиков дополняя массивы предыдущих. Таким образом, каждый модуль может модифицировать конфигурацию удобным для него способом: выбирая данные из БД, из конфигурации проекта или отдельно лежащего файла с настройками.

Примеры использования:

  • в контроллере:
class IndexController extends AbstractActionController
{
    public function indexAction()
    {
        if (!$this->isGranted('index_action')) {
            return $this->notFoundAction();
        }
        /* ... */
    }
}
  • в шаблоне представления:
<?php if ($this->isGranted('buy')): ?>
    <a href="/buy">Buy</a>
<?php else: ?>
    <a href="/login">Login to buy</a>
<?php endif; ?>
  • где угодно, где есть доступ к ServiceLocator:
$this->getServiceLocator()->get('ZFS\Rbac\Rbac')->isGranted('some_permission');

Во всех трех примерах метод isGranted принимает первым аргументом строку с именем разрешения или массив имён разрешения, а вторым аргументом булевый флаг, указывающий на надобность повторного вызова события EVENT_GET_USER_ROLES. По умолчанию, стоит в false.

Лицензия

MIT

统计信息

  • 总下载量: 71
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 2
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2014-07-24

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固