Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

DeleteUser.php 1.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <?php
  2. namespace App\Actions\FilamentCompanies;
  3. use App\Models\{Company, User};
  4. use Illuminate\Support\Facades\DB;
  5. use Wallo\FilamentCompanies\Contracts\{DeletesCompanies, DeletesUsers};
  6. class DeleteUser implements DeletesUsers
  7. {
  8. /**
  9. * The company deleter implementation.
  10. */
  11. protected DeletesCompanies $deletesCompanies;
  12. /**
  13. * Create a new action instance.
  14. */
  15. public function __construct(DeletesCompanies $deletesCompanies)
  16. {
  17. $this->deletesCompanies = $deletesCompanies;
  18. }
  19. /**
  20. * Delete the given user.
  21. */
  22. public function delete(User $user): void
  23. {
  24. DB::transaction(function () use ($user) {
  25. $this->deleteCompanies($user);
  26. $user->deleteProfilePhoto();
  27. $user->connectedAccounts->each(static fn ($account) => $account->delete());
  28. $user->tokens->each(static fn ($token) => $token->delete());
  29. $user->delete();
  30. });
  31. }
  32. /**
  33. * Delete the companies and company associations attached to the user.
  34. */
  35. protected function deleteCompanies(User $user): void
  36. {
  37. $user->companies()->detach();
  38. $user->ownedCompanies->each(function (Company $company) {
  39. $this->deletesCompanies->delete($company);
  40. });
  41. }
  42. }