Skip to content

Commit e23bdff

Browse files
committed
chore: Add the correct security and x attributes and fix path with the correct routes
1 parent c38cdc7 commit e23bdff

File tree

3 files changed

+68
-30
lines changed

3 files changed

+68
-30
lines changed

app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitSelectedPresentationListApiController.php

Lines changed: 37 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@
1313
**/
1414

1515
use App\Models\Exceptions\AuthzException;
16+
use App\Models\Foundation\Main\IGroup;
1617
use App\ModelSerializers\SerializerUtils;
18+
use App\Security\SummitScopes;
1719
use App\Services\Model\ISummitSelectedPresentationListService;
1820
use Illuminate\Http\Response;
1921
use Illuminate\Support\Facades\Request;
@@ -76,10 +78,12 @@ public function __construct
7678
* @return \Illuminate\Http\JsonResponse|mixed
7779
*/
7880
#[OA\Get(
79-
path: "/api/v1/summits/{id}/selection-plans/{selection_plan_id}/track-chairs/tracks/{track_id}/selection-lists/team",
81+
path: "/api/v1/summits/{id}/selection-plans/{selection_plan_id}/tracks/{track_id}/selection-lists/team",
82+
operationId: 'getTeamSelectionList',
8083
summary: "Get team selection list for a track",
81-
security: [["Bearer" => []]],
82-
tags: ["summit-selected-presentation-lists"],
84+
security: [["selected_presentation_list_oauth2" => [SummitScopes::ReadSummitData]]],
85+
x: ["authz_groups" => [IGroup::SuperAdmins, IGroup::Administrators, IGroup::TrackChairs, IGroup::TrackChairsAdmins]],
86+
tags: ["Summit Selected Presentation Lists"],
8387
parameters: [
8488
new OA\Parameter(
8589
name: "id",
@@ -144,10 +148,12 @@ public function getTeamSelectionList($summit_id, $selection_plan_id, $track_id){
144148
* @return \Illuminate\Http\JsonResponse|mixed
145149
*/
146150
#[OA\Post(
147-
path: "/api/v1/summits/{id}/selection-plans/{selection_plan_id}/track-chairs/tracks/{track_id}/selection-lists/team",
151+
path: "/api/v1/summits/{id}/selection-plans/{selection_plan_id}/tracks/{track_id}/selection-lists/team",
152+
operationId: 'createTeamSelectionList',
148153
summary: "Create team selection list for a track",
149-
security: [["Bearer" => []]],
150-
tags: ["summit-selected-presentation-lists"],
154+
security: [["selected_presentation_list_oauth2" => [SummitScopes::WriteSummitData]]],
155+
x: ["authz_groups" => [IGroup::SuperAdmins, IGroup::Administrators, IGroup::TrackChairs, IGroup::TrackChairsAdmins]],
156+
tags: ["Summit Selected Presentation Lists"],
151157
parameters: [
152158
new OA\Parameter(
153159
name: "id",
@@ -209,10 +215,12 @@ public function createTeamSelectionList($summit_id, $selection_plan_id, $track_i
209215
* @return \Illuminate\Http\JsonResponse|mixed
210216
*/
211217
#[OA\Get(
212-
path: "/api/v1/summits/{id}/selection-plans/{selection_plan_id}/track-chairs/tracks/{track_id}/selection-lists/individual/owner/{owner_id}",
218+
path: "/api/v1/summits/{id}/selection-plans/{selection_plan_id}/tracks/{track_id}/selection-lists/individual/owner/{owner_id}",
219+
operationId: 'getIndividualSelectionList',
213220
summary: "Get individual selection list for a specific owner",
214-
security: [["Bearer" => []]],
215-
tags: ["summit-selected-presentation-lists"],
221+
security: [["selected_presentation_list_oauth2" => [SummitScopes::ReadSummitData]]],
222+
x: ["authz_groups" => [IGroup::SuperAdmins, IGroup::Administrators, IGroup::TrackChairs, IGroup::TrackChairsAdmins]],
223+
tags: ["Summit Selected Presentation Lists"],
216224
parameters: [
217225
new OA\Parameter(
218226
name: "id",
@@ -280,10 +288,12 @@ public function getIndividualSelectionList($summit_id, $selection_plan_id, $trac
280288
* @return \Illuminate\Http\JsonResponse|mixed
281289
*/
282290
#[OA\Post(
283-
path: "/api/v1/summits/{id}/selection-plans/{selection_plan_id}/track-chairs/tracks/{track_id}/selection-lists/individual/owner/me",
291+
path: "/api/v1/summits/{id}/selection-plans/{selection_plan_id}/tracks/{track_id}/selection-lists/individual/owner/me",
292+
operationId: 'createIndividualSelectionList',
284293
summary: "Create individual selection list for current user",
285-
security: [["Bearer" => []]],
286-
tags: ["summit-selected-presentation-lists"],
294+
security: [["selected_presentation_list_oauth2" => [SummitScopes::WriteSummitData]]],
295+
x: ["authz_groups" => [IGroup::SuperAdmins, IGroup::Administrators, IGroup::TrackChairs, IGroup::TrackChairsAdmins]],
296+
tags: ["Summit Selected Presentation Lists"],
287297
parameters: [
288298
new OA\Parameter(
289299
name: "id",
@@ -344,10 +354,12 @@ public function createIndividualSelectionList($summit_id, $selection_plan_id, $t
344354
* @return \Illuminate\Http\JsonResponse|mixed
345355
*/
346356
#[OA\Put(
347-
path: "/api/v1/summits/{id}/selection-plans/{selection_plan_id}/track-chairs/tracks/{track_id}/selection-lists/{list_id}/reorder",
357+
path: "/api/v1/summits/{id}/selection-plans/{selection_plan_id}/tracks/{track_id}/selection-lists/{list_id}/reorder",
358+
operationId: 'reorderSelectionList',
348359
summary: "Reorder presentations in a selection list",
349-
security: [["Bearer" => []]],
350-
tags: ["summit-selected-presentation-lists"],
360+
security: [["selected_presentation_list_oauth2" => [SummitScopes::WriteSummitData]]],
361+
x: ["authz_groups" => [IGroup::SuperAdmins, IGroup::Administrators, IGroup::TrackChairs, IGroup::TrackChairsAdmins]],
362+
tags: ["Summit Selected Presentation Lists"],
351363
parameters: [
352364
new OA\Parameter(
353365
name: "id",
@@ -447,10 +459,12 @@ public function reorderSelectionList($summit_id, $selection_plan_id, $track_id,
447459
* @return \Illuminate\Http\JsonResponse|mixed
448460
*/
449461
#[OA\Post(
450-
path: "/api/v1/summits/{id}/selection-plans/{selection_plan_id}/track-chairs/tracks/{track_id}/selection-lists/individual/presentation-selections/{collection}/presentations/{presentation_id}",
462+
path: "/api/v1/summits/{id}/selection-plans/{selection_plan_id}/tracks/{track_id}/selection-lists/individual/presentation-selections/{collection}/presentations/{presentation_id}",
463+
operationId: 'assignPresentationToMyIndividualList',
451464
summary: "Assign a presentation to current user's individual selection list",
452-
security: [["Bearer" => []]],
453-
tags: ["summit-selected-presentation-lists"],
465+
security: [["selected_presentation_list_oauth2" => [SummitScopes::WriteSummitData]]],
466+
x: ["authz_groups" => [IGroup::SuperAdmins, IGroup::Administrators, IGroup::TrackChairs, IGroup::TrackChairsAdmins]],
467+
tags: ["Summit Selected Presentation Lists"],
454468
parameters: [
455469
new OA\Parameter(
456470
name: "id",
@@ -527,10 +541,12 @@ public function assignPresentationToMyIndividualList($summit_id, $selection_plan
527541
* @return \Illuminate\Http\JsonResponse|mixed
528542
*/
529543
#[OA\Delete(
530-
path: "/api/v1/summits/{id}/selection-plans/{selection_plan_id}/track-chairs/tracks/{track_id}/selection-lists/individual/presentation-selections/{collection}/presentations/{presentation_id}",
544+
path: "/api/v1/summits/{id}/selection-plans/{selection_plan_id}/tracks/{track_id}/selection-lists/individual/presentation-selections/{collection}/presentations/{presentation_id}",
545+
operationId: 'removePresentationFromMyIndividualList',
531546
summary: "Remove a presentation from current user's individual selection list",
532-
security: [["Bearer" => []]],
533-
tags: ["summit-selected-presentation-lists"],
547+
security: [["selected_presentation_list_oauth2" => [SummitScopes::WriteSummitData]]],
548+
x: ["authz_groups" => [IGroup::SuperAdmins, IGroup::Administrators, IGroup::TrackChairs, IGroup::TrackChairsAdmins]],
549+
tags: ["Summit Selected Presentation Lists"],
534550
parameters: [
535551
new OA\Parameter(
536552
name: "id",
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?php
2+
3+
namespace App\Swagger\Security;
4+
5+
use App\Security\SummitScopes;
6+
use OpenApi\Attributes as OA;
7+
8+
#[
9+
OA\SecurityScheme(
10+
type: 'oauth2',
11+
securityScheme: 'selected_presentation_list_oauth2',
12+
flows: [
13+
new OA\Flow(
14+
authorizationUrl: L5_SWAGGER_CONST_AUTH_URL,
15+
tokenUrl: L5_SWAGGER_CONST_TOKEN_URL,
16+
flow: 'authorizationCode',
17+
scopes: [
18+
SummitScopes::ReadSummitData => 'Read Summit Data',
19+
SummitScopes::WriteSummitData => 'Write Summit Data',
20+
],
21+
),
22+
],
23+
)
24+
]
25+
class SelectedPresentationListAuthSchema {}

app/Swagger/SummitPresentationSchemas.php

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,19 @@
66

77
#[OA\Schema(
88
schema: "SummitSelectedPresentationList",
9-
required: ["id", "created", "last_edited", "name", "type", "hash", "selected_presentations", "interested_presentations"],
109
properties: [
1110
new OA\Property(property: "id", type: "integer", example: 1),
1211
new OA\Property(property: "created", type: "integer", description: "Unix timestamp", example: 1640995200),
1312
new OA\Property(property: "last_edited", type: "integer", description: "Unix timestamp", example: 1640995200),
1413
new OA\Property(property: "name", type: "string", example: "My Selection List"),
1514
new OA\Property(property: "type", type: "string", enum: ["Individual", "Group"], example: "Individual"),
1615
new OA\Property(property: "hash", type: "string", example: "abc123def456"),
17-
new OA\Property(property: "selected_presentations", type: "array", items: new OA\Items(type: "integer"), description: "Array of selected presentation IDs"),
18-
new OA\Property(property: "interested_presentations", type: "array", items: new OA\Items(type: "integer"), description: "Array of interested presentation IDs (only for Individual lists)", nullable: true),
19-
new OA\Property(property: "category_id", type: "integer", example: 5),
20-
new OA\Property(property: "category", ref: "#/components/schemas/PresentationCategory"),
21-
new OA\Property(property: "owner_id", type: "integer", example: 10),
22-
new OA\Property(property: "owner", ref: "#/components/schemas/Member"),
23-
new OA\Property(property: "selection_plan_id", type: "integer", example: 3),
24-
new OA\Property(property: "selection_plan", ref: "#/components/schemas/SelectionPlan"),
16+
new OA\Property(property: "selected_presentations", type: "array", items: new OA\Items(type: "integer"), description: "Array of SummitSelectedPresentation IDs of collection \"selected\", full objects when ?expand=selected_presentations" ),
17+
new OA\Property(property: "interested_presentations", type: "array", items: new OA\Items(type: "integer"), description: "Array of SummitSelectedPresentation IDs of collection \"maybe\", full objects when ?expand=interested_presentations", nullable: true),
18+
new OA\Property(property: "category_id", type: "integer", example: 5, description: "PresentationCategory ID, full object when ?expand=category", nullable: true),
19+
new OA\Property(property: "owner_id", type: "integer", example: 10, nullable: true, description: "Member ID not present when ?expand=owner"),
20+
new OA\Property(property: "owner", ref: "#/components/schemas/Member", description: "Member full object when ?expand=owner)", nullable: true),
21+
new OA\Property(property: "selection_plan_id", type: "integer", example: 3, description: "SelectionPlan ID, full object when ?expand=selection_plan)", nullable: true),
2522
]
2623
)]
2724
class SummitSelectedPresentationList {}

0 commit comments

Comments
 (0)