ControllerTrait   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 53
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 2
eloc 33
c 1
b 0
f 0
dl 0
loc 53
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A behaviors() 0 41 1
A verbs() 0 3 1
1
<?php
2
namespace App\Http\Api\Backend\Controller;
3
4
use App\Http\Filter\Auth\Authenticator;
5
use RazonYang\Yii2\RateLimiter\Redis\RateLimiter;
6
use Yii;
7
use yii\filters\VerbFilter;
8
use yii\filters\Cors;
9
use yii\filters\auth\HttpBearerAuth;
10
use yii\filters\auth\QueryParamAuth;
11
12
trait ControllerTrait
13
{
14
    public function behaviors()
15
    {
16
        return [
17
            'cors' => [
18
                'class' => Cors::class,
19
                'cors' => [
20
                    'Origin' => Yii::$app->params['api.cors.origin'],
21
                    'Access-Control-Request-Method' => Yii::$app->params['api.cors.methods'],
22
                    'Access-Control-Request-Headers' => Yii::$app->params['api.cors.headers'],
23
                    'Access-Control-Allow-Credentials' => Yii::$app->params['api.cors.allowCredentials'],
24
                    'Access-Control-Max-Age' => Yii::$app->params['api.cors.maxAge'],
25
                    'Access-Control-Expose-Headers' => Yii::$app->params['api.cors.exposeHeaders'],
26
                ],
27
            ],
28
            'authenticator' => [
29
                'class' => Authenticator::class,
30
                'optional' => [
31
                    'options',
32
                ],
33
                'authMethods' => [
34
                    'query' => [
35
                        'class' => QueryParamAuth::class,
36
                        'tokenParam' => 'access_token',
37
                    ],
38
                    'bearer' => [
39
                        'class' => HttpBearerAuth::class,
40
                    ],
41
                ],
42
            ],
43
            'verb' => [
44
                'class' => VerbFilter::class,
45
                'actions' => $this->verbs(),
46
            ],
47
            'rateLimiter' => [
48
                'class' => RateLimiter::class,
49
                'redis' => 'redis',
50
                'capacity' => Yii::$app->params['api.rateLimiter.capacity'],
51
                'rate' => Yii::$app->params['api.rateLimiter.rate'],
52
                'limitPeriod' => Yii::$app->params['api.rateLimiter.limitPeriod'],
53
                'prefix' => Yii::$app->params['api.rateLimiter.prefix'],
54
                'ttl' => Yii::$app->params['api.rateLimiter.ttl'],
55
            ],
56
        ];
57
    }
58
59
    /**
60
     * @return array
61
     */
62
    protected function verbs()
63
    {
64
        return [];
65
    }
66
}
67