File: /var/www/vaspayment.com/app/Http/Controllers/AuthController.php
<?php
namespace App\Http\Controllers;
use App\Models\Blog;
use App\Models\User;
use App\Models\Wallet;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use Laravel\Socialite\Facades\Socialite;
class AuthController extends Controller
{
public function home()
{
// header('Cache-Control: public, max-age=604800');
$blogs = Blog::latest()->limit(2)->get();
return view('welcome', compact('blogs'));
}
public function login()
{
return view("auth.login");
}
public function register()
{
return view("auth.register");
}
public function privacy()
{
return view("auth.privacy");
}
public function terms()
{
return view("auth.terms");
}
public function redirectToGoogle()
{
session()->put('url.intended', url()->previous());
return Socialite::driver('google')->redirect();
}
public function handleGoogleCallback()
{
$googleUser = Socialite::driver('google')->user();
$userFullName = $googleUser->getName();
$nameParts = explode(' ', $userFullName, 2);
$firstName = $nameParts[0];
$lastName = $nameParts[1] ?? '';
$geneNumber = '23481' . str_pad(mt_rand(0, 99999999), 8, '0', STR_PAD_LEFT);
$walletId = substr($geneNumber, 5);
// Check if the user exists by email
$existingUser = User::where('email', $googleUser->getEmail())->first();
if ($existingUser) {
// If user exists, update Google ID if not already set and authenticate
if (!$existingUser->google_id) {
$existingUser->update(['google_id' => $googleUser->getId()]);
}
$user = $existingUser;
} else {
// Create new user and wallet if user does not exist
$user = User::create([
'google_id' => $googleUser->getId(),
'name' => $firstName,
'lastname' => $lastName,
'phone' => $geneNumber,
'email' => $googleUser->getEmail(),
'email_verified_at' => now(),
'status' => '0',
'profile_photo_path' => $googleUser->getAvatar(),
]);
Wallet::create([
'user_id' => $user->id,
'wallet_id' => $walletId,
'commission' => "0.00",
'balance' => "0.00",
]);
}
// Log the user in
Auth::login($user, true);
session()->regenerate();
return redirect()->away(session()->get('url.intended'));
}
}