| Server IP : 138.197.107.151 / Your IP : 216.73.217.7 Web Server : Apache/2.4.58 (Ubuntu) System : Linux BloxBy-Builder 6.8.0-71-generic #71-Ubuntu SMP PREEMPT_DYNAMIC Tue Jul 22 16:52:38 UTC 2025 x86_64 User : wpbetasites_mrakzqskir ( 1022) PHP Version : 8.3.6 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/shark/app/Http/Controllers/ |
Upload File : |
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use App\Models\User;
use App\Models\Provider;
use Google\Client as GoogleClient;
class LoginController extends Controller
{
// Show login form
public function showLoginForm()
{
return view('auth.login');
}
// Handle login submission
public function login(Request $request)
{
// Validate input
$credentials = $request->validate([
'email' => ['required', 'email'],
'password' => ['required'],
]);
$user = User::where('email', $request->email)->whereIn("role",["user","agency"])->first();
if (!$user) {
return back()->withErrors(['email' => 'Invalid Email or Password']);
}
/*if(!$user->password){
return back()->withErrors(['email' => 'Please login with Google account.']);
}*/
if ($user->is_blocked) {
return back()->withErrors(['email' => 'Your account has been blocked. Please contact admin.']);
}
/*if (!$user->email_verified_at) {
return back()->withErrors(['email' => 'Your email needs to be verified.']);
} */
$remember = $request->has('remember-me');
// Attempt login
if (Auth::attempt($credentials, $remember)) {
$request->session()->regenerate();
return redirect()->intended('dashboard'); // Or any intended route
} else {
return back()->withErrors([
'email' => 'Invalid Email or Password',
]);
}
// Login failed
return back()->withErrors([
'email' => 'Invalid Email or Password',
]);
}
// Handle logout
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
public function googleLogin(Request $request){
$idToken = $request->input('id_token');
$client = new GoogleClient(['client_id' => env('GOOGLE_CLIENT_ID')]);
$payload = $client->verifyIdToken($idToken);
if (!$payload) {
return response()->json(['status' => 'error', 'message' => 'Invalid ID token'], 401);
}
$email = $payload['email'];
$name = $payload['name'] ?? 'Google User';
$googleId = $payload['sub']; // Google unique user ID
// Check if provider exists
$provider = Provider::where('provider', 'google')
->where('provider_id', $googleId)
->first();
if ($provider) {
// Login with linked user
$user = $provider->user;
} else {
// Find or create user by email
$user = User::where("email", $email)->first();
if($user && $user->role=="admin"){
return response()->json([
'success' => false,
'message' => "You are not allowed to login."
]);
}
if($user && $user->password!=null){
return response()->json([
'success' => false,
'message' => "This email is already registered using normal sign-up. Please log in using your registered credentials."
]);
} else {
$user = User::firstOrCreate(
['email' => $email],
[
'name' => $name,
'email_verified_at' => now()
]
);
}
// Attach provider
$user->providers()->create([
'provider' => 'google',
'provider_id' => $googleId,
]);
}
Auth::login($user);
return response()->json([
'success' => true,
'user' => $user
]);
}
public function googleCallback(Request $request){
return response()->view('auth.google_callback'); //
}
}