Commit 21c75b69 authored by Henning Leutz's avatar Henning Leutz 🥋

refactor: global settings filter at backend communitcation + global quiqqer settings nonce

parent 4af84c2d
......@@ -11,7 +11,7 @@ QUI::$Ajax->registerFunction(
);
if (!QUI::conf('mail', 'admin_mail') || QUI::conf('mail', 'admin_mail') === '') {
QUI::getMessagesHandler()->addAttention(
QUI::getMessagesHandler()->addError(
QUI::getLocale()->get('quiqqer/quiqqer', 'message.missing.admin.mail')
);
}
......
......@@ -30,10 +30,36 @@ QUI::$Ajax->registerFunction(
if ($Config) {
$config = \array_merge_recursive($config, $Config->toArray());
}
// hidden fields
// dont show this in the frontend
if (\strpos($file, 'quiqqer/quiqqer/admin/settings/conf.xml') !== false) {
unset($config['db']);
unset($config['openssl']);
unset($config['globals']['salt']);
unset($config['globals']['saltlength']);
unset($config['globals']['cms_dir']);
unset($config['globals']['var_dir']);
unset($config['globals']['usr_dir']);
unset($config['globals']['opt_dir']);
unset($config['globals']['rootuser']);
unset($config['globals']['root']);
if (empty($config['globals']['nonce'])) {
$nonce = \QUI\Security\Password::generateRandom(10);
$Config->setValue('globals', 'nonce', $nonce);
$Config->save();
$config['globals']['nonce'] = $nonce;
}
}
}
return $config;
},
['file'],
'Permission::checkAdminUser'
'Permission::checkSU'
);
......@@ -78,6 +78,20 @@ QUI::$Ajax->registerFunction(
if (isset($params['db'])) {
unset($params['db']);
}
// nonce check
if (empty($params['globals']['nonce'])) {
throw new QUI\Exception('Could not save QUIQQER config');
}
$currentNonce = $params['globals']['nonce'];
$oldNonce = QUI::conf('globals', 'nonce');
if ($currentNonce !== $oldNonce) {
throw new QUI\Exception('Could not save QUIQQER config');
}
unset($params['globals']['nonce']);
}
QUI\Utils\Text\XML::setConfigFromXml($file, $params);
......
......@@ -9,11 +9,7 @@ QUI::getEvents()->fireEvent('adminRequest');
$qui_path = URL_OPT_DIR.'bin/qui/';
$qui_extend = URL_OPT_DIR.'bin/qui/extend/';
$config = [];
$config['globals'] = QUI::conf('globals');
$config['gui'] = QUI::conf('gui');
$config['permissions'] = QUI::conf('permissions');
$config = QUI::backendGuiConfigs();
$Project = null;
try {
......
......@@ -112,6 +112,9 @@
<type><![CDATA[string]]></type>
<defaultvalue>php</defaultvalue>
</conf>
<conf name="nonce">
<type><![CDATA[string]]></type>
</conf>
</section>
<section name="auth_settings">
......@@ -416,6 +419,7 @@
<option value="404">404 - Not Found</option>
</select>
<input type="hidden" conf="globals.nonce" />
</settings>
<settings title="templateengine" name="templateengine">
......
......@@ -515,6 +515,28 @@ class QUI
return self::$Conf->get($section, $key);
}
/**
* @return array
*/
public static function backendGuiConfigs()
{
$config = [];
$config['globals'] = QUI::conf('globals');
$config['gui'] = QUI::conf('gui');
$config['permissions'] = QUI::conf('permissions');
unset($config['globals']['salt']);
unset($config['globals']['saltlength']);
unset($config['globals']['rootuser']);
unset($config['globals']['cms_dir']);
unset($config['globals']['var_dir']);
unset($config['globals']['usr_dir']);
unset($config['globals']['opt_dir']);
return $config;
}
/**
* Returns all available languages
*
......
......@@ -2629,7 +2629,8 @@
<de><![CDATA[Kompletten Cache leeren]]></de>
</locale>
<locale name="quiqqer.settings.cache.clear.complete.confirm.information">
<de><![CDATA[Durch das Leeren des kompletten QUIQQER Caches können ggf. größere Datenmengen gelöscht werden, deren Neuerstellung eine längere Zeit benötigt. Dies kann dazu führen, dass Ihre Website in diesem Zeitraum erheblich langsamer ist.]]></de>
<de>
<![CDATA[Durch das Leeren des kompletten QUIQQER Caches können ggf. größere Datenmengen gelöscht werden, deren Neuerstellung eine längere Zeit benötigt. Dies kann dazu führen, dass Ihre Website in diesem Zeitraum erheblich langsamer ist.]]></de>
</locale>
<locale name="quiqqer.settings.cache.clear.complete.confirm.text">
<de><![CDATA[Sind Sie sicher, dass der komplette QUIQQER Cache gelöscht werden soll?]]></de>
......@@ -4234,8 +4235,8 @@ Hinweis: Wenn QUIQQER als GIT Repository installiert ist, existiert keine MD5 Su
</locale>
<locale name="message.missing.admin.mail">
<de><![CDATA[
Hinweis: Bitte stelle eine Adminmail ein.
Bei etwaigen Fehlern kann QUIQQER darüber informieren.
Hinweis: Bitte stelle eine Administrations-E-Mail ein unter Einstellungen -> System -> E-Mail.
So kann QUIQQER dich bei Fehlern informieren.
]]></de>
</locale>
</groups>
......
......@@ -4088,8 +4088,8 @@ Note: If QUIQQER is installed as GIT repository, no MD5 summary file exists.
</locale>
<locale name="message.missing.admin.mail">
<en><![CDATA[
Note: Please set up an adminmail.
QUIQQER can inform you about any errors.
Note: Please set an administration e-mail under Settings -> System -> E-Mail.
On this way QUIQQER can inform you about errors.
]]></en>
</locale>
</groups>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment