Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

CreateCompany.php 1.1KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. <?php
  2. namespace App\Actions\FilamentCompanies;
  3. use App\Models\Company;
  4. use App\Models\User;
  5. use Illuminate\Auth\Access\AuthorizationException;
  6. use Illuminate\Support\Facades\Gate;
  7. use Illuminate\Support\Facades\Validator;
  8. use Wallo\FilamentCompanies\Contracts\CreatesCompanies;
  9. use Wallo\FilamentCompanies\Events\AddingCompany;
  10. use Wallo\FilamentCompanies\FilamentCompanies;
  11. class CreateCompany implements CreatesCompanies
  12. {
  13. /**
  14. * Validate and create a new company for the given user.
  15. *
  16. * @param array<string, string> $input
  17. *
  18. * @throws AuthorizationException
  19. */
  20. public function create(User $user, array $input): Company
  21. {
  22. Gate::forUser($user)->authorize('create', FilamentCompanies::newCompanyModel());
  23. Validator::make($input, [
  24. 'name' => ['required', 'string', 'max:255'],
  25. ])->validateWithBag('createCompany');
  26. AddingCompany::dispatch($user);
  27. $user->switchCompany($company = $user->ownedCompanies()->create([
  28. 'name' => $input['name'],
  29. 'personal_company' => false,
  30. ]));
  31. return $company;
  32. }
  33. }