diff --git a/js/src/admin/AdminApplication.js b/js/src/admin/AdminApplication.js index e0d9464e48..245b6d97b5 100644 --- a/js/src/admin/AdminApplication.js +++ b/js/src/admin/AdminApplication.js @@ -49,7 +49,7 @@ export default class AdminApplication extends Application { const required = []; if (permission === 'startDiscussion' || permission.indexOf('discussion.') === 0) { - required.push('viewDiscussions'); + required.push('viewForum'); } if (permission === 'discussion.delete') { required.push('discussion.hide'); diff --git a/js/src/admin/components/PermissionGrid.js b/js/src/admin/components/PermissionGrid.js index b2326d6bdd..36780e508c 100644 --- a/js/src/admin/components/PermissionGrid.js +++ b/js/src/admin/components/PermissionGrid.js @@ -102,11 +102,11 @@ export default class PermissionGrid extends Component { const items = new ItemList(); items.add( - 'viewDiscussions', + 'viewForum', { icon: 'fas fa-eye', - label: app.translator.trans('core.admin.permissions.view_discussions_label'), - permission: 'viewDiscussions', + label: app.translator.trans('core.admin.permissions.view_forum_label'), + permission: 'viewForum', allowGuest: true, }, 100 @@ -123,11 +123,11 @@ export default class PermissionGrid extends Component { ); items.add( - 'viewUserList', + 'searchUsers', { icon: 'fas fa-users', - label: app.translator.trans('core.admin.permissions.view_user_list_label'), - permission: 'viewUserList', + label: app.translator.trans('core.admin.permissions.search_users_label'), + permission: 'searchUsers', allowGuest: true, }, 100 diff --git a/js/src/forum/components/Search.js b/js/src/forum/components/Search.js index ec97837d31..c5cb798c52 100644 --- a/js/src/forum/components/Search.js +++ b/js/src/forum/components/Search.js @@ -202,8 +202,8 @@ export default class Search extends Component { sourceItems() { const items = new ItemList(); - if (app.forum.attribute('canViewDiscussions')) items.add('discussions', new DiscussionsSearchSource()); - if (app.forum.attribute('canViewUserList')) items.add('users', new UsersSearchSource()); + if (app.forum.attribute('canViewForum')) items.add('discussions', new DiscussionsSearchSource()); + if (app.forum.attribute('canSearchUsers')) items.add('users', new UsersSearchSource()); return items; } diff --git a/migrations/2020_06_27_000000_rename_permissions.php b/migrations/2020_06_27_000000_rename_permissions.php new file mode 100644 index 0000000000..5acd028481 --- /dev/null +++ b/migrations/2020_06_27_000000_rename_permissions.php @@ -0,0 +1,26 @@ + function (Builder $schema) { + $db = $schema->getConnection(); + + $db->table('group_permission')->where('permission', 'viewDiscussions')->update(['permission' => 'viewForum']); + $db->table('group_permission')->where('permission', 'viewUserList')->update(['permission' => 'searchUsers']); + }, + + 'down' => function (Builder $schema) { + $db = $schema->getConnection(); + + $db->table('group_permission')->where('permission', 'viewForum')->update(['permission' => 'viewDiscussions']); + $db->table('group_permission')->where('permission', 'searchUsers')->update(['permission' => 'viewUserList']); + } +]; diff --git a/src/Api/Controller/ListUsersController.php b/src/Api/Controller/ListUsersController.php index 16c8e53770..3a20d25d32 100644 --- a/src/Api/Controller/ListUsersController.php +++ b/src/Api/Controller/ListUsersController.php @@ -70,7 +70,7 @@ protected function data(ServerRequestInterface $request, Document $document) { $actor = $request->getAttribute('actor'); - $this->assertCan($actor, 'viewUserList'); + $this->assertCan($actor, 'searchUsers'); $query = Arr::get($this->extractFilter($request), 'q'); $sort = $this->extractSort($request); diff --git a/src/Api/Serializer/ForumSerializer.php b/src/Api/Serializer/ForumSerializer.php index 9fb0b3fa0c..17ec1420b0 100644 --- a/src/Api/Serializer/ForumSerializer.php +++ b/src/Api/Serializer/ForumSerializer.php @@ -78,9 +78,9 @@ protected function getDefaultAttributes($model) 'footerHtml' => $this->settings->get('custom_footer'), 'allowSignUp' => (bool) $this->settings->get('allow_sign_up'), 'defaultRoute' => $this->settings->get('default_route'), - 'canViewDiscussions' => $this->actor->can('viewDiscussions'), + 'canViewForum' => $this->actor->can('viewForum'), 'canStartDiscussion' => $this->actor->can('startDiscussion'), - 'canViewUserList' => $this->actor->can('viewUserList') + 'canSearchUsers' => $this->actor->can('searchUsers') ]; if ($this->actor->can('administrate')) { diff --git a/src/Discussion/DiscussionPolicy.php b/src/Discussion/DiscussionPolicy.php index 4d353939f3..bb9d9aaf62 100644 --- a/src/Discussion/DiscussionPolicy.php +++ b/src/Discussion/DiscussionPolicy.php @@ -61,7 +61,7 @@ public function can(User $actor, $ability) */ public function find(User $actor, Builder $query) { - if ($actor->cannot('viewDiscussions')) { + if ($actor->cannot('viewForum')) { $query->whereRaw('FALSE'); return; diff --git a/src/User/UserPolicy.php b/src/User/UserPolicy.php index d9b26f9b0a..cfac654451 100644 --- a/src/User/UserPolicy.php +++ b/src/User/UserPolicy.php @@ -36,7 +36,7 @@ public function can(User $actor, $ability) */ public function find(User $actor, Builder $query) { - if ($actor->cannot('viewUserList')) { + if ($actor->cannot('viewForum')) { if ($actor->isGuest()) { $query->whereRaw('FALSE'); } else { diff --git a/tests/integration/api/authentication/WithApiKeyTest.php b/tests/integration/api/authentication/WithApiKeyTest.php index 4a07c5e429..201e024484 100644 --- a/tests/integration/api/authentication/WithApiKeyTest.php +++ b/tests/integration/api/authentication/WithApiKeyTest.php @@ -53,7 +53,7 @@ public function cannot_authorize_without_key() ); $data = json_decode($response->getBody(), true); - $this->assertFalse($data['data']['attributes']['canViewUserList']); + $this->assertFalse($data['data']['attributes']['canSearchUsers']); } /** @@ -69,7 +69,7 @@ public function master_token_can_authenticate_as_anyone() ); $data = json_decode($response->getBody(), true); - $this->assertTrue($data['data']['attributes']['canViewUserList']); + $this->assertTrue($data['data']['attributes']['canSearchUsers']); $this->assertArrayHasKey('adminUrl', $data['data']['attributes']); $key->refresh(); @@ -90,7 +90,7 @@ public function personal_api_token_cannot_authenticate_as_anyone() ); $data = json_decode($response->getBody(), true); - $this->assertTrue($data['data']['attributes']['canViewUserList']); + $this->assertTrue($data['data']['attributes']['canSearchUsers']); $this->assertArrayNotHasKey('adminUrl', $data['data']['attributes']); $key->refresh(); @@ -111,7 +111,7 @@ public function personal_api_token_authenticates_user() ); $data = json_decode($response->getBody(), true); - $this->assertTrue($data['data']['attributes']['canViewUserList']); + $this->assertTrue($data['data']['attributes']['canSearchUsers']); $this->assertArrayNotHasKey('adminUrl', $data['data']['attributes']); $key->refresh(); diff --git a/tests/integration/api/csrf_protection/RequireCsrfTokenTest.php b/tests/integration/api/csrf_protection/RequireCsrfTokenTest.php index b6540eb660..b01a50d2ab 100644 --- a/tests/integration/api/csrf_protection/RequireCsrfTokenTest.php +++ b/tests/integration/api/csrf_protection/RequireCsrfTokenTest.php @@ -31,7 +31,7 @@ protected function setUp(): void ['user_id' => 1, 'group_id' => 1], ], 'group_permission' => [ - ['permission' => 'viewUserList', 'group_id' => 3], + ['permission' => 'searchUsers', 'group_id' => 3], ], 'api_keys' => [ ['user_id' => 1, 'key' => 'superadmin'], diff --git a/tests/integration/api/discussions/ListTest.php b/tests/integration/api/discussions/ListTest.php index 3e56c41509..6eb9a7269c 100644 --- a/tests/integration/api/discussions/ListTest.php +++ b/tests/integration/api/discussions/ListTest.php @@ -36,7 +36,7 @@ protected function setUp(): void $this->guestGroup(), ], 'group_permission' => [ - ['permission' => 'viewDiscussions', 'group_id' => 2], + ['permission' => 'viewForum', 'group_id' => 2], ] ]); } diff --git a/tests/integration/api/discussions/ShowTest.php b/tests/integration/api/discussions/ShowTest.php index 131cd6776e..c17ed92a03 100644 --- a/tests/integration/api/discussions/ShowTest.php +++ b/tests/integration/api/discussions/ShowTest.php @@ -46,8 +46,8 @@ protected function setUp(): void ['user_id' => 2, 'group_id' => 3], ], 'group_permission' => [ - ['permission' => 'viewDiscussions', 'group_id' => 2], - ['permission' => 'viewDiscussions', 'group_id' => 3], + ['permission' => 'viewForum', 'group_id' => 2], + ['permission' => 'viewForum', 'group_id' => 3], ] ]); } diff --git a/tests/integration/api/posts/CreateTest.php b/tests/integration/api/posts/CreateTest.php index bad67ba421..946cad8624 100644 --- a/tests/integration/api/posts/CreateTest.php +++ b/tests/integration/api/posts/CreateTest.php @@ -36,7 +36,7 @@ protected function setUp(): void ['user_id' => 2, 'group_id' => 3], ], 'group_permission' => [ - ['permission' => 'viewDiscussions', 'group_id' => 3], + ['permission' => 'viewForum', 'group_id' => 3], ] ]); } diff --git a/tests/integration/api/users/ListTest.php b/tests/integration/api/users/ListTest.php index 3e33786b4b..0aa285de23 100644 --- a/tests/integration/api/users/ListTest.php +++ b/tests/integration/api/users/ListTest.php @@ -55,7 +55,7 @@ public function shows_index_for_guest_when_they_have_permission() { Permission::unguarded(function () { Permission::create([ - 'permission' => 'viewUserList', + 'permission' => 'searchUsers', 'group_id' => 2, ]); }); diff --git a/tests/integration/api/users/UpdateTest.php b/tests/integration/api/users/UpdateTest.php index f07229757f..88a3957dc5 100644 --- a/tests/integration/api/users/UpdateTest.php +++ b/tests/integration/api/users/UpdateTest.php @@ -34,7 +34,7 @@ protected function setUp(): void ['user_id' => 2, 'group_id' => 3], ], 'group_permission' => [ - ['permission' => 'viewUserList', 'group_id' => 3], + ['permission' => 'searchUsers', 'group_id' => 3], ] ]); } @@ -69,7 +69,7 @@ public function users_can_not_see_other_users_private_information() ); // Make sure sensitive information is not made public - $this->assertEquals(200, $response->getStatusCode()); + $this->assertEquals(404, $response->getStatusCode()); $this->assertNotContains('admin@machine.local', (string) $response->getBody()); } }