connection = $connection; $this->hasher = $hasher; $this->passwordBroker = $passwordBroker; $this->repository = $repository; } /** * Create a new user on the system. * * @param array $data * @return \Pterodactyl\Models\User * * @throws \Exception * @throws \Pterodactyl\Exceptions\Model\DataValidationException */ public function handle(array $data) { if (array_key_exists('password', $data) && ! empty($data['password'])) { $data['password'] = $this->hasher->make($data['password']); } $this->connection->beginTransaction(); if (! isset($data['password']) || empty($data['password'])) { $generateResetToken = true; $data['password'] = $this->hasher->make(str_random(30)); } /** @var \Pterodactyl\Models\User $user */ $user = $this->repository->create(array_merge($data, [ 'uuid' => Uuid::uuid4()->toString(), ]), true, true); if (isset($generateResetToken)) { $token = $this->passwordBroker->createToken($user); } $this->connection->commit(); $user->notify(new AccountCreated($user, $token ?? null)); return $user; } }