diff --git a/app/Auth/Permissions/PermissionFormData.php b/app/Auth/Permissions/PermissionFormData.php index 781209043..ae06762f4 100644 --- a/app/Auth/Permissions/PermissionFormData.php +++ b/app/Auth/Permissions/PermissionFormData.php @@ -42,6 +42,18 @@ class PermissionFormData ->all(); } + /** + * Get the entity permission for the "Everyone Else" option. + */ + public function everyoneElseEntityPermission(): EntityPermission + { + /** @var EntityPermission $permission */ + $permission = $this->entity->permissions() + ->where('role_id', '=', 0) + ->first(); + return $permission ?? (new EntityPermission()); + } + /** * Get the "Everyone Else" role entry. */ diff --git a/app/Http/Controllers/PermissionsController.php b/app/Http/Controllers/PermissionsController.php index dd6c29a8a..93498a2b9 100644 --- a/app/Http/Controllers/PermissionsController.php +++ b/app/Http/Controllers/PermissionsController.php @@ -164,6 +164,7 @@ class PermissionsController extends Controller 'role' => $role, 'permission' => new EntityPermission(), 'entityType' => $entityType, + 'inheriting' => false, ]); } } diff --git a/resources/js/components/entity-permissions.js b/resources/js/components/entity-permissions.js index a18fc7a97..917dcc72d 100644 --- a/resources/js/components/entity-permissions.js +++ b/resources/js/components/entity-permissions.js @@ -18,7 +18,7 @@ class EntityPermissions { // "Everyone Else" inherit toggle this.everyoneInheritToggle.addEventListener('change', event => { const inherit = event.target.checked; - const permissions = document.querySelectorAll('input[type="checkbox"][name^="restrictions[0]["]'); + const permissions = document.querySelectorAll('input[name^="permissions[0]["]'); for (const permission of permissions) { permission.disabled = inherit; permission.checked = false; diff --git a/resources/views/form/entity-permissions-row.blade.php b/resources/views/form/entity-permissions-row.blade.php index 2bf19db64..a7a314bf4 100644 --- a/resources/views/form/entity-permissions-row.blade.php +++ b/resources/views/form/entity-permissions-row.blade.php @@ -2,6 +2,7 @@ $role - The Role to display this row for. $entityType - String identifier for type of entity having permissions applied. $permission - The entity permission containing the permissions. +$inheriting - Boolean if the current row should be marked as inheriting default permissions. Used for "Everyone Else" role. --}}
@@ -20,12 +21,8 @@ $permission - The entity permission containing the permissions. >{{ trans('common.toggle_all') }} @endif
- @php - // TODO - $inheriting = ($role->id === 0); - @endphp @if($role->id === 0) -
+
@include('form.custom-checkbox', [ 'name' => 'entity-permissions-inherit', 'label' => 'Inherit defaults', @@ -35,7 +32,9 @@ $permission - The entity permission containing the permissions.
@endif
- +
@include('form.custom-checkbox', [ 'name' => 'permissions[' . $role->id . '][view]', diff --git a/resources/views/form/entity-permissions.blade.php b/resources/views/form/entity-permissions.blade.php index c6f5a4298..a6955d33c 100644 --- a/resources/views/form/entity-permissions.blade.php +++ b/resources/views/form/entity-permissions.blade.php @@ -1,3 +1,6 @@ +
$permission, 'role' => $permission->role, - 'entityType' => $model->getType() + 'entityType' => $model->getType(), + 'inheriting' => false, ]) @endforeach
@@ -46,8 +50,9 @@
@include('form.entity-permissions-row', [ 'role' => $data->everyoneElseRole(), - 'permission' => new \BookStack\Auth\Permissions\EntityPermission(), + 'permission' => $data->everyoneElseEntityPermission(), 'entityType' => $model->getType(), + 'inheriting' => !$model->permissions()->where('role_id', '=', 0)->exists(), ])