61 lines
1.5 KiB
PHP
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;
|
|
}
|
|
}
|