academy/app/Http/Controllers/StudentPortalController.php

93 lines
3.3 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
class StudentPortalController extends Controller
{
public function studentlogin(Request $request)
{
$request->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]);
}
}