123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- <?php
-
- namespace App\Actions\FilamentCompanies;
-
- use App\Models\Company;
- use App\Models\User;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Support\Facades\Hash;
- use Illuminate\Support\Facades\Validator;
- use Wallo\FilamentCompanies\Contracts\CreatesNewUsers;
- use Wallo\FilamentCompanies\FilamentCompanies;
-
- class CreateNewUser implements CreatesNewUsers
- {
- /**
- * Create a newly registered user.
- *
- * @param array<string, string> $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,
- ]));
- }
- }
|