Path: blob/1.0-develop/app/Services/Users/UserDeletionService.php
10277 views
<?php12namespace Pterodactyl\Services\Users;34use Pterodactyl\Models\User;5use Pterodactyl\Exceptions\DisplayException;6use Illuminate\Contracts\Translation\Translator;7use Pterodactyl\Contracts\Repository\UserRepositoryInterface;8use Pterodactyl\Contracts\Repository\ServerRepositoryInterface;910class UserDeletionService11{12/**13* UserDeletionService constructor.14*/15public function __construct(16protected UserRepositoryInterface $repository,17protected ServerRepositoryInterface $serverRepository,18protected Translator $translator,19) {20}2122/**23* Delete a user from the panel only if they have no servers attached to their account.24*25* @throws DisplayException26*/27public function handle(int|User $user): ?bool28{29if ($user instanceof User) {30$user = $user->id;31}3233$servers = $this->serverRepository->setColumns('id')->findCountWhere([['owner_id', '=', $user]]);34if ($servers > 0) {35throw new DisplayException($this->translator->get('admin/user.exceptions.user_has_servers'));36}3738return $this->repository->delete($user); // @phpstan-ignore return.type (this has been like this, unsure at the moment what is truly correct)39}40}414243