96 lines
2.9 KiB
PHP
96 lines
2.9 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Admin;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Mail\NewUserPassword;
|
|
use App\Models\School;
|
|
use App\Models\User;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Support\Facades\Hash;
|
|
use Illuminate\Support\Facades\Mail;
|
|
use Illuminate\Support\Str;
|
|
|
|
class UserController extends Controller
|
|
{
|
|
public function index()
|
|
{
|
|
if (! Auth::user()->is_admin) abort(403);
|
|
$users = User::with('school')->orderBy('last_name')->orderBy('first_name')->get();
|
|
return view('admin.users.index', ['users' => $users]);
|
|
}
|
|
|
|
public function edit(User $user)
|
|
{
|
|
if (! Auth::user()->is_admin) abort(403);
|
|
$schools = School::orderBy('name')->get();
|
|
return view('admin.users.edit', ['user' => $user,'schools' => $schools]);
|
|
}
|
|
|
|
public function create()
|
|
{
|
|
if (! Auth::user()->is_admin) abort(403);
|
|
$schools = School::orderBy('name')->get();
|
|
return view('admin.users.create', ['schools' => $schools]);
|
|
}
|
|
|
|
public function update(Request $request, User $user)
|
|
{
|
|
if (! Auth::user()->is_admin) abort(403);
|
|
|
|
request()->validate([
|
|
'first_name' => ['required'],
|
|
'last_name' => ['required'],
|
|
'email' => ['required', 'email'],
|
|
'cell_phone' => ['required'],
|
|
'judging_preference' => ['required'],
|
|
'school_id' => ['required','exists:schools,id'],
|
|
]);
|
|
|
|
$user->update([
|
|
'first_name' => request('first_name'),
|
|
'last_name' => request('last_name'),
|
|
'email' => request('email'),
|
|
'cell_phone' => request('cell_phone'),
|
|
'judging_preference' => request('judging_preference'),
|
|
'school_id' => request('school_id')
|
|
]);
|
|
|
|
return redirect('/admin/users');
|
|
}
|
|
|
|
public function store(Request $request)
|
|
{
|
|
$request->validate([
|
|
'first_name' => ['required'],
|
|
'last_name' => ['required'],
|
|
'email' => ['required', 'email','unique:users'],
|
|
]);
|
|
|
|
// Genearte a random password
|
|
$randomPassword = Str::random(12);
|
|
|
|
$user = \App\Models\User::make([
|
|
'first_name' => request('first_name'),
|
|
'last_name' => request('last_name'),
|
|
'email' => request('email'),
|
|
'cell_phone' => request('cell_phone'),
|
|
'judging_preference' => request('judging_preference'),
|
|
'password' => Hash::make($randomPassword),
|
|
]);
|
|
|
|
if (!is_null(request('school_id'))) {
|
|
$request->validate([
|
|
'school_id' => ['exists:schools,id']
|
|
]);
|
|
}
|
|
$user->school_id = request('school_id');
|
|
$user->save();
|
|
|
|
Mail::to($user->email)->send(new NewUserPassword($user, $randomPassword));
|
|
|
|
return redirect('/admin/users');
|
|
}
|
|
}
|