diff --git a/nginx.conf b/nginx.conf
index ef2cd5907a..0edf3739d1 100644
--- a/nginx.conf
+++ b/nginx.conf
@@ -123,27 +123,28 @@ server {
rewrite tags/([0-9]+)/([^\/]+).htm(l?)$ /index.php?action=search&tagging_id=$1 last;
# User pages
- rewrite user/ucp /index.php?action=ucp last;
- rewrite user/bookmarks /index.php?action=bookmarks last;
- rewrite user/request-removal /index.php?action=request-removal last;
- rewrite user/logout /index.php?action=logout last;
+ rewrite user/ucp /index.php?action=ucp last;
+ rewrite user/bookmarks /index.php?action=bookmarks last;
+ rewrite user/request-removal /index.php?action=request-removal last;
+ rewrite user/logout /index.php?action=logout last;
# Private APIs
- rewrite api/autocomplete /api/index.php last;
- rewrite api/bookmark/([0-9]+) /api/index.php last;
+ rewrite api/autocomplete /api/index.php last;
+ rewrite api/bookmark/([0-9]+) /api/index.php last;
# Setup APIs
- rewrite api/setup/check /api/index.php last;
- rewrite api/setup/backup /api/index.php last;
- rewrite api/setup/update-database /api/index.php last;
+ rewrite api/setup/check /api/index.php last;
+ rewrite api/setup/backup /api/index.php last;
+ rewrite api/setup/update-database /api/index.php last;
# Administration API
- rewrite admin/api/category/permissions /admin/api/index.php last;
- rewrite admin/api/category/update-order /admin/api/index.php last;
+ rewrite admin/api/category/permissions /admin/api/index.php last;
+ rewrite admin/api/category/update-order /admin/api/index.php last;
rewrite admin/api/configuration/faqs-sorting-key /admin/api/index.php last;
rewrite admin/api/configuration/faqs-sorting-order /admin/api/index.php last;
- rewrite admin/api/configuration/list /admin/api/index.php last;
- rewrite admin/api/configuration/send-test-mail /admin/api/index.php last;
+ rewrite admin/api/configuration/list /admin/api/index.php last;
+ rewrite admin/api/configuration/perm-level /admin/api/index.php last;
+ rewrite admin/api/configuration/send-test-mail /admin/api/index.php last;
rewrite admin/api/configuration/templates /admin/api/index.php last;
rewrite admin/api/configuration/translations /admin/api/index.php last;
rewrite admin/api/content/attachments /admin/api/index.php last;
diff --git a/phpmyfaq/.htaccess b/phpmyfaq/.htaccess
index 257eb81252..fbafc5132d 100644
--- a/phpmyfaq/.htaccess
+++ b/phpmyfaq/.htaccess
@@ -153,6 +153,7 @@ RewriteRule admin/api/category/update-order admin/api/index.php
RewriteRule admin/api/configuration/faqs-sorting-key admin/api/index.php [L,QSA]
RewriteRule admin/api/configuration/faqs-sorting-order admin/api/index.php [L,QSA]
RewriteRule admin/api/configuration/list admin/api/index.php [L,QSA]
+RewriteRule admin/api/configuration/perm-level admin/api/index.php [L,QSA]
RewriteRule admin/api/configuration/send-test-mail admin/api/index.php
RewriteRule admin/api/configuration/templates admin/api/index.php
RewriteRule admin/api/configuration/translations admin/api/index.php
diff --git a/phpmyfaq/admin/api/configuration-list.php b/phpmyfaq/admin/api/configuration-list.php
index 7514f96e89..b0d6f913fd 100755
--- a/phpmyfaq/admin/api/configuration-list.php
+++ b/phpmyfaq/admin/api/configuration-list.php
@@ -46,24 +46,6 @@ function renderInputForm(mixed $key, string $type): void
printf('\n\n";
break;
-
- case 'checkbox':
- printf(
- '
get($key)) {
- echo ' checked';
- }
- if ('ldap.ldapSupport' === $key && !extension_loaded('ldap')) {
- echo ' disabled';
- }
- if ('security.useSslForLogins' === $key && !Request::createFromGlobals()->isSecure()) {
- echo ' disabled';
- }
- if ('security.useSslOnly' === $key && !Request::createFromGlobals()->isSecure()) {
- echo ' disabled';
- }
- if ('security.ssoSupport' === $key && !Request::createFromGlobals()->server->get('REMOTE_USER')) {
- echo ' disabled';
- }
- echo '>
';
- break;
-
- case 'print':
- printf(
- '',
- $key,
- str_replace('"', '"', $faqConfig->get($key) ?? '')
- );
- break;
-
- case 'button':
- printf(
- '',
- str_replace('.', '-', $key),
- Translation::get($key)
- );
- break;
}
}
diff --git a/phpmyfaq/admin/assets/src/configuration/configuration.js b/phpmyfaq/admin/assets/src/configuration/configuration.js
index 6d7901f378..570d16f507 100644
--- a/phpmyfaq/admin/assets/src/configuration/configuration.js
+++ b/phpmyfaq/admin/assets/src/configuration/configuration.js
@@ -35,6 +35,9 @@ export const handleConfiguration = async () => {
await handleFaqsSortingKeys();
await handleFaqsSortingOrder();
break;
+ case '#security':
+ await handlePermLevel();
+ break;
}
tabLoaded = true;
@@ -80,11 +83,20 @@ export const handleFaqsSortingOrder = async () => {
const faqsOrderSelectBox = document.getElementsByName('edit[records.sortby]');
if (faqsOrderSelectBox !== null) {
const currentValue = faqsOrderSelectBox[0].dataset.pmfConfigurationCurrentValue;
- const options = await fetchFaqsSortingOrder(currentValue);
+ const options = await fetchPermLevel(currentValue);
faqsOrderSelectBox[0].insertAdjacentHTML('beforeend', options);
}
};
+export const handlePermLevel = async () => {
+ const permLevelSelectBox = document.getElementsByName('edit[security.permLevel]');
+ if (permLevelSelectBox !== null) {
+ const currentValue = permLevelSelectBox[0].dataset.pmfConfigurationCurrentValue;
+ const options = await fetchPermLevel(currentValue);
+ permLevelSelectBox[0].insertAdjacentHTML('beforeend', options);
+ }
+};
+
const fetchConfiguration = async (target) => {
try {
const response = await fetch(`./api/configuration/list/${target.substring(1)}`);
@@ -166,3 +178,18 @@ const fetchFaqsSortingOrder = async (currentValue) => {
console.error(error.message);
}
};
+
+const fetchPermLevel = async (currentValue) => {
+ try {
+ const response = await fetch(`./api/configuration/perm-level/${currentValue}`);
+
+ if (!response.ok) {
+ console.error('Request failed!');
+ return;
+ }
+
+ return await response.text();
+ } catch (error) {
+ console.error(error.message);
+ }
+};
diff --git a/phpmyfaq/src/admin-routes.php b/phpmyfaq/src/admin-routes.php
index 38e19ba92a..23e6101c01 100644
--- a/phpmyfaq/src/admin-routes.php
+++ b/phpmyfaq/src/admin-routes.php
@@ -112,6 +112,14 @@
new Route('/configuration/list/{mode}', ['_controller' => [ConfigurationTabController::class, 'list']])
);
+$routes->add(
+ 'admin.api.configuration.permLevel',
+ new Route(
+ '/configuration/perm-level/{current}',
+ ['_controller' => [ConfigurationTabController::class, 'permLevel']]
+ )
+);
+
$routes->add(
'admin.api.configuration.send-test-mail',
new Route(
diff --git a/phpmyfaq/src/phpMyFAQ/Controller/Administration/ConfigurationTabController.php b/phpmyfaq/src/phpMyFAQ/Controller/Administration/ConfigurationTabController.php
index 3736cd35ad..5b8689dc55 100644
--- a/phpmyfaq/src/phpMyFAQ/Controller/Administration/ConfigurationTabController.php
+++ b/phpmyfaq/src/phpMyFAQ/Controller/Administration/ConfigurationTabController.php
@@ -21,6 +21,7 @@
use phpMyFAQ\Controller\AbstractController;
use phpMyFAQ\Helper\AdministrationHelper;
use phpMyFAQ\Helper\LanguageHelper;
+use phpMyFAQ\Helper\PermissionHelper;
use phpMyFAQ\System;
use phpMyFAQ\Template\TemplateException;
use phpMyFAQ\Translation;
@@ -114,4 +115,11 @@ public function faqsSortingOrder(Request $request): Response
AdministrationHelper::sortingOrderOptions($request->get('current'))
);
}
+ #[Route('admin/api/configuration/perm-level')]
+ public function permLevel(Request $request): Response
+ {
+ return new Response(
+ PermissionHelper::permOptions($request->get('current'))
+ );
+ }
}