Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Laravel] Route sprawdzany przez middleware zawsze zwraca błąd 403
wachcio
post 6.06.2020, 21:48:32
Post #1





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 17.07.2011

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
netir
post 6.06.2020, 23:01:23
Post #2





Grupa: Zarejestrowani
Postów: 44
Pomógł: 5
Dołączył: 20.05.2019

Ostrzeżenie: (0%)
-----


Jesteś na pewno zalogowany? Jeżeli nie jesteś to tam zwraca false i do tego Gate nawet nie dochodzi.
Go to the top of the page
+Quote Post
wachcio
post 6.06.2020, 23:19:16
Post #3





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 17.07.2011

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
netir
post 7.06.2020, 00:00:18
Post #4





Grupa: Zarejestrowani
Postów: 44
Pomógł: 5
Dołączył: 20.05.2019

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
wachcio
post 7.06.2020, 00:34:17
Post #5





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 17.07.2011

Ostrzeżenie: (0%)
-----


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.

Ten post edytował wachcio 7.06.2020, 02:24:55
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 16.04.2024 - 12:54