]> BookStack Code Mirror - bookstack/commitdiff
Notifications: Added role receive-notifications permission
authorDan Brown <redacted>
Tue, 25 Jul 2023 16:59:04 +0000 (17:59 +0100)
committerDan Brown <redacted>
Tue, 25 Jul 2023 16:59:04 +0000 (17:59 +0100)
app/Permissions/PermissionsRepo.php
app/Users/Controllers/RoleController.php
database/migrations/2023_07_25_124945_add_receive_notifications_role_permissions.php [new file with mode: 0644]
lang/en/settings.php
resources/views/settings/roles/parts/form.blade.php

index 889a6ea0891133e932c3e8dba98cbc92fef2d2ba..b41612968b4692629a9a7392f563416c59b741c3 100644 (file)
@@ -12,12 +12,11 @@ use Illuminate\Database\Eloquent\Collection;
 
 class PermissionsRepo
 {
-    protected JointPermissionBuilder $permissionBuilder;
     protected array $systemRoles = ['admin', 'public'];
 
-    public function __construct(JointPermissionBuilder $permissionBuilder)
-    {
-        $this->permissionBuilder = $permissionBuilder;
+    public function __construct(
+        protected JointPermissionBuilder $permissionBuilder
+    ) {
     }
 
     /**
index f6472e4de51d53b0c234568989ac68022406912c..0052d829dd905c0006d5615c51fa64e3f60ea704 100644 (file)
@@ -13,11 +13,9 @@ use Illuminate\Http\Request;
 
 class RoleController extends Controller
 {
-    protected PermissionsRepo $permissionsRepo;
-
-    public function __construct(PermissionsRepo $permissionsRepo)
-    {
-        $this->permissionsRepo = $permissionsRepo;
+    public function __construct(
+        protected PermissionsRepo $permissionsRepo
+    ) {
     }
 
     /**
diff --git a/database/migrations/2023_07_25_124945_add_receive_notifications_role_permissions.php b/database/migrations/2023_07_25_124945_add_receive_notifications_role_permissions.php
new file mode 100644 (file)
index 0000000..4872e42
--- /dev/null
@@ -0,0 +1,51 @@
+<?php
+
+use Carbon\Carbon;
+use Illuminate\Database\Migrations\Migration;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        // Create new receive-notifications permission and assign to admin role
+        $permissionId = DB::table('role_permissions')->insertGetId([
+            'name'         => 'receive-notifications',
+            'display_name' => 'Receive & Manage Notifications',
+            'created_at'   => Carbon::now()->toDateTimeString(),
+            'updated_at'   => Carbon::now()->toDateTimeString(),
+        ]);
+
+        $adminRoleId = DB::table('roles')->where('system_name', '=', 'admin')->first()->id;
+        DB::table('permission_role')->insert([
+            'role_id' => $adminRoleId,
+            'permission_id' => $permissionId,
+        ]);
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        $permission = DB::table('role_permissions')
+            ->where('name', '=', 'receive-notifications')
+            ->first();
+
+        if ($permission) {
+            DB::table('permission_role')->where([
+                'permission_id' => $permission->id,
+            ])->delete();
+        }
+
+        DB::table('role_permissions')
+            ->where('name', '=', 'receive-notifications')
+            ->delete();
+    }
+};
index c110e89921ad97fa132e8d88305956469d3cf43c..8821c77f0d1e99ecb9097c6e956aa9e56c85216c 100644 (file)
@@ -163,6 +163,7 @@ return [
     'role_manage_settings' => 'Manage app settings',
     'role_export_content' => 'Export content',
     'role_editor_change' => 'Change page editor',
+    'role_notifications' => 'Receive & manage notifications',
     'role_asset' => 'Asset Permissions',
     'roles_system_warning' => 'Be aware that access to any of the above three permissions can allow a user to alter their own privileges or the privileges of others in the system. Only assign roles with these permissions to trusted users.',
     'role_asset_desc' => 'These permissions control default access to the assets within the system. Permissions on Books, Chapters and Pages will override these permissions.',
index ac5c320d21571578e2c89b11d8b706930ecd6723..9fa76f2bfd7741ebd964e1cb1bff6282e4175500 100644 (file)
@@ -38,6 +38,7 @@
                 <div>@include('settings.roles.parts.checkbox', ['permission' => 'access-api', 'label' => trans('settings.role_access_api')])</div>
                 <div>@include('settings.roles.parts.checkbox', ['permission' => 'content-export', 'label' => trans('settings.role_export_content')])</div>
                 <div>@include('settings.roles.parts.checkbox', ['permission' => 'editor-change', 'label' => trans('settings.role_editor_change')])</div>
+                <div>@include('settings.roles.parts.checkbox', ['permission' => 'receive-notifications', 'label' => trans('settings.role_notifications')])</div>
             </div>
             <div>
                 <div>@include('settings.roles.parts.checkbox', ['permission' => 'settings-manage', 'label' => trans('settings.role_manage_settings')])</div>
Morty Proxy This is a proxified and sanitized view of the page, visit original site.