Реализовать доступ к модулю в зависимости от роли в Yii2

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
MarkL
Сообщения: 31
Зарегистрирован: 2017.07.05, 20:37

Реализовать доступ к модулю в зависимости от роли в Yii2

Сообщение MarkL » 2020.01.18, 17:21

Дано:
Есть два модуля: worker и admin, в которых распределен функционал в зависимости от роли.

Задача:
Реализовать разделения доступа к модулям в зависимости от роли.
К действиям модуля "admin" получают пользователи с ролью "admin", к действиям "worker" все авторизованные пользователи.

Моя реализация:
Попробовал реализовать самостоятельно, но столкнулся с проблемой.
Чтобы для каждого контроллера не прописывать настройки доступа в behaviors(), решил определить их на уровне настроек модуля. Выставил следующие настройки в методе init() для модулей:

Admin(\app\modules\admin\Module):

Код: Выделить всё

Yii::configure(Yii::$app, [
	'components' => [
		'as access' => [
			'class' => 'yii\filters\AccessControl',
			'rules' => [
				[
					'allow' => true,
					'roles' => [Roles::ROLE_ADMIN],
				],
			],
		],
	]
]);

Worker(\app\modules\worker\Module)

Код: Выделить всё

Yii::configure(Yii::$app, [
	'components' => [
		'as access' => [
			'class' => 'yii\filters\AccessControl',
			'rules' => [
				[
					'allow' => true,
					'roles' => ['@'],
				],
			],
		],
	]]
);

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

yiiliveext
Сообщения: 867
Зарегистрирован: 2019.08.13, 01:49

Re: Реализовать доступ к модулю в зависимости от роли в Yii2

Сообщение yiiliveext » 2020.01.18, 23:15

AccessControl в модуле нужно прописывать.

MarkL
Сообщения: 31
Зарегистрирован: 2017.07.05, 20:37

Re: Реализовать доступ к модулю в зависимости от роли в Yii2

Сообщение MarkL » 2020.01.19, 00:46

yiiliveext писал(а):
2020.01.18, 23:15
AccessControl в модуле нужно прописывать.
Спасибо, оно.
Также статья с примером: https://webformyself.com/yii2-access-co ... 2-chast-1/

Ответить