всем привет
нужна помощь в оптимизации правил доступа к страницам сайта
условия такие
-
Запрет доступа на весь сайт с определенного IP и переадресацией куда-нибудь
-
На три метода – доступ для всех
-
На один метод – доступ по паролю
-
С определенного IP доступ строго на определенный экшн
вот что у меня получилось и работает как надо
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'rules' => [
[
/*
* запрет и переадресация со всего сайта
* для определенного IP
*/
'allow' => true,
'matchCallback' => function ($rule, $action) {
$userIP = Yii::$app->request->userIP;
if($userIP === '84.20.177.73')
{
return $this->redirect('http://yandex.ru');
}
}
],
[
/*
* для определенного IP
* принудительный редирект на один экшен
*/
'allow' => true,
'matchCallback' => function ($rule, $action) {
$userIP = Yii::$app->request->userIP;
if($userIP === '84.20.177.72' AND Yii::$app->request->url != '/')
{
return $this->redirect('/');
}
}
],
[
/*
* доступно всем
*/
'actions' => ['index','about','login', 'signup'],
'allow' => true,
],
[
/*
* доступно авторизованым
*/
'actions' => ['contact', 'logout'],
'allow' => true,
'roles' => ['@'],
],
],
],
];
}
можно ли сделать проще?