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'), ]); $message = 'Created school #'.$school->id.' - '.$school->name.' with address
'.$school->address.'
'.$school->city.', '.$school->state.' '.$school->zip; AuditLogEntry::create([ 'user' => auth()->user()->email, 'ip_address' => request()->ip(), 'message' => $message, 'affected' => ['schools' => [$school->id]], ]); if (! Auth::user()->school) { Auth::user()->update([ 'school_id' => $school->id, ]); $message = 'Set user '.auth()->user()->full_name().' ('.auth()->user()->email.') as a director at '.$school->name.'(#'.$school->id.')'; AuditLogEntry::create([ 'user' => auth()->user()->email, 'ip_address' => request()->ip(), 'message' => $message, 'affected' => [ 'users' => [auth()->user()->id], 'schools' => [$school->id], ], ]); SchoolEmailDomain::create([ 'school_id' => $school->id, 'domain' => Auth::user()->emailDomain(), ]); $message = 'Added '.auth()->user()->emailDomain().' as an email domain for '.$school->name.' (#'.$school->id.')'; AuditLogEntry::create([ 'user' => auth()->user()->email, 'ip_address' => request()->ip(), 'message' => $message, 'affected' => [ 'schools' => [$school->id], ], ]); auth()->user()->refresh(); try { $headSetter->setHeadDirector(auth()->user()); } catch (AuditionAdminException $e) { redirect(route('schools.show', $school))->with('error', 'Could not set as head director'); } } 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'), ]); $message = 'Modified school #'.$school->id.' - '.$school->name.' with address
'.$school->address.'
'.$school->city.', '.$school->state.' '.$school->zip; AuditLogEntry::create([ 'user' => auth()->user()->email, 'ip_address' => request()->ip(), 'message' => $message, 'affected' => ['schools' => [$school->id]], ]); 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'); } }