Settings bugfix, frontend implementation, API CLI template integration
This commit is contained in:
@@ -17,8 +17,13 @@ class StringType extends Parameter {
|
||||
return false;
|
||||
}
|
||||
|
||||
// as long as it's numeric or bool, we can safely cast it to a string
|
||||
if (!is_string($value)) {
|
||||
return false;
|
||||
if (is_bool($value) || is_int($value) || is_float($value)) {
|
||||
$this->value = strval($value);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if ($this->maxLength > 0 && strlen($value) > $this->maxLength) {
|
||||
|
||||
@@ -129,6 +129,8 @@ abstract class Request {
|
||||
}
|
||||
|
||||
protected abstract function _execute(): bool;
|
||||
|
||||
// TODO: replace this function with two abstract methods: getDefaultPermittedGroups and getDescription
|
||||
public static function getDefaultACL(Insert $insert): void { }
|
||||
|
||||
protected function check2FA(?TwoFactorToken $tfaToken = null): bool {
|
||||
|
||||
@@ -13,6 +13,7 @@ namespace Core\API {
|
||||
|
||||
namespace Core\API\Settings {
|
||||
|
||||
use Core\API\Parameter\ArrayType;
|
||||
use Core\API\Parameter\Parameter;
|
||||
use Core\API\Parameter\StringType;
|
||||
use Core\API\SettingsAPI;
|
||||
@@ -20,8 +21,6 @@ namespace Core\API\Settings {
|
||||
use Core\Driver\SQL\Column\Column;
|
||||
use Core\Driver\SQL\Condition\CondBool;
|
||||
use Core\Driver\SQL\Condition\CondIn;
|
||||
use Core\Driver\SQL\Condition\CondNot;
|
||||
use Core\Driver\SQL\Condition\CondRegex;
|
||||
use Core\Driver\SQL\Query\Insert;
|
||||
use Core\Driver\SQL\Strategy\UpdateStrategy;
|
||||
use Core\Objects\Context;
|
||||
@@ -57,7 +56,7 @@ namespace Core\API\Settings {
|
||||
class Set extends SettingsAPI {
|
||||
public function __construct(Context $context, bool $externalCall = false) {
|
||||
parent::__construct($context, $externalCall, array(
|
||||
'settings' => new Parameter('settings', Parameter::TYPE_ARRAY)
|
||||
'settings' => new ArrayType("settings", Parameter::TYPE_MIXED)
|
||||
));
|
||||
}
|
||||
|
||||
@@ -75,13 +74,13 @@ namespace Core\API\Settings {
|
||||
$keys = array();
|
||||
$deleteKeys = array();
|
||||
|
||||
foreach($values as $key => $value) {
|
||||
foreach ($values as $key => $value) {
|
||||
if (!$paramKey->parseParam($key)) {
|
||||
$key = print_r($key, true);
|
||||
return $this->createError("Invalid Type for key in parameter settings: '$key' (Required: " . $paramKey->getTypeName() . ")");
|
||||
} else if(!is_null($value) && !$paramValue->parseParam($value)) {
|
||||
} else if (!is_null($value) && !$paramValue->parseParam($value)) {
|
||||
$value = print_r($value, true);
|
||||
return $this->createError("Invalid Type for value in parameter settings: '$value' (Required: " . $paramValue->getTypeName() . ")");
|
||||
return $this->createError("Invalid Type for value in parameter settings for key '$key': '$value' (Required: " . $paramValue->getTypeName() . ")");
|
||||
} else if(preg_match("/^[a-zA-Z_][a-zA-Z_0-9-]*$/", $paramKey->value) !== 1) {
|
||||
return $this->createError("The property key should only contain alphanumeric characters, underscores and dashes");
|
||||
} else {
|
||||
@@ -91,6 +90,8 @@ namespace Core\API\Settings {
|
||||
$deleteKeys[] = $paramKey->value;
|
||||
}
|
||||
$keys[] = $paramKey->value;
|
||||
$paramKey->reset();
|
||||
$paramValue->reset();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -103,7 +104,7 @@ namespace Core\API\Settings {
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($deleteKeys) && !$this->deleteKeys($keys)) {
|
||||
if (!empty($deleteKeys) && !$this->deleteKeys($deleteKeys)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"settings" => "Einstellungen",
|
||||
"title" => "Einstellungen",
|
||||
"information" => "Informationen",
|
||||
|
||||
# API Key
|
||||
@@ -21,5 +21,40 @@ return [
|
||||
"Unter Android kannst du den Google Authenticator benutzen.",
|
||||
"register_2fa_fido_text" => "Möglicherweise musst du mit dem Gerät interagieren, zum Beispiel durch Eingeben einer PIN oder durch Berühren des Geräts",
|
||||
"remove_2fa" => "2FA-Token entfernen",
|
||||
"remove_2fa_text" => "Gib dein aktuelles Passwort ein um das Entfernen des 2FA-Tokens zu bestätigen"
|
||||
"remove_2fa_text" => "Gib dein aktuelles Passwort ein um das Entfernen des 2FA-Tokens zu bestätigen",
|
||||
|
||||
# settings
|
||||
"key" => "Schlüssel",
|
||||
"value" => "Wert",
|
||||
"general" => "Allgemein",
|
||||
"mail" => "Mail",
|
||||
"recaptcha" => "reCaptcha",
|
||||
"uncategorized" => "Unkategorisiert",
|
||||
"unchanged" => "Unverändert",
|
||||
|
||||
# general settings
|
||||
"site_name" => "Seitenname",
|
||||
"base_url" => "Basis URL",
|
||||
"user_registration_enabled" => "Benutzerregistrierung erlauben",
|
||||
"allowed_extensions" => "Erlaubte Dateierweiterungen",
|
||||
"time_zone" => "Zeitzone",
|
||||
|
||||
# mail settings
|
||||
"mail_enabled" => "E-Mail Versand aktiviert",
|
||||
"mail_from" => "Absender E-Mailadresse",
|
||||
"mail_host" => "Mail-Server Host",
|
||||
"mail_port" => "Mail-Server Port",
|
||||
"mail_username" => "Mail-Server Benutzername",
|
||||
"mail_password" => "Mail-Server Passwort",
|
||||
"mail_footer" => "Pfad zum E-Mail-Footer",
|
||||
|
||||
# recaptcha
|
||||
"recaptcha_enabled" => "Aktiviere Google reCaptcha",
|
||||
"recaptcha_public_key" => "reCaptcha öffentlicher Schlüssel",
|
||||
"recaptcha_private_key" => "reCaptcha privater Schlüssel",
|
||||
|
||||
# dialog
|
||||
"fetch_settings_error" => "Fehler beim Holen der Einstellungen",
|
||||
"save_settings_success" => "Einstellungen erfolgreich gespeichert",
|
||||
"save_settings_error" => "Fehler beim Speichern der Einstellungen",
|
||||
];
|
||||
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"settings" => "Settings",
|
||||
"title" => "Settings",
|
||||
"information" => "Information",
|
||||
|
||||
# API Key
|
||||
@@ -22,4 +22,39 @@ return [
|
||||
"register_2fa_fido_text" => "You may need to interact with your Device, e.g. typing in your PIN or touching to confirm the registration.",
|
||||
"remove_2fa" => "Remove 2FA Token",
|
||||
"remove_2fa_text" => "Enter your current password to confirm the removal of your 2FA Token",
|
||||
|
||||
# settings
|
||||
"key" => "Key",
|
||||
"value" => "Value",
|
||||
"general" => "General",
|
||||
"mail" => "Mail",
|
||||
"recaptcha" => "reCaptcha",
|
||||
"uncategorized" => "Uncategorized",
|
||||
"unchanged" => "Unchanged",
|
||||
|
||||
# general settings
|
||||
"site_name" => "Site Name",
|
||||
"base_url" => "Base URL",
|
||||
"user_registration_enabled" => "Allow user registration",
|
||||
"allowed_extensions" => "Allowed file extensions",
|
||||
"time_zone" => "Time zone",
|
||||
|
||||
# mail settings
|
||||
"mail_enabled" => "Enable e-mail transport",
|
||||
"mail_from" => "Sender e-mail address",
|
||||
"mail_host" => "Mail server host",
|
||||
"mail_port" => "Mail server port",
|
||||
"mail_username" => "Mail server username",
|
||||
"mail_password" => "Mail server password",
|
||||
"mail_footer" => "Path to e-mail footer",
|
||||
|
||||
# recaptcha
|
||||
"recaptcha_enabled" => "Enable Google reCaptcha",
|
||||
"recaptcha_public_key" => "reCaptcha Public Key",
|
||||
"recaptcha_private_key" => "reCaptcha Private Key",
|
||||
|
||||
# dialog
|
||||
"fetch_settings_error" => "Error fetching settings",
|
||||
"save_settings_success" => "Settings saved successfully",
|
||||
"save_settings_error" => "Error saving settings",
|
||||
];
|
||||
Reference in New Issue
Block a user