academy/app/Http/Controllers/AuthController.php

129 lines
3.4 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),
]);
// Automatically logs the new user in
Auth::login($user);
// FIX: Changed redirect from '/signin' to '/' because they are already logged in
return redirect('/')->with('success', 'Registration successful! Welcome to your dashboard.');
}
/**
* Handle Student Login (POST)
*/
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!');
}
}