Typesafe ConfigurationController.php

Signed-off-by: Jean-Yves <7360784+docjyJ@users.noreply.github.com>
This commit is contained in:
Jean-Yves 2024-09-24 19:51:18 +02:00
parent 890bcc9434
commit d674ba4f6e
No known key found for this signature in database
GPG key ID: 644C8B9C4CABAEF7

View file

@ -21,123 +21,64 @@ class ConfigurationController
public function SetConfig(Request $request, Response $response, array $args) : Response { public function SetConfig(Request $request, Response $response, array $args) : Response {
try { try {
if (isset($request->getParsedBody()['domain'])) { $body = $request->getParsedBody();
$domain = $request->getParsedBody()['domain'] ?? ''; if (is_array($body)) {
$this->configurationManager->SetDomain($domain); if (is_string($body['domain']))
} $this->configurationManager->SetDomain($body['domain']);
if (isset($request->getParsedBody()['current-master-password']) || isset($request->getParsedBody()['new-master-password'])) { $currentMasterPassword = is_string($body['current-master-password']) ? $body['current-master-password'] : null;
$currentMasterPassword = $request->getParsedBody()['current-master-password'] ?? ''; $newMasterPassword = is_string($body['new-master-password']) ? $body['new-master-password'] : null;
$newMasterPassword = $request->getParsedBody()['new-master-password'] ?? ''; if ($currentMasterPassword !== null || $newMasterPassword !== null)
$this->configurationManager->ChangeMasterPassword($currentMasterPassword, $newMasterPassword); $this->configurationManager->ChangeMasterPassword($currentMasterPassword ?? '', $newMasterPassword ?? '');
}
if (isset($request->getParsedBody()['borg_backup_host_location'])) { if (is_string($body['borg_backup_host_location']))
$location = $request->getParsedBody()['borg_backup_host_location'] ?? ''; $this->configurationManager->SetBorgBackupHostLocation($body['borg_backup_host_location']);
$this->configurationManager->SetBorgBackupHostLocation($location);
}
if (isset($request->getParsedBody()['borg_restore_host_location']) || isset($request->getParsedBody()['borg_restore_password'])) { $borgRestoreHostLocation = is_string($body['borg_restore_host_location']) ? $body['borg_restore_host_location'] : null;
$restoreLocation = $request->getParsedBody()['borg_restore_host_location'] ?? ''; $borgRestorePassword = is_string($body['borg_restore_password']) ? $body['borg_restore_password'] : null;
$borgPassword = $request->getParsedBody()['borg_restore_password'] ?? ''; if ($borgRestoreHostLocation !== null || $borgRestorePassword !== null)
$this->configurationManager->SetBorgRestoreHostLocationAndPassword($restoreLocation, $borgPassword); $this->configurationManager->SetBorgRestoreHostLocationAndPassword($borgRestoreHostLocation ?? '', $borgRestorePassword ?? '');
}
if (isset($request->getParsedBody()['daily_backup_time'])) { if (is_string($body['daily_backup_time']))
if (isset($request->getParsedBody()['automatic_updates'])) { $this->configurationManager->SetDailyBackupTime(
$enableAutomaticUpdates = true; $body['daily_backup_time'],
} else { isset($body['automatic_updates']),
$enableAutomaticUpdates = false; isset($body['success_notification']));
}
if (isset($request->getParsedBody()['success_notification'])) {
$successNotification = true;
} else {
$successNotification = false;
}
$dailyBackupTime = $request->getParsedBody()['daily_backup_time'] ?? '';
$this->configurationManager->SetDailyBackupTime($dailyBackupTime, $enableAutomaticUpdates, $successNotification);
}
if (isset($request->getParsedBody()['delete_daily_backup_time'])) { if (isset($body['delete_daily_backup_time']))
$this->configurationManager->DeleteDailyBackupTime(); $this->configurationManager->DeleteDailyBackupTime();
}
if (isset($request->getParsedBody()['additional_backup_directories'])) { if (is_string($body['additional_backup_directories']))
$additionalBackupDirectories = $request->getParsedBody()['additional_backup_directories'] ?? ''; $this->configurationManager->SetAdditionalBackupDirectories($body['additional_backup_directories']);
$this->configurationManager->SetAdditionalBackupDirectories($additionalBackupDirectories);
}
if (isset($request->getParsedBody()['delete_timezone'])) { if (isset($body['delete_timezone']))
$this->configurationManager->DeleteTimezone(); $this->configurationManager->DeleteTimezone();
}
if (isset($request->getParsedBody()['timezone'])) { if (is_string($body['timezone']))
$timezone = $request->getParsedBody()['timezone'] ?? ''; $this->configurationManager->SetTimezone($body['timezone']);
$this->configurationManager->SetTimezone($timezone);
}
if (isset($request->getParsedBody()['options-form'])) { if (isset($body['options-form'])) {
if (isset($request->getParsedBody()['collabora']) && isset($request->getParsedBody()['onlyoffice'])) { if (isset($body['collabora']) && isset($body['onlyoffice']))
throw new InvalidSettingConfigurationException("Collabora and Onlyoffice are not allowed to be enabled at the same time!"); throw new InvalidSettingConfigurationException("Collabora and Onlyoffice are not allowed to be enabled at the same time!");
$this->configurationManager->SetClamavEnabledState(isset($body['clamav']) ? 1 : 0);
$this->configurationManager->SetOnlyofficeEnabledState(isset($body['onlyoffice']) ? 1 : 0);
$this->configurationManager->SetCollaboraEnabledState(isset($body['collabora']) ? 1 : 0);
$this->configurationManager->SetTalkEnabledState(isset($body['talk']) ? 1 : 0);
$this->configurationManager->SetTalkRecordingEnabledState(isset($body['talk-recording']) ? 1 : 0);
$this->configurationManager->SetImaginaryEnabledState(isset($body['imaginary']) ? 1 : 0);
$this->configurationManager->SetFulltextsearchEnabledState(isset($body['fulltextsearch']) ? 1 : 0);
$this->configurationManager->SetDockerSocketProxyEnabledState(isset($body['docker-socket-proxy']) ? 1 : 0);
$this->configurationManager->SetWhiteboardEnabledState(isset($body['whiteboard']) ? 1 : 0);
} }
if (isset($request->getParsedBody()['clamav'])) {
$this->configurationManager->SetClamavEnabledState(1);
} else {
$this->configurationManager->SetClamavEnabledState(0);
}
if (isset($request->getParsedBody()['onlyoffice'])) {
$this->configurationManager->SetOnlyofficeEnabledState(1);
} else {
$this->configurationManager->SetOnlyofficeEnabledState(0);
}
if (isset($request->getParsedBody()['collabora'])) {
$this->configurationManager->SetCollaboraEnabledState(1);
} else {
$this->configurationManager->SetCollaboraEnabledState(0);
}
if (isset($request->getParsedBody()['talk'])) {
$this->configurationManager->SetTalkEnabledState(1);
} else {
$this->configurationManager->SetTalkEnabledState(0);
}
if (isset($request->getParsedBody()['talk-recording'])) {
$this->configurationManager->SetTalkRecordingEnabledState(1);
} else {
$this->configurationManager->SetTalkRecordingEnabledState(0);
}
if (isset($request->getParsedBody()['imaginary'])) {
$this->configurationManager->SetImaginaryEnabledState(1);
} else {
$this->configurationManager->SetImaginaryEnabledState(0);
}
if (isset($request->getParsedBody()['fulltextsearch'])) {
$this->configurationManager->SetFulltextsearchEnabledState(1);
} else {
$this->configurationManager->SetFulltextsearchEnabledState(0);
}
if (isset($request->getParsedBody()['docker-socket-proxy'])) {
$this->configurationManager->SetDockerSocketProxyEnabledState(1);
} else {
$this->configurationManager->SetDockerSocketProxyEnabledState(0);
}
if (isset($request->getParsedBody()['whiteboard'])) {
$this->configurationManager->SetWhiteboardEnabledState(1);
} else {
$this->configurationManager->SetWhiteboardEnabledState(0);
}
}
if (isset($request->getParsedBody()['delete_collabora_dictionaries'])) { if (isset($body['delete_collabora_dictionaries']))
$this->configurationManager->DeleteCollaboraDictionaries(); $this->configurationManager->DeleteCollaboraDictionaries();
}
if (isset($request->getParsedBody()['collabora_dictionaries'])) { if (is_string($body['collabora_dictionaries']))
$collaboraDictionaries = $request->getParsedBody()['collabora_dictionaries'] ?? ''; $this->configurationManager->SetCollaboraDictionaries($body['collabora_dictionaries']);
$this->configurationManager->SetCollaboraDictionaries($collaboraDictionaries);
}
if (isset($request->getParsedBody()['delete_borg_backup_host_location'])) { if (isset($body['delete_borg_backup_host_location']))
$this->configurationManager->DeleteBorgBackupHostLocation(); $this->configurationManager->DeleteBorgBackupHostLocation();
} }
return $response->withStatus(201)->withHeader('Location', '/'); return $response->withStatus(201)->withHeader('Location', '/');