diff --git a/Plugin.php b/Plugin.php index 348f40c..a178493 100644 --- a/Plugin.php +++ b/Plugin.php @@ -64,6 +64,10 @@ public function registerPermissions(): array 'label' => 'vdlp.redirect::lang.permission.access_redirects.label', 'tab' => 'vdlp.redirect::lang.permission.access_redirects.tab', ], + 'vdlp.redirect.access_redirect_statistics' => [ + 'label' => 'vdlp.redirect::lang.permission.access_redirect_statistics.label', + 'tab' => 'vdlp.redirect::lang.permission.access_redirects.tab', + ], ]; } @@ -150,7 +154,7 @@ public function registerNavigation(): array 'url' => $defaultBackendUrl, 'order' => 201, 'permissions' => [ - 'vdlp.redirect.access_redirects', + 'vdlp.redirect.*', ], 'sideMenu' => $sideMenu, ], @@ -163,7 +167,7 @@ public function registerNavigation(): array 'url' => Backend::url('vdlp/redirect/statistics'), 'order' => 10, 'permissions' => [ - 'vdlp.redirect.access_redirects', + 'vdlp.redirect.access_redirect_statistics', ], ]; } @@ -220,6 +224,9 @@ public function registerReportWidgets(): array $reportWidgets[ReportWidgets\CreateRedirect::class] = [ 'label' => 'vdlp.redirect::lang.buttons.create_redirect', 'context' => 'dashboard', + 'permissions' => [ + 'vdlp.redirect.access_redirects', + ], ]; if (Settings::isStatisticsEnabled()) { @@ -231,6 +238,9 @@ public function registerReportWidgets(): array ] )), 'context' => 'dashboard', + 'permissions' => [ + 'vdlp.redirect.access_redirect_statistics', + ], ]; } diff --git a/controllers/Statistics.php b/controllers/Statistics.php index bc37ede..7954d3a 100644 --- a/controllers/Statistics.php +++ b/controllers/Statistics.php @@ -18,7 +18,7 @@ */ final class Statistics extends Controller { - public $requiredPermissions = ['vdlp.redirect.access_redirects']; + public $requiredPermissions = ['vdlp.redirect.access_redirect_statistics']; private StatisticsHelper $helper; public function __construct() diff --git a/lang/en/lang.php b/lang/en/lang.php index 82d7d4e..2f4cc38 100644 --- a/lang/en/lang.php +++ b/lang/en/lang.php @@ -12,6 +12,9 @@ 'label' => 'Redirects', 'tab' => 'Redirects', ], + 'access_redirect_statistics' => [ + 'label' => 'Redirect Statistics', + ], ], 'navigation' => [ 'menu_label' => 'Redirects', diff --git a/lang/nl/lang.php b/lang/nl/lang.php index 4ef7c91..c3fce6f 100644 --- a/lang/nl/lang.php +++ b/lang/nl/lang.php @@ -12,6 +12,9 @@ 'label' => 'Redirects', 'tab' => 'Redirects', ], + 'access_redirect_statistics' => [ + 'label' => 'Redirect statistieken', + ], ], 'navigation' => [ 'menu_label' => 'Redirects', diff --git a/updates/20240506_0014_add_new_statistics_permission_to_current_users_and_roles.php b/updates/20240506_0014_add_new_statistics_permission_to_current_users_and_roles.php new file mode 100644 index 0000000..1aade20 --- /dev/null +++ b/updates/20240506_0014_add_new_statistics_permission_to_current_users_and_roles.php @@ -0,0 +1,49 @@ +cursor() as $user) { + $this->updatePermission($user); + } + + /** @var UserRole $role */ + foreach (UserRole::query()->cursor() as $role) { + $this->updatePermission($role); + } + } + + public function down(): void + { + // No need to revert the changes. + } + + private function updatePermission(Model $model): void + { + $permissions = $model->getAttribute('permissions'); + + if (!is_array($permissions) || !array_key_exists('vdlp.redirect.access_redirects', $permissions)) { + return; + } + + $permissions['vdlp.redirect.access_redirect_statistics'] = 1; + $model->setAttribute('permissions', $permissions); + $model->save(); + } +}; diff --git a/updates/version.yaml b/updates/version.yaml index 75c5931..c911e6c 100644 --- a/updates/version.yaml +++ b/updates/version.yaml @@ -87,3 +87,6 @@ v3.1.10: "Fixed backend filtering for MySQL >= 8.0.3." v3.1.11: - "Add option to keep query string when redirecting." - 20231108_0013_add_keep_querystring_to_redirects_table.php +v3.2.0: + - "Add support for a new statistics permission." + - 20240506_0014_add_new_statistics_permission_to_current_users_and_roles.php