validate([ 'email' => ['required', 'email'], 'password' => ['required'], ]); if (Auth::guard('web')->attempt($credentials, $request->boolean('remember'))) { $request->session()->regenerate(); $user = Auth::guard('web')->user(); return response()->json([ 'user' => $user, 'redirect' => '/owner/dashboard' ]); } return response()->json([ 'message' => 'The provided credentials do not match our records.', ], 401); } /** * Handle receptionist login request. */ public function receptionistLogin(Request $request) { $credentials = $request->validate([ 'email' => ['required', 'email'], 'password' => ['required'], ]); if (Auth::guard('receptionist')->attempt($credentials, $request->boolean('remember'))) { $request->session()->regenerate(); $user = Auth::guard('receptionist')->user(); return response()->json([ 'user' => $user, 'redirect' => '/receptionist/dashboard' ]); } return response()->json([ 'message' => 'The provided credentials do not match our records.', ], 401); } /** * Get the authenticated user's profile. */ public function profile(Request $request) { $context = $request->query('context', 'owner'); if ($context === 'receptionist') { if ($user = Auth::guard('receptionist')->user()) { $user->load('branch'); return response()->json([ 'user' => $user, 'role' => 'receptionist', 'branch' => $user->branch ? $user->branch->name : 'N/A' ]); } // fallback if ($user = Auth::guard('web')->user()) { return response()->json([ 'user' => $user, 'role' => 'owner', 'branch' => 'Management' ]); } } else { // Check Owner Guard if ($user = Auth::guard('web')->user()) { return response()->json([ 'user' => $user, 'role' => 'owner', 'branch' => 'Management' ]); } // Check Receptionist Guard fallback if ($user = Auth::guard('receptionist')->user()) { $user->load('branch'); return response()->json([ 'user' => $user, 'role' => 'receptionist', 'branch' => $user->branch ? $user->branch->name : 'N/A' ]); } } return response()->json(['message' => 'Unauthenticated'], 401); } /** * Handle logout request. */ public function logout(Request $request) { Auth::guard('web')->logout(); Auth::guard('receptionist')->logout(); $request->session()->invalidate(); $request->session()->regenerateToken(); return redirect('/'); } }