Pennant: all feature flags were replaced by BillingCycle, so remove the package (composer), the now-empty app/Features discovery, the pennant-development skill, and replace the create_features_table migration with a drop_features_table. Timezone: the registration flow collected a user timezone (seeder, request validation, hidden field) but no timezone column ever existed and CreateUser discarded it. Remove the dead handling, the orphaned Timezone rule, and the tests that covered the now-removed validation.
69 lines
2 KiB
PHP
69 lines
2 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Http\Controllers\Auth;
|
|
|
|
use App\Actions\User\CreateUser;
|
|
use App\Http\Controllers\Auth\Concerns\PreservesUtmParameters;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\User;
|
|
use Illuminate\Auth\Events\Registered;
|
|
use Illuminate\Http\RedirectResponse;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Validation\Rules;
|
|
use Inertia\Inertia;
|
|
use Inertia\Response;
|
|
|
|
class RegisteredUserController extends Controller
|
|
{
|
|
use PreservesUtmParameters;
|
|
|
|
public function create(Request $request): Response
|
|
{
|
|
$this->storeUtmParameters($request);
|
|
|
|
return Inertia::render('auth/Register', [
|
|
'email' => $request->query('email'),
|
|
'redirect' => $request->query('redirect'),
|
|
]);
|
|
}
|
|
|
|
public function store(Request $request): RedirectResponse
|
|
{
|
|
$request->validate([
|
|
'name' => ['required', 'string', 'max:255'],
|
|
'email' => ['required', 'string', 'lowercase', 'email', 'max:255', 'unique:'.User::class],
|
|
'password' => ['required', Rules\Password::defaults()],
|
|
]);
|
|
|
|
$isInviteRegistration = str_contains($request->input('redirect', ''), '/invites/');
|
|
|
|
$utmParameters = $this->retrieveUtmParameters();
|
|
|
|
$user = CreateUser::execute([
|
|
'name' => $request->name,
|
|
'email' => $request->email,
|
|
'password' => $request->password,
|
|
'is_invite' => $isInviteRegistration,
|
|
'registration_ip' => $request->ip(),
|
|
], $utmParameters);
|
|
|
|
event(new Registered($user));
|
|
|
|
Auth::login($user);
|
|
|
|
$request->session()->forget('pending_invite_id');
|
|
|
|
if ($redirect = $request->input('redirect')) {
|
|
if (str_starts_with($redirect, '/') && ! str_starts_with($redirect, '//')) {
|
|
return redirect($redirect);
|
|
}
|
|
}
|
|
|
|
session()->flash('auth_provider', 'email');
|
|
|
|
return redirect()->route('register.success', $utmParameters);
|
|
}
|
|
}
|