Создаем 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)
Не писать ответ