Skip to content

Commit cf7ef48

Browse files
authored
fix: prevent users from seeing their own flags (#4167)
1 parent 670aa2e commit cf7ef48

File tree

4 files changed

+7
-9
lines changed

4 files changed

+7
-9
lines changed

extensions/flags/src/Access/ScopeFlagVisibility.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,8 @@ public function __invoke(User $actor, Builder $query): void
3737
if ($actor->hasPermission('discussion.viewFlags')) {
3838
$query->orWhereDoesntHave('post.discussion.tags');
3939
}
40-
}
41-
42-
if (! $actor->hasPermission('discussion.viewFlags')) {
43-
$query->orWhere('flags.user_id', $actor->id);
40+
} elseif (! $actor->hasPermission('discussion.viewFlags')) {
41+
$query->whereRaw('1 = 0');
4442
}
4543
});
4644
}

extensions/flags/tests/integration/api/flags/ListTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ public function admin_can_see_one_flag_per_visible_post()
9696
}
9797

9898
#[Test]
99-
public function regular_user_sees_own_flags_of_visible_posts()
99+
public function regular_user_does_not_see_own_flags_of_visible_posts()
100100
{
101101
$response = $this->send(
102102
$this->request('GET', '/api/flags', [
@@ -109,7 +109,7 @@ public function regular_user_sees_own_flags_of_visible_posts()
109109
$data = json_decode($response->getBody()->getContents(), true)['data'];
110110

111111
$ids = Arr::pluck($data, 'id');
112-
$this->assertEqualsCanonicalizing(['2', '4'], $ids);
112+
$this->assertEqualsCanonicalizing([], $ids);
113113
}
114114

115115
#[Test]

extensions/flags/tests/integration/api/flags/ListWithTagsTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ public function admin_can_see_one_flag_per_post()
122122
}
123123

124124
#[Test]
125-
public function regular_user_sees_own_flags()
125+
public function regular_user_does_not_see_own_flags()
126126
{
127127
$response = $this->send(
128128
$this->request('GET', '/api/flags', [
@@ -135,7 +135,7 @@ public function regular_user_sees_own_flags()
135135
$data = json_decode($response->getBody()->getContents(), true)['data'];
136136

137137
$ids = Arr::pluck($data, 'id');
138-
$this->assertEqualsCanonicalizing(['2', '4'], $ids);
138+
$this->assertEqualsCanonicalizing([], $ids);
139139
}
140140

141141
#[Test]

extensions/flags/tests/integration/api/posts/IncludeFlagsVisibilityTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ public static function listFlagsIncludesDataProvider(): array
144144
'user_with_general_permission_sees_where_unrestricted_tag' => [2, [6, 7, 8]],
145145
'user_with_tag1_permission_sees_tag1_flags' => [3, [1, 2, 3, 4, 5]],
146146
'normal_user_sees_none' => [4, []],
147-
'normal_user_sees_own' => [5, [2, 7, 4, 8]],
147+
'normal_user_does_not_see_own' => [5, []],
148148
];
149149
}
150150
}

0 commit comments

Comments
 (0)