X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/b9a58859a4ef14b7971ca7d07318e1ac6f276b40..9cf05944f6c6d74603e1be1e6c96bd7ae6d7e3fb:/tests/SharedTestHelpers.php diff --git a/tests/SharedTestHelpers.php b/tests/SharedTestHelpers.php index cbf49bf71..bc7b10266 100644 --- a/tests/SharedTestHelpers.php +++ b/tests/SharedTestHelpers.php @@ -2,7 +2,7 @@ namespace Tests; -use BookStack\Auth\Permissions\PermissionService; +use BookStack\Auth\Permissions\JointPermissionBuilder; use BookStack\Auth\Permissions\PermissionsRepo; use BookStack\Auth\Permissions\RolePermission; use BookStack\Auth\Role; @@ -176,7 +176,7 @@ trait SharedTestHelpers $entity->save(); $entity->load('permissions'); - $this->app[PermissionService::class]->buildJointPermissionsForEntity($entity); + $this->app->make(JointPermissionBuilder::class)->rebuildForEntity($entity); $entity->load('jointPermissions'); } @@ -194,13 +194,23 @@ trait SharedTestHelpers /** * Completely remove the given permission name from the given user. */ - protected function removePermissionFromUser(User $user, string $permission) + protected function removePermissionFromUser(User $user, string $permissionName) { - $permission = RolePermission::query()->where('name', '=', $permission)->first(); + $permissionBuilder = app()->make(JointPermissionBuilder::class); + + /** @var RolePermission $permission */ + $permission = RolePermission::query()->where('name', '=', $permissionName)->firstOrFail(); + + $roles = $user->roles()->whereHas('permissions', function ($query) use ($permission) { + $query->where('id', '=', $permission->id); + })->get(); + /** @var Role $role */ - foreach ($user->roles as $role) { + foreach ($roles as $role) { $role->detachPermission($permission); + $permissionBuilder->rebuildForRole($role); } + $user->clearPermissionCache(); } @@ -231,8 +241,8 @@ trait SharedTestHelpers $book = Book::factory()->create($userAttrs); $chapter = Chapter::factory()->create(array_merge(['book_id' => $book->id], $userAttrs)); $page = Page::factory()->create(array_merge(['book_id' => $book->id, 'chapter_id' => $chapter->id], $userAttrs)); - $restrictionService = $this->app[PermissionService::class]; - $restrictionService->buildJointPermissionsForEntity($book); + + $this->app->make(JointPermissionBuilder::class)->rebuildForEntity($book); return compact('book', 'chapter', 'page'); }