$request->query('email'), 'redirect' => $request->query('redirect'), ]); } /** * Handle an incoming registration request. */ 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()], ]); // Check if registering via invite link (redirect contains /invites/) $isInviteRegistration = str_contains($request->input('redirect', ''), '/invites/'); $user = DB::transaction(function () use ($request, $isInviteRegistration) { $defaultLanguage = Language::where('code', 'en-US')->first(); $user = User::create([ 'name' => $request->name, 'email' => $request->email, 'password' => $request->password, 'setup' => $isInviteRegistration ? Setup::Completed : Setup::Role, 'language_id' => $defaultLanguage?->id, 'email_verified_at' => $isInviteRegistration ? now() : null, ]); // Create default workspace for new user $workspace = Workspace::create([ 'user_id' => $user->id, 'name' => $user->name."'s Workspace", 'timezone' => 'UTC', ]); // Add user as owner member $workspace->members()->attach($user->id, ['role' => 'owner']); // Set as current workspace $user->update(['current_workspace_id' => $workspace->id]); return $user; }); event(new Registered($user)); Auth::login($user); // Check for redirect param if ($redirect = $request->input('redirect')) { return redirect($redirect); } return redirect()->route('onboarding.step1'); } }