user()->cannot('create', School::class)) { abort(403); } request()->validate([ 'name' => ['required', 'min:3', 'max:30'], 'address' => ['required'], 'city' => ['required'], 'state' => ['required', 'min:2', 'max:2'], 'zip' => ['required', 'min:5', 'max:10'], ]); $school = School::create([ 'name' => request('name'), 'address' => request('address'), 'city' => request('city'), 'state' => request('state'), 'zip' => request('zip'), ]); if (! Auth::user()->school) { Auth::user()->update([ 'school_id' => $school->id, ]); SchoolEmailDomain::create([ 'school_id' => $school->id, 'domain' => Auth::user()->emailDomain(), ]); } return redirect('/schools/'.$school->id); } public function show(Request $request, School $school) { if ($request->user()->cannot('view', $school)) { abort(403); } return view('schools.show', ['school' => $school]); } public function create(Request $request) { if ($request->user()->cannot('create', School::class)) { abort(403); } return view('schools.create'); } public function edit(Request $request, School $school) { if ($request->user()->cannot('update', $school)) { abort(403); } return view('schools.edit', ['school' => $school]); } public function update(Request $request, School $school) { if ($request->user()->cannot('update', $school)) { abort(403); } request()->validate([ 'name' => ['required', 'min:3', 'max:30'], 'address' => ['required'], 'city' => ['required'], 'state' => ['required', 'min:2', 'max:2'], 'zip' => ['required', 'min:5', 'max:10'], ]); $school->update([ 'name' => request('name'), 'address' => request('address'), 'city' => request('city'), 'state' => request('state'), 'zip' => request('zip'), ]); return redirect()->route('schools.show', $school->id)->with('success', 'School details updated'); } public function my_school() { if (Auth::user()->school) { return redirect('/schools/'.Auth::user()->school->id); } return redirect('/schools/create'); } }