Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Laravel] Route sprawdzany przez middleware zawsze zwraca błąd 403
Forum PHP.pl > Forum > PHP > Frameworki
wachcio
Witam

Próbuję w Laravel zabezpieczyć niektóre route aby tylko admin miał dostęp. W bazie danych standardowo stworzonej w Laravel dodałem pole is_admin typu boolean.
W pliku routes/web.php mam:
  1. Route::group(['middleware'=> ['can:is-admin']], function () {
  2. Route::post('/categories', 'CategoriesController@createCategory');
  3. Route::put('/categories/{id}', 'CategoriesController@updateCategory');
  4. Route::delete('/categories/{id}', 'CategoriesController@deleteCategory');
  5. });


w pliku app/Providers/AuthServiceProvider
  1. public function boot()
  2. {
  3. $this->registerPolicies();
  4.  
  5. Gate::define('is-admin', function ($user) {
  6. return $user->isAdmin();
  7. });
  8. }


w pliku app/User
  1. public function isAdmin()
  2. {
  3. return $this->is_admin === 1;
  4. }


Niestety nawet po zmianie na return true w dwóch ostatnich plikach ścieżki zawsze zwracają błąd 403. Co robię nie tak?
netir
Jesteś na pewno zalogowany? Jeżeli nie jesteś to tam zwraca false i do tego Gate nawet nie dochodzi.
wachcio
Apkę korzystającą z tego API piszę we Vue.js i ona ładnie pokazuje użytkownika który ma odpowiednie uprawnienia więc prawie na pewno jestem zalogowany. Dopiero zaczynam w Laravel. Jak można wyrzucić coś typu var_dump() aby mi podpowiedziało co jest nie tak?
netir
Cytat(wachcio @ 7.06.2020, 00:19:16 ) *
Apkę korzystającą z tego API piszę we Vue.js i ona ładnie pokazuje użytkownika który ma odpowiednie uprawnienia więc prawie na pewno jestem zalogowany. Dopiero zaczynam w Laravel. Jak można wyrzucić coś typu var_dump() aby mi podpowiedziało co jest nie tak?


dd() - dumpuje i umiera
\Auth:user() - powie Ci czy i na jakim userze jesteś zalogowany

Skoro API to zbadaj logowanie bo niemal na pewno nie wchodzi Ci do tego guarda.
wachcio
Cytat(netir @ 7.06.2020, 00:00:18 ) *
dd() - dumpuje i umiera
\Auth:user() - powie Ci czy i na jakim userze jesteś zalogowany

Skoro API to zbadaj logowanie bo niemal na pewno nie wchodzi Ci do tego guarda.


Jak pisałem dopiero raczkuję w Laravel.

Jak sprawdzić to \Auth:user() i logowanie?

EDIT:
  1. if (Auth::check()) {
  2. return 'User: '. Auth::user()->getId();
  3. } else {
  4. return 'Niezalogowany';
  5. }


Wstawione w RecipeController przy ścieżce Update daje 'niezalogowany' choć nie wiem czemu bo wszystkie dane usera są przesyłane na front.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.