<?php
declare(strict_types=1);

namespace api\controllers;

use Yii;
use yii\filters\auth\HttpBearerAuth;

/**
 * Behaviors:
 * @mixin \yii\filters\ContentNegotiator
 * @mixin \yii\filters\VerbFilter
 * @mixin \yii\filters\auth\CompositeAuth
 */
class Controller extends \yii\rest\Controller {

    public function behaviors(): array {
        $parentBehaviors = parent::behaviors();
        // Add JWT authenticator
        $parentBehaviors['authenticator'] = [
            'class' => HttpBearerAuth::class,
            'user' => Yii::$app->getUser(),
        ];

        // XML and rate limiter is not necessary
        unset(
            $parentBehaviors['contentNegotiator']['formats']['application/xml'],
            $parentBehaviors['rateLimiter']
        );

        return $parentBehaviors;
    }

}