Код: Выделить всё
<?php
namespace api\controllers;
use common\models\Widgets;
use Yii;
use yii\filters\AccessControl;
use yii\filters\auth\QueryParamAuth;
use yii\filters\VerbFilter;
use yii\rest\ActiveController;
class WidgetController extends ActiveController
{
public $modelClass = 'common\models\Widgets';
public function behaviors()
{
// использует класс User указанный в настройках и метод по тоукену
$behaviors = parent::behaviors();
$behaviors['authenticator'] = ['class' => QueryParamAuth::className()];
$behaviors['verbs'] = [
'class' => VerbFilter::className(),
'actions' => [
'index' => ['post'],
],
];
$behaviors['access'] = [
'class' => AccessControl::className(),
'rules' =>[
[
'allow' => true,
'actions' => ['index'],
'matchCallback' => function ($rule, $action) {
return $this->checkIP($rule , $action);
}
],
],
];
return $behaviors;
}
public function actions()
{
$actions = parent::actions();
// Отключение действий по умолчанию
unset
(
$actions['delete'],
$actions['create'],
$actions['view'],
$actions['options'],
$actions['update']
);
return $actions;
}
public function actionIndex(){
$userHost = Yii::$app->request->userHost;
return Widgets::findAll(1);
}
protected function checkIP($rule , $action){
$userHost = Yii::$app->request->userHost;
$userIP = Yii::$app->request->userIP;
return true;
}
}
Код: Выделить всё
'urlManager' => [
'enablePrettyUrl' => true,
'enableStrictParsing' => true,
'showScriptName' => false,
'rules' => [
['class' => 'yii\rest\UrlRule', 'controller' => 'widget'],
],
],