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');