name('home'); // Auth pages Route::get('/login', function () { return view('auth.login'); })->name('login'); Route::post('/login', function (Request $request) { $validated = $request->validate([ 'email' => ['required', 'email'], 'password' => ['required'], ]); if (Auth::attempt(['email' => $validated['email'], 'password' => $validated['password']], $request->boolean('remember'))) { $request->session()->regenerate(); return redirect()->route('dashboard'); } return back()->withErrors([ 'email' => 'The provided credentials do not match our records.', ])->onlyInput('email'); })->name('login.post'); Route::get('/register', function () { return view('auth.register'); })->name('register'); Route::post('/register', function (Request $request) { $validated = $request->validate([ 'first_name' => ['required', 'string', 'max:255'], 'last_name' => ['required', 'string', 'max:255'], 'email' => ['required', 'email', 'max:255', 'unique:users,email'], 'password' => ['required', 'string', 'min:8', 'confirmed'], ]); $user = User::create([ 'name' => $validated['first_name'].' '.$validated['last_name'], 'email' => $validated['email'], 'password' => Hash::make($validated['password']), 'has_organization' => false, ]); Auth::login($user); $request->session()->regenerate(); return redirect()->route('dashboard'); })->name('register.post'); // Organization CRUD Route::middleware('auth')->group(function () { Route::post('/organizations', [OrganizationController::class, 'store'])->name('organizations.store'); Route::delete('/organizations/{organization}', [OrganizationController::class, 'destroy'])->name('organizations.destroy'); Route::put('/organizations/{organization}/switch', [OrganizationController::class, 'switch'])->name('organizations.switch'); }); // Dashboard (redirects to organizations if user has any, else login) Route::get('/dashboard', function () { if (! auth()->check()) { return redirect()->route('login'); } $user = auth()->user(); if ($user->has_organization && $user->organizations()->exists()) { $org = $user->organizations()->first(); return redirect()->route('organizations.show', $org); } return view('home'); })->name('dashboard'); // Organization management Route::middleware('auth')->group(function () { Route::get('/organizations/{organization}', [OrganizationController::class, 'show'])->name('organizations.show'); }); // Feature pages Route::get('/features/{feature}', function ($feature) { return view('features.show', ['feature' => $feature]); })->name('features');