Ограничение доступа в yii2 по mysql

240
14 апреля 2017, 21:02

Подскажите кто нить как реализовать ограничение доступа по определенной таблице 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(['groupid'])->asArray()->indexBy('id')->all();
$arr = [];
foreach ($array as $key => $value) {
$arr[$key] = $value['groupid'];
}
// возвращаем массив вида [id] => [groupid]
return $arr;
}

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

READ ALSO
Как разместить гостей в отелях (сервис похожий на booking.com)?

Как разместить гостей в отелях (сервис похожий на booking.com)?

Хочу создать сервис похожий на bookingcom

257
Retrofit2. Возвращаемое значение body == null

Retrofit2. Возвращаемое значение body == null

Не могу понять, в чем ошибкаПутем дебаггинга понял, что в итоге body = null

191
Не возвращаются значения с нитей

Не возвращаются значения с нитей

Скажите, пожалуйста, в чем ошибка? После отработки кода resultMap хранит всего одно значение с первой нити, почему не добавляются значения с других...

168
Retrofit request

Retrofit request

Подскажите пожалуйста где в Retofit можно посмотреть url запроса, с ключами, обязательными параметрами и тп

209