From dac1e9633087fb24ceddc331b121948b91d7d9df Mon Sep 17 00:00:00 2001 From: Matt Young Date: Thu, 30 May 2024 19:19:01 -0500 Subject: [PATCH] Implement adding students --- app/Http/Controllers/StudentController.php | 15 ++++++++++++++- app/Policies/StudentPolicy.php | 3 ++- routes/web.php | 1 + 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/StudentController.php b/app/Http/Controllers/StudentController.php index b4bf502..a48482a 100644 --- a/app/Http/Controllers/StudentController.php +++ b/app/Http/Controllers/StudentController.php @@ -34,7 +34,20 @@ class StudentController extends Controller */ public function store(Request $request) { - // + if ($request->user()->cannot('create', Student::class)) abort(403); + $request->validate([ + 'first_name' => ['required'], + 'last_name' => ['required'], + 'grade' => ['required', 'integer'], + ]); + + $student = Student::create([ + 'first_name' => request('first_name'), + 'last_name' => request('last_name'), + 'grade' => request('grade'), + 'school_id' => Auth::user()->school_id + ]); + return redirect('/students'); } /** diff --git a/app/Policies/StudentPolicy.php b/app/Policies/StudentPolicy.php index 7d8fbb1..062f47c 100644 --- a/app/Policies/StudentPolicy.php +++ b/app/Policies/StudentPolicy.php @@ -5,6 +5,7 @@ namespace App\Policies; use App\Models\Student; use App\Models\User; use Illuminate\Auth\Access\Response; +use function is_null; class StudentPolicy { @@ -37,7 +38,7 @@ class StudentPolicy */ public function create(User $user): bool { - // + return ! is_null($user->school_id); } /** diff --git a/routes/web.php b/routes/web.php index 1240305..c741c98 100644 --- a/routes/web.php +++ b/routes/web.php @@ -27,6 +27,7 @@ Route::middleware(['auth','verified'])->controller(UserController::class)->group // Student Related Routes Route::middleware(['auth','verified'])->controller(StudentController::class)->group(function() { Route::get('/students','index'); + Route::post('students', 'store'); Route::get('/students/{student}/edit','edit'); Route::patch('/students/{student}','update'); Route::delete('/students/{student}', 'destroy');