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