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 @@

Hello, {{ $user->first_name }} {{ $user->last_name }}

-

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.

diff --git a/resources/views/schools/show.blade.php b/resources/views/schools/show.blade.php index df818e2..d074753 100644 --- a/resources/views/schools/show.blade.php +++ b/resources/views/schools/show.blade.php @@ -1,39 +1,72 @@ - - School Info - {{ $school->name }} +
+ + School Info - {{ $school->name }} -
- - - -
-
- {{ $school->name }}
- {{ $school->address }}
- {{ $school->city }}, {{ $school->state }} {{ $school->zip }} +
+ + + +
+
+ {{ $school->name }}
+ {{ $school->address }}
+ {{ $school->city }}, {{ $school->state }} {{ $school->zip }} +
+
- -
- + - -
    - @foreach($school->directors as $director) -
  • {{ $director->full_name() }} - {{ $director->email }}
  • - @endforeach -
-
+ +
    + @foreach($school->directors as $director) +
  • + {{ $director->full_name() }} + @if($director->hasFlag('head_director')) (head) @endif + - + {{ $director->email }} +
  • + @endforeach +
+ @if(auth()->user()->hasFlag('head_director')) +
+ Add Director + Change Head +
+ @endif +
- -
    - @foreach($school->emailDomains as $domain) -
  • {{ $domain->domain }}
  • - @endforeach -
-
- - -
+ +
    + @foreach($school->emailDomains as $domain) +
  • {{ $domain->domain }}
  • + @endforeach +
+
+ + +
- + + + @if(auth()->user()->hasFlag('head_director')) + + Add Director + + + + + + + + + + + + + + Change Head Director + + @endif +
diff --git a/routes/user.php b/routes/user.php index a210d90..1c30eb5 100644 --- a/routes/user.php +++ b/routes/user.php @@ -52,6 +52,7 @@ Route::middleware(['auth', 'verified'])->controller(SchoolController::class)->gr Route::get('/schools/{school}/edit', 'edit')->name('schools.edit'); Route::get('/schools/{school}', 'show')->name('schools.show'); Route::patch('/schools/{school}', 'update')->name('schools.update'); + Route::post('schools/{school}/add_director', 'addDirector')->name('schools.add_director'); }); // Doubler Related Routes