$input */ public function create(array $input): User { Validator::make($input, [ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 'password' => ['required', 'string', 'min:8', 'confirmed'], 'terms' => FilamentCompanies::hasTermsAndPrivacyPolicyFeature() ? ['accepted', 'required'] : '', ])->validate(); return DB::transaction(function () use ($input) { return tap(User::create([ 'name' => $input['name'], 'email' => $input['email'], 'password' => Hash::make($input['password']), ]), function (User $user) { $this->createCompany($user); }); }); } /** * Create a personal company for the user. */ protected function createCompany(User $user): void { $user->ownedCompanies()->save(Company::forceCreate([ 'user_id' => $user->id, 'name' => explode(' ', $user->name, 2)[0] . "'s Company", 'personal_company' => true, ])); } }