diff --git a/app/Http/Controllers/SchoolController.php b/app/Http/Controllers/SchoolController.php index d419036..1f78afc 100644 --- a/app/Http/Controllers/SchoolController.php +++ b/app/Http/Controllers/SchoolController.php @@ -4,14 +4,20 @@ namespace App\Http\Controllers; use App\Actions\Schools\SetHeadDirector; use App\Exceptions\AuditionAdminException; +use App\Mail\NewUserPassword; use App\Models\AuditLogEntry; use App\Models\School; use App\Models\SchoolEmailDomain; +use App\Models\User; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\Hash; +use Illuminate\Support\Facades\Mail; +use Illuminate\Support\Str; use function abort; +use function auditionLog; use function redirect; use function request; @@ -150,4 +156,39 @@ class SchoolController extends Controller return redirect('/schools/create'); } + + public function addDirector(School $school) + { + + if (auth()->user()->school_id !== $school->id) { + return redirect()->back()->with('error', 'No adding directors to another school'); + } + if (! auth()->user()->hasFlag('head_director')) { + return redirect()->back()->with('error', 'Only the head director can add directors to a school'); + } + $validData = request()->validate([ + 'first_name' => ['required'], + 'last_name' => ['required'], + 'email' => ['required', 'email', 'unique:users'], + 'cell_phone' => ['required'], + 'judging_preference' => ['required'], + ]); + // Generate a random password + $randomPassword = Str::random(12); + $newUser = User::create([ + 'first_name' => $validData['first_name'], + 'last_name' => $validData['last_name'], + 'email' => $validData['email'], + 'cell_phone' => $validData['cell_phone'], + 'judging_preference' => $validData['judging_preference'], + 'password' => Hash::make($randomPassword), + 'school_id' => auth()->user()->school_id, + ]); + $logMessage = 'Created user '.$newUser->full_name().' - '.$newUser->email.' as a director at '.$newUser->school->name; + $logAffected = ['users' => [$newUser->id], 'schools' => [$newUser->school_id]]; + auditionLog($logMessage, $logAffected); + Mail::to($newUser->email)->send(new NewUserPassword($newUser, $randomPassword)); + + return redirect()->back()->with('success', 'Director added'); + } } diff --git a/resources/views/emails/new_user_password.blade.php b/resources/views/emails/new_user_password.blade.php index a9519d9..990ac82 100644 --- a/resources/views/emails/new_user_password.blade.php +++ b/resources/views/emails/new_user_password.blade.php @@ -5,9 +5,10 @@
Your account has been created. Here are your login details:
+Your AuditionAdmin account for {{ auditionSetting('auditionAbbreviation') }} has been created. Here are your login details:
Email: {{ $user->email }}
Password: {{ $password }}
+Login at: {{route('login')}}
Please change your password after logging in for the first time.