Как мне отредактировать промежуточное программное обеспечение dingo / api auth в Laravel? - PullRequest
0 голосов
/ 29 мая 2018

В полностью расслабленном проекте Laravel я использую пакет dingo/api.Мне нужно установить некоторые конфиги и другие вещи, связанные с текущим пользователем, перед обработкой любого запроса.Когда мы используем динго, мы можем получить доступ к текущему пользователю следующим образом:

$user = app('Dingo\Api\Auth\Auth')->user();

Сначала я подумал, что должен сделать это у поставщика услуг.Но там Laravel еще не инициировал аутентификацию динго, поэтому он выдает мне ошибку.Тогда я подумал, что мне нужно отредактировать промежуточное программное обеспечение для аутентификации dingo под названием api.auth, чтобы сделать это.Его использование на моих маршрутах выглядит следующим образом:

<?php

$api = app('Dingo\Api\Routing\Router');

$api->version('v1', ['prefix' => 'v1', 'namespace' => 'App\Http\Controllers'], function ($api) {

    $api->group(['prefix' => 'admin', 'middleware' => 'api.auth'], function ($api) {

        $api->get('checkRole/{branch_id}', 'RoleController@getRoles');

Но у меня нет доступа к нему, потому что это встроенное промежуточное ПО в пакете динго.Так что мне делать в этой ситуации?

1 Ответ

0 голосов
/ 18 октября 2018

Я решил это в свое время, но забыл ответить здесь.Я просто расширил промежуточное ПО для аутентификации digo и переопределил его метод handle.Но мне пришлось заменить имя промежуточного программного обеспечения во всех файлах маршрута в проекте (я использую пакет nwidart/laravel-modules для написания модульного проекта).

<?php

    namespace App\Http\Middleware;

    use Closure;
    use Dingo\Api\Http\Middleware\Auth;

    class ApiAuth extends Auth
    {
        public function handle($request, Closure $next)
        {
            $route = $this->router->getCurrentRoute();

            if (!$this->auth->check(false))
                $this->auth->authenticate($route->getAuthenticationProviders());

            ...
            ...

            return $next($request);
        }
    }
...