Skip to content

Commit c17def2

Browse files
authored
Merge pull request #7208 from usu/feat/disable-filter-by-user-for-subresources
opt out from FilterByUserExtension for subresources
2 parents 2819c69 + 756dc75 commit c17def2

File tree

11 files changed

+44
-1
lines changed

11 files changed

+44
-1
lines changed

api/src/Doctrine/FilterByCurrentUserExtension.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@ public function __construct(Security $security, EntityManagerInterface $entityMa
2222
}
2323

2424
public function applyToCollection(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, ?string $resourceClass = null, ?Operation $operation = null, array $context = []): void {
25+
$extraProperties = $operation->getExtraProperties();
26+
if (array_key_exists('filter_by_current_user', $extraProperties) && false === $extraProperties['filter_by_current_user']) {
27+
return;
28+
}
29+
2530
$this->addWhere($queryBuilder, $queryNameGenerator, $resourceClass);
2631
}
2732

api/src/Entity/Activity.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,9 @@
5858
],
5959
normalizationContext: self::COLLECTION_NORMALIZATION_CONTEXT,
6060
security: 'is_fully_authenticated()',
61+
extraProperties: [
62+
'filter_by_current_user' => false,
63+
]
6164
),
6265
new Post(
6366
processor: ActivityCreateProcessor::class,

api/src/Entity/ActivityProgressLabel.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,9 @@
5454
),
5555
],
5656
security: 'is_fully_authenticated()',
57+
extraProperties: [
58+
'filter_by_current_user' => false,
59+
]
5760
),
5861
new Post(
5962
validationContext: ['groups' => ['Default', 'create']],

api/src/Entity/Category.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,9 @@
6666
security: 'is_granted("CAMP_COLLABORATOR", camp) or is_granted("CAMP_IS_PROTOTYPE", camp)'
6767
),
6868
],
69+
extraProperties: [
70+
'filter_by_current_user' => false,
71+
]
6972
),
7073
],
7174
denormalizationContext: ['groups' => ['write']],

api/src/Entity/Checklist.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,9 @@
6565
security: 'is_granted("CAMP_COLLABORATOR", camp) or is_granted("CAMP_IS_PROTOTYPE", camp)'
6666
),
6767
],
68+
extraProperties: [
69+
'filter_by_current_user' => false,
70+
]
6871
),
6972
],
7073
denormalizationContext: ['groups' => ['write']],

api/src/Entity/ChecklistItem.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,9 @@
6868
is_granted("CAMP_COLLABORATOR", checklist)'
6969
),
7070
],
71+
extraProperties: [
72+
'filter_by_current_user' => false,
73+
]
7174
),
7275
],
7376
denormalizationContext: ['groups' => ['write']],

api/src/Entity/Day.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@
4545
],
4646
normalizationContext: self::COLLECTION_NORMALIZATION_CONTEXT,
4747
security: 'is_fully_authenticated()',
48+
extraProperties: [
49+
'filter_by_current_user' => false,
50+
]
4851
),
4952
],
5053
denormalizationContext: ['groups' => ['write']],

api/src/Entity/DayResponsible.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@
4141
security: 'is_granted("CAMP_COLLABORATOR", day) or is_granted("CAMP_IS_PROTOTYPE", day)'
4242
),
4343
],
44+
extraProperties: [
45+
'filter_by_current_user' => false,
46+
]
4447
),
4548
new Post(
4649
securityPostDenormalize: 'is_granted("CAMP_MEMBER", object) or is_granted("CAMP_MANAGER", object) or object.day === null'

api/src/Entity/ScheduleEntry.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,9 @@
5454
),
5555
],
5656
security: 'is_fully_authenticated()',
57+
extraProperties: [
58+
'filter_by_current_user' => false,
59+
]
5760
),
5861
new Post(
5962
denormalizationContext: ['groups' => ['write', 'create']],

api/tests/Api/Activities/ListActivitiesTest.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public function testListActivitiesFilteredByCampIsAllowedForCollaborator() {
5959
], $response->toArray()['_links']['items']);
6060
}
6161

62-
public function testListActivitiesByCampSubresourceIsAllowedForCollaborator() {
62+
public function testListActivitiesAsCampSubresourceIsAllowedForCollaborator() {
6363
$camp = static::getFixture('camp1');
6464
$response = static::createClientWithCredentials()->request('GET', "/camps/{$camp->getId()}/activities");
6565
$this->assertResponseStatusCodeSame(200);
@@ -78,6 +78,12 @@ public function testListActivitiesByCampSubresourceIsAllowedForCollaborator() {
7878
], $response->toArray()['_links']['items']);
7979
}
8080

81+
public function testListActivitiesAsCampSubresourceIsDeniedForUnrelatedUser() {
82+
$camp = static::getFixture('camp1');
83+
$response = static::createClientWithCredentials(['email' => static::$fixtures['user4unrelated']->getEmail()])->request('GET', "/camps/{$camp->getId()}/activities");
84+
$this->assertResponseStatusCodeSame(404);
85+
}
86+
8187
public function testListActivitiesFilteredByCampIsDeniedForUnrelatedUser() {
8288
$camp = static::getFixture('camp1');
8389
$response = static::createClientWithCredentials(['email' => static::$fixtures['user4unrelated']->getEmail()])

0 commit comments

Comments
 (0)