197 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			197 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
| <?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);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Add company manager role
 | |
|      */
 | |
|     public function actionCreateCompanyManagerRole()
 | |
|     {
 | |
|         $auth = Yii::$app->getAuthManager();
 | |
| 
 | |
|         $role = $auth->createRole('company_manager');
 | |
|         $role->description = 'Менеджер компании контр агента';
 | |
|         $auth->add($role);
 | |
| 
 | |
|         $this->stdout('Done!' . PHP_EOL);
 | |
|     }
 | |
| 
 | |
|     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;
 | |
|     }
 | |
| 
 | |
|     public function actionCreateDefaultAccessRules()
 | |
|     {
 | |
|         $auth = Yii::$app->authManager;
 | |
|         $admin = $auth->getRole('admin');
 | |
|         $profileEditor = $auth->getRole('profileEditor');
 | |
| 
 | |
|         $test = $auth->createPermission('test');
 | |
|         $test->description = 'Модуль "Тестовые задания"';
 | |
|         $auth->add($test);
 | |
|         $auth->addChild($admin, $test);
 | |
| 
 | |
|         $questionnaire = $auth->createPermission('questionnaire');
 | |
|         $questionnaire->description = 'Модуль "Анкеты": Создание, редактирование анкет, категорий анкет, вопросов, проверка ответов пользователей';
 | |
|         $auth->add($questionnaire);
 | |
|         $auth->addChild($admin, $questionnaire);
 | |
| 
 | |
|         $interview = $auth->createPermission('interview');
 | |
|         $interview->description = 'Модуль "Запрос интервью"';
 | |
|         $auth->add($interview);
 | |
|         $auth->addChild($admin, $interview);
 | |
| 
 | |
|         $options = $auth->createPermission('options');
 | |
|         $options->description = 'Модуль "Опции"';
 | |
|         $auth->add($options);
 | |
|         $auth->addChild($admin, $options);
 | |
| 
 | |
|         $reports = $auth->createPermission('reports');
 | |
|         $reports->description = 'Модуль "Отчёты"';
 | |
|         $auth->add($reports);
 | |
|         $auth->addChild($admin, $reports);
 | |
| 
 | |
|         $calendar = $auth->createPermission('calendar');
 | |
|         $calendar->description = 'Модуль "Календарь ДР"';
 | |
|         $auth->add($calendar);
 | |
|         $auth->addChild($admin, $calendar);
 | |
| 
 | |
|         $notes = $auth->createPermission('notes');
 | |
|         $notes->description = 'Модуль "Заметки"';
 | |
|         $auth->add($notes);
 | |
|         $auth->addChild($admin, $notes);
 | |
| 
 | |
|         $accesses = $auth->createPermission('accesses');
 | |
|         $accesses->description = 'Модуль "Доступы"';
 | |
|         $auth->add($accesses);
 | |
|         $auth->addChild($admin, $accesses);
 | |
| 
 | |
|         $achievements = $auth->createPermission('achievements');
 | |
|         $achievements->description = 'Модуль "Достижения"';
 | |
|         $auth->add($achievements);
 | |
|         $auth->addChild($admin, $achievements);
 | |
| 
 | |
|         $holiday = $auth->createPermission('holiday');
 | |
|         $holiday->description = 'Модуль "Отпуска"';
 | |
|         $auth->add($holiday);
 | |
|         $auth->addChild($admin, $holiday);
 | |
| 
 | |
|         $balance = $auth->createPermission('balance');
 | |
|         $balance->description = 'Модуль "Баланс"';
 | |
|         $auth->add($balance);
 | |
|         $auth->addChild($admin, $balance);
 | |
| 
 | |
|         $hh = $auth->createPermission('hh');
 | |
|         $hh->description = 'Модуль "Hh.ru"';
 | |
|         $auth->add($hh);
 | |
|         $auth->addChild($admin, $hh);
 | |
| 
 | |
|         $company = $auth->createPermission('company');
 | |
|         $company->description = 'Модуль "Компании"';
 | |
|         $auth->add($company);
 | |
|         $auth->addChild($admin, $company);
 | |
| 
 | |
|         $task = $auth->createPermission('task');
 | |
|         $task->description = 'Модуль "Задачи"';
 | |
|         $auth->add($task);
 | |
|         $auth->addChild($admin, $task);
 | |
| 
 | |
|         $project = $auth->createPermission('project');
 | |
|         $project->description = 'Модуль "Проекты"';
 | |
|         $auth->add($project);
 | |
|         $auth->addChild($admin, $project);
 | |
| 
 | |
|         $documents = $auth->createPermission('document');
 | |
|         $documents->description = 'Модуль "Документы": Создание, редактирование документов, их полей и шаблонов';
 | |
|         $auth->add($documents);
 | |
|         $auth->addChild($admin, $documents);
 | |
| 
 | |
|         $employee = $auth->createPermission('employee');
 | |
|         $employee->description = 'Модуль "Сотрудники"';
 | |
|         $auth->add($employee);
 | |
|         $auth->addChild($admin, $employee);
 | |
| 
 | |
|         $card = $auth->createPermission('card');
 | |
|         $card->description = 'Модуль "Профили"';
 | |
|         $auth->add($card);
 | |
|         $auth->addChild($admin, $card);
 | |
|         $auth->addChild($profileEditor, $card);
 | |
| 
 | |
|         $settings = $auth->createPermission('settings');
 | |
|         $settings->description = 'Модуль "Настройки"';
 | |
|         $auth->add($settings);
 | |
|         $auth->addChild($admin, $settings);
 | |
| 
 | |
|         $skills = $auth->createPermission('settings/skill');
 | |
|         $skills->description = 'Навыки';
 | |
|         $auth->add($skills);
 | |
|         $auth->addChild($admin, $skills);
 | |
|         $auth->addChild($profileEditor, $skills);
 | |
|     }
 | |
| } | 
