127 lines
3.3 KiB
PHP
127 lines
3.3 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\User;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Hash;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Support\Facades\Log;
|
|
|
|
class AuthController extends Controller
|
|
{
|
|
|
|
|
|
|
|
public function profilview(Request $request)
|
|
{
|
|
// Auth wi inna userge data gannawa
|
|
$user = Auth::user();
|
|
|
|
// profile.blade.php file ekata data pass karanawa
|
|
return view('profile', compact('user'));
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* Handle Student Registration (POST)
|
|
*/
|
|
public function register(Request $request)
|
|
{
|
|
$request->validate([
|
|
'first_name' => 'required|string|max:255',
|
|
'last_name' => 'required|string|max:255',
|
|
'email' => 'required|string|email|max:255|unique:users',
|
|
'phone' => 'required|string|max:15',
|
|
'password' => 'required|string|min:8|confirmed',
|
|
]);
|
|
|
|
$user = User::create([
|
|
'first_name' => $request->first_name,
|
|
'last_name' => $request->last_name,
|
|
'email' => $request->email,
|
|
'phone' => $request->phone,
|
|
'password' => Hash::make($request->password),
|
|
]);
|
|
|
|
|
|
Auth::login($user);
|
|
|
|
|
|
return redirect('/')->with('success', 'Registration successful! Welcome to your dashboard.');
|
|
}
|
|
|
|
|
|
public function login(Request $request)
|
|
{
|
|
$credentials = $request->validate([
|
|
'email' => 'required|email',
|
|
'password' => 'required|string',
|
|
]);
|
|
|
|
if (Auth::attempt($credentials)) {
|
|
$request->session()->regenerate();
|
|
|
|
return redirect()->intended('/')->with('success', 'Welcome back!');
|
|
}
|
|
|
|
return back()->withErrors([
|
|
'email' => 'The provided credentials do not match our records.',
|
|
])->onlyInput('email');
|
|
}
|
|
|
|
/**
|
|
* Handle Async Logout (POST Fetch)
|
|
*/
|
|
public function logout(Request $request) // FIX: Restored Request injection
|
|
{
|
|
try {
|
|
if (Auth::check()) {
|
|
Auth::logout();
|
|
}
|
|
|
|
// Flush old fallback explicit keys
|
|
$request->session()->forget(['user_id', 'user_name']);
|
|
|
|
if ($request->session()->isStarted()) {
|
|
$request->session()->invalidate();
|
|
$request->session()->regenerateToken();
|
|
}
|
|
|
|
return response()->json(['success' => true]);
|
|
|
|
} catch (\Exception $e) {
|
|
Log::error('Logout Server Error: ' . $e->getMessage());
|
|
|
|
if (isset($_SESSION)) {
|
|
session_destroy();
|
|
}
|
|
return response()->json(['success' => true, 'forced' => true]);
|
|
}
|
|
}
|
|
|
|
public function update(Request $request)
|
|
{
|
|
|
|
$request->validate([
|
|
'first_name' => 'required|string|max:255',
|
|
'last_name' => 'required|string|max:255',
|
|
'phone' => 'nullable|string|max:20',
|
|
]);
|
|
|
|
|
|
$user = Auth::user();
|
|
|
|
|
|
$user->update([
|
|
'first_name' => $request->first_name,
|
|
'last_name' => $request->last_name,
|
|
'phone' => $request->phone,
|
|
]);
|
|
|
|
|
|
return redirect()->back()->with('success', 'Profile updated successfully!');
|
|
}
|
|
|
|
} |