validate([ 'username' => 'required|string', 'password' => 'required|string', 'pin' => 'required|numeric', ]); $student = DB::table('student_portal_logs') ->where('email', $request->username) ->orWhere('studentid', $request->username) ->first(); if ($student && Hash::check($request->password, $student->password) && $student->pin == $request->pin) { if ($student->status !== 'active' && $student->status !== '' && !is_null($student->status)) { return redirect()->back()->with('error', 'Your account is inactive!'); } $request->session()->put('student_id', $student->studentid); $request->session()->put('student_log_id', $student->id ?? null); $name = trim(($student->first_name ?? '') . ' ' . ($student->last_name ?? '')); $request->session()->put('student_name', $name ?: ($student->email ?? $student->studentid)); return redirect()->route('student.portal')->with('success', 'Logged in successfully!'); } return redirect()->back()->with('error', 'Invalid Email/Username, Password, or PIN!'); } public function showProfile(Request $request) { $log_id = $request->session()->get('student_log_id'); $student_code = $request->session()->get('student_id'); if (!$log_id && !$student_code) { return redirect('/')->with('error', 'Please login first!'); } $student = DB::table('student_details') ->where(function ($query) use ($log_id, $student_code) { if ($log_id) { $query->where('student_portal_log_id', $log_id); } if ($student_code) { if ($log_id) { $query->orWhere('student_id', $student_code); } else { $query->where('student_id', $student_code); } } }) ->first(); if (!$student) { return redirect()->route('student.portal')->with('error', 'Student details not found in database!'); } return view('StudentProfile', compact('student')); } public function studentlogout(Request $request) { $request->session()->forget(['student_id', 'student_log_id', 'student_name']); $request->session()->invalidate(); $request->session()->regenerateToken(); return response()->json(['success' => true]); } }