[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Ограничение доступа в yii2 по mysql
Wet
Подскажите кто нить как реализовать ограничение доступа по определенной таблице mysql?

Допустим есть 4 таблицы mysql:
1) таблица юзеров

id _ name
1 _ Иван
2 _ Федя

2) таблица прав доступа

id _ userid _ grouptid _ acess ( 0 - доступ закрыт, 1 - просмотр, 2 - просмотр, изменение… )
1 _ 1 _____ 1 _______ 1
2 _ 2 _____ 2 _______ 2

3) таблица контента (представим, что у каждой группы свой контент)

id _ content
1 _ текст
2 _ /img/1.jpg

4) таблица групп

id _ groupname
1 _ Группа 1
2 _ Группа 2

К примеру авторизовались под 1м юзером, yii должно ограничить доступ по 2й таблице и вывести только текст.

Прописал в BaseController:
public function beforeAction($action)
{
if (Yii::$app->user->isGuest) {
return $this->redirect('/site/login');
}

if (!parent::beforeAction($action)) {
return false;
}

$content = [];
$id = Yii::$app->user->id;
$content = User::getGroup($id);

return true;
}


а в модели User:
public function getGroup($userID)
{
$array = SysAcl::find()->where(['userid' => $userID])->select(['grouptid'])->asArray()->indexBy('id')->all();

$arr = [];
foreach ($array as $key => $value) {
$arr[$key] = $value['grouptid'];
}

// возвращаем массив вида [id] => [grouptid]
return $arr;
}


В результате получил id группы, но что дальше делать пока еще не знаю. Как вывести привязаный к группе контент? Если не знаете как yii2 это реализовать, то хотя бы подскажите как вы это делаете в другой MVC, чтобы хотя бы примерно понять как наследуется наше значение от базового контроллера к другим контроллерам.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.