Я некоторое время пытался это выяснить, но ни одно решение, которое я нашел, не было убедительным.В основном я пытаюсь получить список клиентов на основе пользователя, вошедшего в систему, но я не могу получить объект пользователя нигде в контроллере, кроме функции index()
, которая возвращает представление, а также шаблон блейда, который отображает зарегистрированныйв имени пользователя.
Это мой ClientController.php:
<?php
namespace App\Http\Controllers;
use App\Http\Models\Client;
use App\Http\Requests\GetClientsRequest;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Log;
class ClientController extends Controller
{
protected $user;
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware(function ($request, $next) {
$this->user = Auth::user();
return $next($request);
});
}
/**
* Show the clients page.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
Log::info("client user: " . print_r($this->user, 1));
return view('page');
}
public function getClients()
{
$currentUser = Auth::user();
if ($currentUser) {
$clients = Client::with('account')
->where('user_id', $currentUser->account)
->get();
$collection = collect($clients);
return response($collection->toArray());
}
}
}
Функция Log in index выводит пользовательский объект без проблем - но когда он вызывается в функции getClients()
, оно пустое.Я также пытался использовать это в __construct()
:
$this->middleware('auth');
Согласно шаблону Laravel, который я использовал, но всякий раз, когда я вызываю маршрут API getClients
, я всегда получаю 401 Несанкционированную ошибку.
Вот мой api.php
файл маршрутов (хотя только в настоящее время использующий вызов getClients):
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});
Route::get('welcome-message', 'DashboardController@getWelcomeMessage');
Route::prefix('clients')->group(function () {
Route::get('/', 'ClientController@getClients');
Route::get('/{clientId}', 'ClientController@getClient');
Route::post('/', 'ClientController@postCreateClient');
Route::put('/{clientId}', 'ClientController@putUpdateClient');
});
И мой web.php
файл маршрутов:
<?php
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Auth::routes();
Route::get('/', 'HomeController@index')->name('dashboard');
Route::get('/clients', 'ClientController@index')->name('clients');
Система знаетЯ вошел в систему, потому что я вообще не смог бы посетить инструментальную панель клиента, поэтому я не понимаю, почему я не могу получить результат от Auth::user()
в функции - если я не использую промежуточное ПО неправильно