Path: blob/1.0-develop/app/Services/Databases/DatabasePasswordService.php
10262 views
<?php12namespace Pterodactyl\Services\Databases;34use Pterodactyl\Models\Database;5use Pterodactyl\Helpers\Utilities;6use Illuminate\Database\ConnectionInterface;7use Illuminate\Contracts\Encryption\Encrypter;8use Pterodactyl\Extensions\DynamicDatabaseConnection;9use Pterodactyl\Contracts\Repository\DatabaseRepositoryInterface;1011class DatabasePasswordService12{13/**14* DatabasePasswordService constructor.15*/16public function __construct(17private ConnectionInterface $connection,18private DynamicDatabaseConnection $dynamic,19private Encrypter $encrypter,20private DatabaseRepositoryInterface $repository,21) {22}2324/**25* Updates a password for a given database.26*27* @throws \Throwable28*/29public function handle(Database|int $database): string30{31$password = Utilities::randomStringWithSpecialCharacters(24);3233$this->connection->transaction(function () use ($database, $password) {34$this->dynamic->set('dynamic', $database->database_host_id);3536$this->repository->withoutFreshModel()->update($database->id, [37'password' => $this->encrypter->encrypt($password),38]);3940$this->repository->dropUser($database->username, $database->remote);41$this->repository->createUser($database->username, $database->remote, $password, $database->max_connections);42$this->repository->assignUserToDatabase($database->database, $database->username, $database->remote);43$this->repository->flush();44});4546return $password;47}48}495051