CreateTeam.php 933 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. <?php
  2. namespace App\Actions\Jetstream;
  3. use Illuminate\Support\Facades\Gate;
  4. use Illuminate\Support\Facades\Validator;
  5. use Laravel\Jetstream\Contracts\CreatesTeams;
  6. use Laravel\Jetstream\Events\AddingTeam;
  7. use Laravel\Jetstream\Jetstream;
  8. class CreateTeam implements CreatesTeams
  9. {
  10. /**
  11. * Validate and create a new team for the given user.
  12. *
  13. * @param mixed $user
  14. * @param array $input
  15. * @return mixed
  16. */
  17. public function create($user, array $input)
  18. {
  19. Gate::forUser($user)->authorize('create', Jetstream::newTeamModel());
  20. Validator::make($input, [
  21. 'name' => ['required', 'string', 'max:255'],
  22. ])->validateWithBag('createTeam');
  23. AddingTeam::dispatch($user);
  24. $user->switchTeam($team = $user->ownedTeams()->create([
  25. 'name' => $input['name'],
  26. 'personal_team' => false,
  27. ]));
  28. return $team;
  29. }
  30. }