yii2 RBAC Manager + MongoD. Логика работы, объяснение

Общая сведения

Документация по методам аутентификации в yii2 доступна здесь, в частности RBAC.

Общая схема работы RBAC

  • Пользователям даются и роли и разрешения
  • Каждой роли можно сопоставить несколько разрешений
  • А к разрению (permission) и к роли можно прикрепить правило (для более детальной проверки, например в правиле можно смотреть является ли пользователь создателем сущности)

Конкретные модули

Устанавливаем mdmsoft/yii2-admin и yiisoft/yii2-mongodb:

composer require mdmsoft/yii2-admin "~2.0"
composer require --prefer-dist yiisoft/yii2-mongodb

Настройка описана здесь:
https://github.com/mdmsoft/yii2-admin/blob/master/docs/guide/configuration.md

В файле config/web.php указываем

...
'components' => [
...
    'authManager' => [
        'class' => 'yii\mongodb\rbac\MongoDbManager',
    ],
]

О том, как создавать роли, разрешения, правила и назначения, читайте здесь
http://www.yiiframework.com/doc-2.0/guide-security-authorization.html.

Чтобы создать rule, создаём класс нашего rule в пространстве имён app\rbac\rules,
а сам php файл этого rule помещаем в директорию app/rbac/rules:

<?php
namespace app\rbac\rules;

use yii\rbac\Rule;
use yii\rbac\Item;
 
class NotOnlyRule extends Rule
{
    public $name = 'NotOnlyRule';
 
    /**
     * @param string|integer $user   the user ID.
     * @param Item           $item   the role or permission that this rule is associated with
     * @param array          $params parameters passed to ManagerInterface::checkAccess().
     *
     * @return boolean a value indicating whether the rule permits the role or permission it is associated with.
     */
    public function execute($user, $item, $params)
    {
        // ......
        return $result;
    }
}

При создании правила требуется использовать полный путь в пространстве имён.

Логика связи пользователя и правила (user - permission -- rule)

Чтобы правило работало, к пользователю прикрепить разрешение (permission), а уже к разрешению прикрепить правило.

Key Words for FKN + antitotal forum (CS VSU):

vedro-compota's picture

просьба дополнить миграциями...если они нужны.

_____________
матфак вгу и остальная классика =)