kokjan/console/migrations/m260227_061319_add_gis_rbac...

61 lines
1.5 KiB
PHP

<?php
use yii\db\Migration;
/**
* Class m260227_061319_add_gis_rbac_role
*/
class m260227_061319_add_gis_rbac_role extends Migration
{
/**
* {@inheritdoc}
*/
public function safeUp()
{
$auth = Yii::$app->authManager;
// 1. Create the permission for the entire GIS module
$gisPermission = $auth->getPermission('/gis/*');
if (!$gisPermission) {
$gisPermission = $auth->createPermission('/gis/*');
$gisPermission->description = 'Access to all GIS module actions';
$auth->add($gisPermission);
}
// 2. Create the 'gis' role
$gisRole = $auth->getRole('gis');
if (!$gisRole) {
$gisRole = $auth->createRole('gis');
$gisRole->description = 'GIS Data Manager';
$auth->add($gisRole);
}
// 3. Assign permission to the role
if (!$auth->hasChild($gisRole, $gisPermission)) {
$auth->addChild($gisRole, $gisPermission);
}
echo "RBAC: Role 'gis' and permission '/gis/*' have been created successfully.\n";
}
/**
* {@inheritdoc}
*/
public function safeDown()
{
$auth = Yii::$app->authManager;
$gisRole = $auth->getRole('gis');
if ($gisRole) {
$auth->remove($gisRole);
}
$gisPermission = $auth->getPermission('/gis/*');
if ($gisPermission) {
$auth->remove($gisPermission);
}
return true;
}
}