I’m trying to set up Google authentication using Laravel Socialite in a Laravel 11.x project. I followed the steps to create middleware for checking Google authentication but encountered an error: Target class [google.auth] does not exist.
Here are the relevant parts of my code:
Middleware: CheckGoogleAuth.php
<?php
namespace AppHttpMiddleware;
use Closure;
use IlluminateHttpRequest;
use IlluminateSupportFacadesAuth;
class CheckGoogleAuth
{
public function handle(Request $request, Closure $next)
{
if (!Auth::check()) {
return redirect('/auth/google');
}
return $next($request);
}
}
Controller: GoogleController.php
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use LaravelSocialiteFacadesSocialite;
use AppModelsUser;
use IlluminateSupportFacadesAuth;
class GoogleController extends Controller
{
public function redirectToGoogle()
{
return Socialite::driver('google')->redirect();
}
public function handleGoogleCallback()
{
$user = Socialite::driver('google')->user();
$existingUser = User::where('email', $user->getEmail())->first();
if ($existingUser) {
Auth::login($existingUser);
} else {
$newUser = User::create([
'name' => $user->getName(),
'email' => $user->getEmail(),
'google_id' => $user->getId(),
'password' => encrypt('dummy-password')
]);
Auth::login($newUser);
}
return redirect('/dashboard');
}
}
**Kernel: Kernel.php
**
<?php
namespace AppHttp;
use IlluminateFoundationHttpKernel as HttpKernel;
class Kernel extends HttpKernel
{
// Other properties and methods...
/**
* The application's route middleware.
*
* These middleware may be assigned to groups or used individually.
*
* @var array<string, class-string|string>
*/
protected $routeMiddleware = [
// Other middleware...
'google.auth' => AppHttpMiddlewareCheckGoogleAuth::class,
];
}
Routes: web.php
<?php
use AppHttpControllersProfileController;
use AppHttpControllersGoogleController;
use IlluminateSupportFacadesRoute;
use InertiaInertia;
Route::get('/', function () {
return Inertia::render('Welcome', [
'canLogin' => Route::has('login'),
'canRegister' => Route::has('register'),
'laravelVersion' => app()->version(),
'phpVersion' => PHP_VERSION,
]);
});
Route::middleware(['google.auth'])->group(function () {
Route::get('/dashboard', function () {
return Inertia::render('Dashboard');
});
Route::get('/create', function () {
return Inertia::render('Create');
});
Route::get('/inquiry', function () {
return Inertia::render('Inquiry');
});
});
Route::get('/auth/google', [GoogleController::class, 'redirectToGoogle']);
Route::get('/auth/google/callback', [GoogleController::class, 'handleGoogleCallback']);
Route::middleware(['auth', 'google.auth'])->group(function () {
Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit');
Route::patch('/profile', [ProfileController::class, 'update'])->name('profile.update');
Route::delete('/profile', [ProfileController::class, 'destroy'])->name('profile.destroy');
});
require __DIR__.'/auth.php';
Services Configuration: services.php
<?php
return [
'google' => [
'client_id' => env('GOOGLE_CLIENT_ID'),
'client_secret' => env('GOOGLE_CLIENT_SECRET'),
'redirect' => env('GOOGLE_REDIRECT_URL'),
],
];
New contributor
Wexnerd is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.