Utilisation de Laravel passport et Vuejs. Auth::User() ne marche pas

Par Control Malal, il y a 5 ans


J'utilise Laravel 8 passport pour authentifier les utilisateur à partir de mon Vuex . Ma fonction de dispatch ci-dessous:

login({ commit}, user) { return new Promise((resolve, reject) => { let url = `/auth/login`; let email = user.email; let password = user.password; axios.post(url, { email, password }) .then(response => { const token = response.data.token const user = response.data.user localStorage.setItem('AnimeStock.jwt', 'Bearer '+ token); localStorage.setItem('AnimeStock.user', JSON.stringify(user)); axios.defaults.headers.common['Authorization'] = 'Bearer '+ token; commit('AUTH_SUCCESS', {token, user}); resolve(response); }) .catch(error => { console.log(error) commit('AUTH_ERROR', error.response.data.error) localStorage.removeItem('AnimeStock.jwt') localStorage.removeItem('AnimeStock.user') reject(error) }) }) }

Le code ci-dessus marche et l'utilisateur est authentifié. Puis j'essaye de faire un fetch de user a partir de mon component comme ci-dessous :

api.get(`/auth/user`).then(response => { console.log(response.data) });

Mon API route :

Route::group(['prefix' => 'auth'], function () { //Auth routes Route::post('login', 'AuthController@login'); Route::post('register', 'AuthController@register'); Route::group(['middleware' => 'auth:api'], function() { Route::get('logout', 'AuthController@logout'); Route::get('user', 'AuthController@user'); }); });

Et mon AuthController return l'utilisateur current connecté.

public function user() { $user = Auth::user(); return response()->json($user); }

Mais le gros problème quand je fais ceci dans mon app.blade.php, sa ne marche pas :

<script> @auth window.User= {!! json_encode(Auth::user(), true) !!}; @else window.User= []; @endauth </script>

Ceci ne marche non plus :

<script> @if (Auth::check()) window.User= {!! json_encode(Auth::user(), true) !!}; @else window.User= []; @endif </script>

Je n'arrive pas à comprendre pourquoi dans le app.blade.php le auth()->check() ne marche pas.
NB : Toute la partie frontend est geré par vuejs 2

Aucune réponse