74 lines
2.0 KiB
PHP
74 lines
2.0 KiB
PHP
<?php
|
|
|
|
|
|
namespace console\controllers;
|
|
|
|
|
|
use common\models\User;
|
|
use Yii;
|
|
use yii\console\Controller;
|
|
|
|
class RbacController extends Controller
|
|
{
|
|
public function actionInit()
|
|
{
|
|
$auth = Yii::$app->authManager;
|
|
|
|
$secure = $auth->createPermission('secure');
|
|
$secure->description = 'Admin panel';
|
|
$auth->add($secure);
|
|
|
|
$front = $auth->createPermission('front');
|
|
$front->description = 'Frontend';
|
|
$auth->add($front);
|
|
|
|
$user = $auth->createRole('user');
|
|
$auth->add($user);
|
|
$auth->addChild($user, $front);
|
|
|
|
$admin = $auth->createRole('admin');
|
|
$auth->add($admin);
|
|
$auth->addChild($admin, $secure);
|
|
$auth->addChild($admin, $user);
|
|
|
|
$auth->assign($user, 2);
|
|
$auth->assign($admin, 1);
|
|
}
|
|
|
|
public function actionCreateEditor()
|
|
{
|
|
$auth = Yii::$app->authManager;
|
|
|
|
$confidentialInformation = $auth->createPermission('confidential_information');
|
|
$confidentialInformation->description = 'Возможность видеть конфиденциальную информацию';
|
|
$auth->add($confidentialInformation);
|
|
|
|
$secure = $auth->getPermission('secure');
|
|
|
|
$profileEditor = $auth->createRole('profileEditor');
|
|
$auth->add($profileEditor);
|
|
$auth->addChild($profileEditor, $secure);
|
|
|
|
$admin = $auth->getRole('admin');
|
|
$auth->addChild($admin, $confidentialInformation);
|
|
$auth->addChild($admin, $profileEditor);
|
|
|
|
$profileEditorUser = $this->createEditor();
|
|
$auth->assign($profileEditor, $profileEditorUser->id);
|
|
|
|
}
|
|
|
|
private function createEditor()
|
|
{
|
|
if (!($user = User::findByUsername('profile_editor'))) {
|
|
$user = new User();
|
|
$user->username = 'profile_editor';
|
|
$user->email = 'profile_editor@itguild.info';
|
|
$user->setPassword('0023edsaqw');
|
|
$user->generateAuthKey();
|
|
$user->save(false);
|
|
}
|
|
|
|
return $user;
|
|
}
|
|
} |