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')) + ); + } }