diff --git a/app/Http/Controllers/Auth/RegisteredUserController.php b/app/Http/Controllers/Auth/RegisteredUserController.php index 3887f1c..9990ba4 100644 --- a/app/Http/Controllers/Auth/RegisteredUserController.php +++ b/app/Http/Controllers/Auth/RegisteredUserController.php @@ -8,7 +8,9 @@ use Illuminate\Auth\Events\Registered; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Hash; +use Illuminate\Support\Facades\Validator; use Illuminate\Validation\Rules; use Illuminate\Validation\ValidationException; use Inertia\Inertia; @@ -31,12 +33,21 @@ class RegisteredUserController extends Controller */ public function store(Request $request): RedirectResponse { - $request->validate([ - 'name' => 'required|string|max:255', + + $validator = Validator::make($request->all(), [ + 'name' => 'required|string|max:32|alpha_dash', 'email' => 'required|string|lowercase|email|max:255|unique:'.User::class, 'password' => ['required', 'confirmed', Rules\Password::defaults()], ]); + $validator->after(function ($validator) use ($request) { + if (User::whereRaw(DB::raw('LOWER(name) = ?'), [strtolower($request->name)])->exists()) { + $validator->errors()->add('name', 'The name has already been taken.'); + } + }); + + $validator->validate(); + $user = User::create([ 'name' => $request->name, 'email' => $request->email, diff --git a/app/Http/Controllers/FlightProfileController.php b/app/Http/Controllers/FlightProfileController.php new file mode 100644 index 0000000..53c75aa --- /dev/null +++ b/app/Http/Controllers/FlightProfileController.php @@ -0,0 +1,23 @@ +firstOrFail(); + + $flights = UserFlight::where('user_id', $user->id)->get(); + + return Inertia::render('FlightProfile', [ + 'user' => $user, + 'flights' => $flights, + ]); + } +} diff --git a/resources/js/Pages/Auth/Register.vue b/resources/js/Pages/Auth/Register.vue index cf06d23..7395a44 100644 --- a/resources/js/Pages/Auth/Register.vue +++ b/resources/js/Pages/Auth/Register.vue @@ -28,8 +28,8 @@ const submit = () => { diff --git a/resources/js/Pages/FlightProfile.vue b/resources/js/Pages/FlightProfile.vue new file mode 100644 index 0000000..d6fb50d --- /dev/null +++ b/resources/js/Pages/FlightProfile.vue @@ -0,0 +1,58 @@ + + + + + diff --git a/routes/web.php b/routes/web.php index 97a2734..904e6fc 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,6 +1,7 @@ group( }); + Route::get('/dashboard', function () { return Inertia::render('Dashboard'); })->middleware(['auth', 'verified'])->name('dashboard'); @@ -59,6 +61,9 @@ Route::domain(config('app.domain'))->group( Route::get('/search/aircraft', [SearchController::class, 'aircraft'])->name('search.aircraft'); Route::get('/search/airports', [SearchController::class, 'airports'])->name('search.airports'); + + Route::get('/u/{username}', [FlightProfileController::class, 'view']); + require __DIR__.'/auth.php'; }