Skip to content

Commit

Permalink
refactor: changed permission strings to permission enums
Browse files Browse the repository at this point in the history
  • Loading branch information
thorsten committed Jan 17, 2024
1 parent b0bcda5 commit 8827b52
Show file tree
Hide file tree
Showing 9 changed files with 92 additions and 40 deletions.
57 changes: 49 additions & 8 deletions phpmyfaq/admin/header.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
*/

use phpMyFAQ\Configuration;
use phpMyFAQ\Enums\PermissionType;
use phpMyFAQ\Helper\AdministrationHelper;
use phpMyFAQ\Helper\LanguageHelper;
use phpMyFAQ\Services\Gravatar;
Expand Down Expand Up @@ -63,15 +64,25 @@
'ad_menu_categ_edit',
$action
);
$secLevelEntries['content'] .= $adminHelper->addMenuEntry('add_faq', 'editentry', 'ad_entry_add', $action);
$secLevelEntries['content'] .= $adminHelper->addMenuEntry(
PermissionType::FAQ_ADD->value,
'editentry',
'ad_entry_add',
$action
);
$secLevelEntries['content'] .= $adminHelper->addMenuEntry(
'edit_faq+delete_faq',
'faqs-overview',
'ad_menu_entry_edit',
$action
);

$secLevelEntries['content'] .= $adminHelper->addMenuEntry('edit_faq', 'stickyfaqs', 'stickyRecordsHeader', $action);
$secLevelEntries['content'] .= $adminHelper->addMenuEntry(
PermissionType::FAQ_EDIT->value,
'stickyfaqs',
'stickyRecordsHeader',
$action
);
$secLevelEntries['content'] .= $adminHelper->addMenuEntry('delcomment', 'comments', 'ad_menu_comments', $action);
$secLevelEntries['content'] .= $adminHelper->addMenuEntry('delquestion', 'question', 'ad_menu_open', $action);
$secLevelEntries['content'] .= $adminHelper->addMenuEntry(
Expand All @@ -92,15 +103,45 @@
'ad_menu_attachments',
$action
);
$secLevelEntries['content'] .= $adminHelper->addMenuEntry('edit_faq', 'tags', 'ad_entry_tags', $action);
$secLevelEntries['content'] .= $adminHelper->addMenuEntry(
PermissionType::FAQ_EDIT->value,
'tags',
'ad_entry_tags',
$action
);

$secLevelEntries['statistics'] = $adminHelper->addMenuEntry('viewlog', 'statistics', 'ad_menu_stat', $action);
$secLevelEntries['statistics'] .= $adminHelper->addMenuEntry('viewlog', 'viewsessions', 'ad_menu_session', $action);
$secLevelEntries['statistics'] .= $adminHelper->addMenuEntry('adminlog', 'adminlog', 'ad_menu_adminlog', $action);
$secLevelEntries['statistics'] .= $adminHelper->addMenuEntry('viewlog', 'searchstats', 'ad_menu_searchstats', $action);
$secLevelEntries['statistics'] = $adminHelper->addMenuEntry(
PermissionType::STATISTICS_VIEWLOGS->value,
'statistics',
'ad_menu_stat',
$action
);
$secLevelEntries['statistics'] .= $adminHelper->addMenuEntry(
PermissionType::STATISTICS_VIEWLOGS->value,
'viewsessions',
'ad_menu_session',
$action
);
$secLevelEntries['statistics'] .= $adminHelper->addMenuEntry(
PermissionType::STATISTICS_ADMINLOG->value,
'adminlog',
'ad_menu_adminlog',
$action
);
$secLevelEntries['statistics'] .= $adminHelper->addMenuEntry(
PermissionType::STATISTICS_VIEWLOGS->value,
'searchstats',
'ad_menu_searchstats',
$action
);
$secLevelEntries['statistics'] .= $adminHelper->addMenuEntry('reports', 'reports', 'ad_menu_reports', $action);

$secLevelEntries['imports_exports'] = $adminHelper->addMenuEntry('add_faq', 'importcsv', 'msgImportRecords', $action);
$secLevelEntries['imports_exports'] = $adminHelper->addMenuEntry(
PermissionType::FAQ_ADD->value,
'importcsv',
'msgImportRecords',
$action
);
$secLevelEntries['imports_exports'] .= $adminHelper->addMenuEntry('export', 'export', 'ad_menu_export', $action);

$secLevelEntries['backup'] = $adminHelper->addMenuEntry('editconfig', 'backup', 'ad_menu_backup', $action);
Expand Down
10 changes: 8 additions & 2 deletions phpmyfaq/admin/record.edit.php
Original file line number Diff line number Diff line change
Expand Up @@ -947,8 +947,14 @@ function setRecordDate(how) {
}
</script>
<?php
} elseif ($user->perm->hasPermission($currentUserId, 'edit_faq') && !Database::checkOnEmptyTable('faqcategories')) {
} elseif (
$user->perm->hasPermission($currentUserId, PermissionType::FAQ_EDIT->value) &&
!Database::checkOnEmptyTable('faqcategories')
) {
require 'no-permission.php';
} elseif ($user->perm->hasPermission($currentUserId, 'edit_faq') && Database::checkOnEmptyTable('faqcategories')) {
} elseif (
$user->perm->hasPermission($currentUserId, PermissionType::FAQ_EDIT->value) &&
Database::checkOnEmptyTable('faqcategories')
) {
echo Translation::get('no_cats');
}
6 changes: 5 additions & 1 deletion phpmyfaq/admin/stat.adminlog.php
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,11 @@
</table>

<?php
} elseif ($user->perm->hasPermission($user->getUserId(), 'adminlog') && 'deleteadminlog' === $action && $deleteLog) {
} elseif (
$user->perm->hasPermission($user->getUserId(), PermissionType::STATISTICS_ADMINLOG->value) &&
'deleteadminlog' === $action &&
$deleteLog
) {
if ($logging->delete()) {
echo Alert::success('ad_adminlog_delete_success');
} else {
Expand Down
3 changes: 2 additions & 1 deletion phpmyfaq/admin/tags.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
*/

use phpMyFAQ\Configuration;
use phpMyFAQ\Enums\PermissionType;
use phpMyFAQ\Filter;
use phpMyFAQ\Session\Token;
use phpMyFAQ\Tags;
Expand Down Expand Up @@ -65,7 +66,7 @@

echo $template->render($templateVars);

if (!$user->perm->hasPermission($user->getUserId(), 'edit_faq')) {
if (!$user->perm->hasPermission($user->getUserId(), PermissionType::FAQ_EDIT->value)) {
require 'no-permission.php';
}

4 changes: 2 additions & 2 deletions phpmyfaq/admin/user.php
Original file line number Diff line number Diff line change
Expand Up @@ -279,15 +279,15 @@ class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-cente
<div class="btn-toolbar mb-2 mb-md-0">
<div class="btn-group mr-2">
<?php
if ($currentUser->perm->hasPermission($user->getUserId(), 'add_user')) : ?>
if ($currentUser->perm->hasPermission($user->getUserId(), PermissionType::USER_ADD->value)) : ?>
<button type="button" class="btn btn-outline-primary" data-bs-toggle="modal"
data-bs-target="#addUserModal">
<i class="bi bi-person-add" aria-label="true"></i> <?= Translation::get('ad_user_add') ?>
</button>
<?php
endif ?>
<?php
if ($currentUser->perm->hasPermission($user->getUserId(), 'edit_user')) : ?>
if ($currentUser->perm->hasPermission($user->getUserId(), PermissionType::USER_EDIT->value)) : ?>
<a class="btn btn-outline-info" href="?action=user&amp;user_action=listallusers">
<i class="bi bi-people" aria-label="true"></i> <?= Translation::get('list_all_users') ?>
</a>
Expand Down
8 changes: 6 additions & 2 deletions phpmyfaq/faq.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
use phpMyFAQ\Comments;
use phpMyFAQ\Date;
use phpMyFAQ\Entity\CommentType;
use phpMyFAQ\Enums\PermissionType;
use phpMyFAQ\Faq\FaqPermission;
use phpMyFAQ\Filter;
use phpMyFAQ\Glossary;
Expand Down Expand Up @@ -194,7 +195,7 @@

// Show link to edit the faq?
$editThisEntry = '';
if ($user->perm->hasPermission($user->getUserId(), 'edit_faq')) {
if ($user->perm->hasPermission($user->getUserId(), PermissionType::FAQ_EDIT->value)) {
$editThisEntry = sprintf(
'<i aria-hidden="true" class="bi bi-pencil"></i> ' .
'<a class="text-decoration-none" href="./admin/index.php?action=editentry&id=%d&lang=%s">%s</a>',
Expand Down Expand Up @@ -243,7 +244,10 @@
);
}

if ($user->perm->hasPermission($user->getUserId(), 'edit_faq') && !empty($faq->faqRecord['notes'])) {
if (
$user->perm->hasPermission($user->getUserId(), PermissionType::FAQ_EDIT->value) &&
!empty($faq->faqRecord['notes'])
) {
$template->parseBlock(
'mainPageContent',
'privateNotes',
Expand Down
19 changes: 10 additions & 9 deletions phpmyfaq/src/phpMyFAQ/Controller/AbstractController.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
namespace phpMyFAQ\Controller;

use phpMyFAQ\Configuration;
use phpMyFAQ\Enums\PermissionType;
use phpMyFAQ\Template\TemplateException;
use phpMyFAQ\Template\TwigWrapper;
use phpMyFAQ\User\CurrentUser;
Expand Down Expand Up @@ -90,10 +91,10 @@ protected function userHasGroupPermission(): void
$configuration = Configuration::getConfigurationInstance();
$user = CurrentUser::getCurrentUser($configuration);
if (
!$user->perm->hasPermission($user->getUserId(), 'add_user') ||
!$user->perm->hasPermission($user->getUserId(), 'edit_user') ||
!$user->perm->hasPermission($user->getUserId(), 'delete_user') ||
!$user->perm->hasPermission($user->getUserId(), 'editgroup')
!$user->perm->hasPermission($user->getUserId(), PermissionType::USER_ADD->value) ||
!$user->perm->hasPermission($user->getUserId(), PermissionType::USER_EDIT->value) ||
!$user->perm->hasPermission($user->getUserId(), PermissionType::USER_DELETE->value) ||
!$user->perm->hasPermission($user->getUserId(), PermissionType::GROUP_EDIT->value)
) {
throw new UnauthorizedHttpException('User has no group permission.');
}
Expand All @@ -107,9 +108,9 @@ protected function userHasUserPermission(): void
$configuration = Configuration::getConfigurationInstance();
$user = CurrentUser::getCurrentUser($configuration);
if (
!$user->perm->hasPermission($user->getUserId(), 'add_user') ||
!$user->perm->hasPermission($user->getUserId(), 'edit_user') ||
!$user->perm->hasPermission($user->getUserId(), 'delete_user')
!$user->perm->hasPermission($user->getUserId(), PermissionType::USER_ADD->value) ||
!$user->perm->hasPermission($user->getUserId(), PermissionType::USER_EDIT->value) ||
!$user->perm->hasPermission($user->getUserId(), PermissionType::USER_DELETE->value)
) {
throw new UnauthorizedHttpException('User has no user permission.');
}
Expand All @@ -118,12 +119,12 @@ protected function userHasUserPermission(): void
/**
* @throws UnauthorizedHttpException
*/
protected function userHasPermission(string $permission): void
protected function userHasPermission(PermissionType $permission): void
{
$configuration = Configuration::getConfigurationInstance();
$user = CurrentUser::getCurrentUser($configuration);
if (!$user->perm->hasPermission($user->getUserId(), $permission)) {
throw new UnauthorizedHttpException(sprintf('User has no "%s" permission.', $permission));
throw new UnauthorizedHttpException(sprintf('User has no "%s" permission.', $permission->value));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ public function search(Request $request): JsonResponse
$tags = $tag->getAllTags();
}

if ($user->perm->hasPermission($user->getUserId(), 'edit_faq')) {
if ($user->perm->hasPermission($user->getUserId(), PermissionType::FAQ_EDIT->value)) {
$i = 0;
$tagNames = [];
foreach ($tags as $tagName) {
Expand Down
23 changes: 9 additions & 14 deletions phpmyfaq/src/phpMyFAQ/Setup/Installer.php
Original file line number Diff line number Diff line change
Expand Up @@ -54,40 +54,35 @@ class Installer extends Setup
*/
protected array $mainRights = [
[
'name' => 'add_user',
'name' => PermissionType::USER_ADD->value,
'description' => 'Right to add user accounts',
],
[
'name' => 'edit_user',
'name' => PermissionType::USER_EDIT->value,
'description' => 'Right to edit user accounts',
],
[
'name' => 'delete_user',
'name' => PermissionType::USER_DELETE->value,
'description' => 'Right to delete user accounts',
],
//4 => "add_faq",
[
'name' => 'add_faq',
'name' => PermissionType::FAQ_ADD->value,
'description' => 'Right to add faq entries',
],
//5 => "edit_faq",
[
'name' => 'edit_faq',
'name' => PermissionType::FAQ_EDIT->value,
'description' => 'Right to edit faq entries',
],
//6 => "delete_faq",
[
'name' => 'delete_faq',
'name' => PermissionType::FAQ_DELETE->value,
'description' => 'Right to delete faq entries',
],
//7 => "viewlog",
[
'name' => 'viewlog',
'name' => PermissionType::STATISTICS_VIEWLOGS->value,
'description' => 'Right to view logfiles',
],
//8 => "adminlog",
[
'name' => 'adminlog',
'name' => PermissionType::STATISTICS_ADMINLOG->value,
'description' => 'Right to view admin log',
],
//9 => "delcomment",
Expand Down Expand Up @@ -210,7 +205,7 @@ class Installer extends Setup
],
// 34 => 'addattachment'
[
'name' => 'addattachment',
'name' => PermissionType::ATTACHMENT_ADD->value,
'description' => 'Right to add attachments',
],
// 35 => 'editattachment'
Expand Down

0 comments on commit 8827b52

Please sign in to comment.