laravel Auth::login($user) return 401 Unauthorized when I logged with socialite

Viewed 58

I'm trying to fix this problem for 2 days :(

this error came when I logged with socialite, when I request data from my API in my project it gives me Uncaught (in promise) Error: Request failed with status code 401!

so the user actually logged in, but somehow my API's now working ;'(

routes/web.php

Route::controller(AuthController::class)->group(function($route) {
   .
   .
   .
   $route->prefix("social")->group(function($route) {
       $route->get("{provider}", "redirectToProvider")->name("redirect-to-provider");
       $route->get("{provider}/callback", "handleProviderCallback")->name("handle-provider-callback");
   });
});

routes/V1/api.php

Route::middleware("auth:sanctum")->group(function ($route) {
    $route->prefix("carts")->controller(CartController::class)->group(function ($route) {
        $route->get("/", "index");
        .
        .
        .
    });
});

AuthController.php


    public function login(LoginRequest $request)
    {
        $request->authenticate();
        $request->session()->regenerate();
        return redirect('/profile')->with('success', 'Logged Successfully.');
    }

    public function redirectToProvider($provider)
    {
        return Socialite::driver($provider)->stateless()->redirect();
    }

    public function handleProviderCallback($provider)
    {
        try {
            $user_social = Socialite::driver($provider)->stateless()->user();
            $current_user = UserSocial::where("account_id", $user_social->getId())->first();
            if ($current_user) {
                $userFind = User::findOrFail($current_user->user_id);
                Auth::login($userFind);
                return redirect()->intended("/");
            } else {
                $user = new User();
                $user->name = $user_social->getName();
                $user->email = $user_social->getEmail();
                $user->password = bcrypt($user_social->getId());
                $user->login_with = $provider;
                $user->assignRole(User::ROLE_USER);
                $user->save();

                $user_account = new UserSocial();
                $user_account->user_id = $user->id;
                $user_account->account_id = $user_social->getId();
                $user_account->provider = $provider;
                $user_account->token = $user->createToken($user->id)->plainTextToken;
                $user_account->save();
                $token = $user->createToken($user->id)->plainTextToken;

                Auth::login($user);
                return redirect()->intended("/");
            }
        } catch (ClientException $exception) {
           return $this->errorResponse(["message" => "Invalid credentials provided."]);
        }

Cart/Index.vue

axios.get(`/api/v1/carts`).then(res => {
       ...
       ...
});
0 Answers
Related