Запускайте начальные миграции RBAC как часть обычной миграции приложений.

Я создаю продукт, основанный на расширенном шаблоне Yii2.

В рамках этого продукта и его будущих развертываний я пытаюсь автоматически создавать таблицы, связанные с авторизацией, в обычной миграции Yii2.

Например, когда конечный пользователь устанавливает продукт и запускает обычные команды миграции Yii, он должен иметь полнофункциональное управление пользователями И активную авторизацию.

Чтобы авторизация работала, на странице документации Yii2 RBAC указано, что 4 нужны таблицы (auth_*). В документации указано, что они создаются путем выполнения следующей миграции:

yii migrate --migrationPath=@yii/rbac/migrations

Я хотел бы компенсировать эти дополнительные хлопоты для конечного пользователя, запустив для него этот конкретный код миграции внутри обычной миграции, которая будет храниться в common/migrations.

Любое простое решение для этого?


person Dzhuneyt    schedule 10.03.2015    source источник


Ответы (3)


Я создал файл migrate.sh, в который поместил команды миграции, которые мне нужно выполнить. Это позволяет мне мигрировать из нескольких мест одновременно. Это довольно просто, посмотрите здесь: https://github.com/Mihai-P/yii2-app-advanced/blob/master/migrate.sh

Вместо запуска ./yii migrate/up я просто запускаю sh migrate.sh, который будет обновлять все из любого места.

Фактический смысл этого таков: вам не нужно точно придерживаться того, что дал вам Yii. Это всего лишь шаблон, на который вы можете опереться. Разветвите его, измените его, сделайте его своим.

person Mihai P.    schedule 10.03.2015
comment
Идея создания единого централизованного скрипта или файла .sh хороша. Я посмотрел на проблему под другим углом. Спасибо за решение. Помечен как принятый. - person Dzhuneyt; 11.03.2015
comment
В прошлом я создавал другие вещи, но это то, что в конечном итоге запросил парень, который занимается автоматическим развертыванием. Будучи сценарием оболочки, вы можете довольно легко выполнить развертывание. - person Mihai P.; 11.03.2015

Попробуйте добавить в console/config/main.php:

'controllerMap' => [
        'migrate' => [
            'class' => 'yii\console\controllers\MigrateController',
            'migrationPath' => [
                '@console/migrations',               
                '@yii/rbac/migrations',
            ]
        ]
    ],
person Tahiaji    schedule 19.05.2016

Другой подход (без использования файла *.sh) заключается в том, чтобы скопировать миграцию rbac_init в папку миграции:

cp vendor/yiisoft/yii2/rbac/migrations/m???????_rbac_init.php console/migrations/

Теперь при запуске php yii migrate будет включена миграция rbac_init.

person sdlins    schedule 25.12.2016