Модуль rbac (роли и разрешения)

Модуль отвечает за авторизацию: роли, разрешения (permissions), ранговую иерархию и контроль доступа к маршрутам API через RbacMiddleware. Глобальные роли хранятся в ядре (roles, user_roles), а разрешения — в таблицах модуля (permissions, role_permissions).

Документы модуля

ДокументСодержание
architecture.mdСлои, ключевые классы, модель разрешений
middleware.mdRbacMiddleware: public_routes, permission_rules, субъект-резолверы
permissions.mdТаблица permissions, роли, ранги, политика назначения
configuration.mdПараметры модуля (params.php), DI, routing
Также: security ядра для YiiIdentity

Структура модуля

modules/rbac/
├── Module.php
├── application/
│   ├── dto/            # PermissionDto
│   ├── port/           # IAuthorizationService, IPermissionRepository, IRoleAssignmentPolicy, ISubjectResolver
│   └── service/        # AuthorizationService
├── config/
│   ├── di.php
│   ├── params.php      # public_routes, permission_rules, role_ranks
│   └── routing.php     # rbac/permissions, rbac/roles/<id>/permissions
├── domain/
│   └── valueObject/    # Permission
├── infrastructure/
│   ├── migrations/     # permissions, role_permissions (+seed)
│   └── repository/     # DbPermissionRepository, DbRoleAssignmentPolicy, DbSubjectResolver
└── presentation/
    ├── controller/     # PermissionController, RolePermissionController
    └── middleware/     # RbacMiddleware

Ключевые классы

КлассРоль
RbacMiddlewareПроверяет каждый запрос по правилам (после PassportAuth)
AuthorizationServiceЛогика проверки разрешения с контекстом (self/any/owner)
DbPermissionRepositoryЧитает permissions и связи роль-разрешение
DbRoleAssignmentPolicyПолитика: можно ли назначить роль (ранговая иерархия)
DbSubjectResolverОпределяет владельца ресурса (для owner-правил)
PermissionVO разрешения (код)
PermissionDtoDTO разрешения

Краткая модель

graph LR
    R[Роль user/admin] -->|имеет| P[Разрешения]
    P -->|код| M[RbacMiddleware: permission_rules]
    M -->|метод+паттерн маршрута| RQ[Запрос]

Взаимодействие

Детали: middleware.md, permissions.md, configuration.md.