diff --git a/src/ApiResource/GiteaSettings.php b/src/ApiResource/GiteaSettings.php new file mode 100644 index 0000000..7e1ae89 --- /dev/null +++ b/src/ApiResource/GiteaSettings.php @@ -0,0 +1,42 @@ + ['gitea_settings:read']], + provider: GiteaSettingsProvider::class, + security: "is_granted('ROLE_ADMIN')", + ), + new Put( + uriTemplate: '/settings/gitea', + denormalizationContext: ['groups' => ['gitea_settings:write']], + normalizationContext: ['groups' => ['gitea_settings:read']], + provider: GiteaSettingsProvider::class, + processor: GiteaSettingsProcessor::class, + security: "is_granted('ROLE_ADMIN')", + ), + ], +)] +final class GiteaSettings +{ + #[Groups(['gitea_settings:read', 'gitea_settings:write'])] + public ?string $url = null; + + #[Groups(['gitea_settings:write'])] + public ?string $token = null; + + #[Groups(['gitea_settings:read'])] + public bool $hasToken = false; +} diff --git a/src/State/GiteaSettingsProcessor.php b/src/State/GiteaSettingsProcessor.php new file mode 100644 index 0000000..48e59e8 --- /dev/null +++ b/src/State/GiteaSettingsProcessor.php @@ -0,0 +1,47 @@ +configRepository->findSingleton(); + if (null === $config) { + $config = new GiteaConfiguration(); + } + + $config->setUrl($data->url); + + if (null !== $data->token && '' !== $data->token) { + $config->setEncryptedToken($this->tokenEncryptor->encrypt($data->token)); + } + + $this->em->persist($config); + $this->em->flush(); + + $result = new GiteaSettings(); + $result->url = $config->getUrl(); + $result->hasToken = $config->hasToken(); + + return $result; + } +} diff --git a/src/State/GiteaSettingsProvider.php b/src/State/GiteaSettingsProvider.php new file mode 100644 index 0000000..7b3c76a --- /dev/null +++ b/src/State/GiteaSettingsProvider.php @@ -0,0 +1,30 @@ +configRepository->findSingleton(); + $dto = new GiteaSettings(); + + if (null !== $config) { + $dto->url = $config->getUrl(); + $dto->hasToken = $config->hasToken(); + } + + return $dto; + } +}