Добавить данные об авторизации при каждом запросе к API в Laravel

Создаем Middleware командой php artisan make:middleware appendAuthDataToEachResponce

namespace App\Http\Middleware;

use Auth;
use Closure;
use Illuminate\Http\Request;

class appendAuthDataToEachResponce {

  public function share(Request $request) {
    $permissions = [];
    $user = Auth::user() ?: [];
    if($user){
      $permissions = Auth::user()->getAllPermissions()->pluck("name");
    }
    return [
      // 'errors' => function () use ($request) {
      //   return $this->resolveValidationErrors($request);
      // },
      'auth' => [
        'user' => $user,
        'permissions' => $permissions
      ]
    ];
  }
  
  
  public function handle(Request $request, Closure $next) {
    $response = $next($request);
    $content = json_decode($response->content(), true);

    //Check if the response is JSON
    if (json_last_error() == JSON_ERROR_NONE) {
      $response->setContent(json_encode(
          array_merge(
            ['props' => $content],
            $this->share($request)
        )
      ));
    }
    return $response;
  }
  
  // // Возможно иногда может потребоваться перезаписать входной параметр data в axios. Код для JS:
  // const axiosInstance = axios.create({
  //   baseURL: "http://127.0.0.1:8000/",
  //   headers: {
  //     "Content-Type": "application/json"
  //   },
  //   transformResponse: axios.defaults.transformResponse.concat(data => {
  //     return data.props;
  //   })
  // });


  // public function resolveValidationErrors(Request $request) {
  //   if (!$request->session()->has('errors')) {
  //     return (object) [];
  //   }

  //   return (object) collect($request->session()->get('errors')->getBags())->map(function ($bag) {
  //     return (object) collect($bag->messages())->map(function ($errors) {
  //       return $errors[0];
  //     })->toArray();
  //   })->pipe(function ($bags) use ($request) {
  //     if ($bags->has('default') && $request->header('x-inertia-error-bag')) {
  //       return [$request->header('x-inertia-error-bag') => $bags->get('default')];
  //     } elseif ($bags->has('default')) {
  //       return $bags->get('default');
  //     } else {
  //       return $bags->toArray();
  //     }
  //   });
  // }
}

В файл App\Http\Kernel.php, в $middlewareGroups['api'] добавляем строку

\App\Http\Middleware\appendAuthDataToEachResponce::class

Комментарии (0)

  1. Напишите первый комментарий
*Комментарий будет опубликован после проверки модератором

Похожие статьи

Загрузка изображения в Laravel

Русификация Laravel

Добавить поле к существующей таблице Laravel

Как поменять язык в Faker

Транслитерация URL в Laravel. Примеры str_slug()

Разработка бота Telegram с помощью Botman на локальном компьютере

Валидация данных в Laravel form request

Laravel Excel - Базовый экспорт

Добавить в botman editMessageText для Telegram

Как сделать middleware в Laravel 6 - простой пример

Создать ссылку на storage из внешнего каталога для Laravel

Как русифицировать или поменять шаблон уведомления о сбросе пароля в Laravel

Установить Laravel в отдельную папку (site.ru/laravel/)

Laravel: Отношения моделей многие ко многим - belongsToMany

Laravel: Отношения моделей один ко многим - hasMany, belongsTo

Валидация номера кредитной карты на PHP (Laravel)

Связать папку storage с папкой public в Laravel

Откуда в Laravel Jetstream (inertia) prop auth.user?

Создание form request в Laravel: руководство для начинающих

Экспорт маршрутов из Laravel в JSON файл

Постраничная навигация на Bootstrap в Laravel 8

Обработка ошибок в Laravel form request

Blade - расширить @section с использованием директивы @parent

Добавить данные об авторизации при каждом запросе к API в Laravel

Работа с файлами в Laravel Form Request

Работа с вложенными объектами и коллекциями в Laravel form request

Стандартные свойства модели в Laravel

Laravel: Отношение через таблицу-посредника - hasOneThrough()

Laravel: Отношения моделей один к одному - hasOne, belongsTo

Авторизацией и аутентификация в Laravel form request

Настройка команды CRON на хостинге nic.ru для активации Laravel schedule

Laravel form request для создания API-запросов

Laravel: Отношение через таблицу-посредника - hasManyThrough()

HTTP-запросы в Laravel form request - работа с различными типами запросов

Создание класса модели в Laravel

Создание уникального индекса в миграции Laravel

Установка Laravel и создание нового проекта

Как создать модель в Laravel

Создание таблицы в базе данных (миграции) для модели в Laravel

Базовые методы CRUD контроллера для модели в Laravel

Наш сайт использует куки, нажмите «ОК» если вы не против
OK