Skip to content

Commit 9a48752

Browse files
committed
fix: Add security schema, also security and x.required-groups fields
1 parent 789dd45 commit 9a48752

File tree

2 files changed

+209
-19
lines changed

2 files changed

+209
-19
lines changed

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

Lines changed: 180 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,12 @@
1515
use App\Http\Utils\BooleanCellFormatter;
1616
use App\Http\Utils\EpochCellFormatter;
1717
use App\libs\Utils\Doctrine\ReplicaAwareTrait;
18+
use App\Models\Foundation\Main\IGroup;
1819
use App\Models\Foundation\Summit\Registration\ISummitExternalRegistrationFeedType;
1920
use App\ModelSerializers\ISummitAttendeeTicketSerializerTypes;
2021
use App\ModelSerializers\SerializerUtils;
2122
use App\Rules\Boolean;
23+
use App\Security\SummitScopes;
2224
use App\Services\Model\ISummitOrderService;
2325
use Illuminate\Http\Request as LaravelRequest;
2426
use Illuminate\Http\Response;
@@ -110,7 +112,17 @@ public function __construct
110112
path: '/api/v1/summits/{summit_id}/tickets',
111113
summary: 'Get all tickets for a summit',
112114
description: 'Returns a paginated list of tickets for the specified summit with filtering and sorting capabilities',
113-
security: [['bearer' => []]],
115+
security: [['summit_tickets_oauth2' => [
116+
SummitScopes::ReadAllSummitData,
117+
SummitScopes::ReadRegistrationOrders,
118+
]]],
119+
x: ['required-groups' => [
120+
IGroup::SuperAdmins,
121+
IGroup::Administrators,
122+
IGroup::SummitAdministrators,
123+
IGroup::SummitRegistrationAdmins,
124+
IGroup::BadgePrinters,
125+
]],
114126
tags: ['tickets'],
115127
parameters: [
116128
new OA\Parameter(name: 'summit_id', in: 'path', required: true, description: 'Summit ID or slug', schema: new OA\Schema(type: 'string')),
@@ -289,7 +301,13 @@ function () {
289301
path: '/api/v1/summits/{summit_id}/tickets/external',
290302
summary: 'Get external ticket data',
291303
description: 'Returns ticket data from external registration feed by owner email',
292-
security: [['bearer' => []]],
304+
security: [['summit_tickets_oauth2' => [
305+
SummitScopes::ReadAllSummitData,
306+
SummitScopes::ReadRegistrationOrders,
307+
]]],
308+
x: ['required-groups' => [
309+
IGroup::BadgePrinters,
310+
]],
293311
tags: ['tickets'],
294312
parameters: [
295313
new OA\Parameter(name: 'summit_id', in: 'path', required: true, description: 'Summit ID or slug', schema: new OA\Schema(type: 'string')),
@@ -364,7 +382,16 @@ function () {
364382
path: '/api/v1/summits/{summit_id}/tickets/csv',
365383
summary: 'Get all tickets for a summit',
366384
description: 'Returns a paginated list of tickets for the specified summit with filtering and sorting capabilities',
367-
security: [['bearer' => []]],
385+
security: [['summit_tickets_oauth2' => [
386+
SummitScopes::ReadAllSummitData,
387+
SummitScopes::ReadRegistrationOrders,
388+
]]],
389+
x: ['required-groups' => [
390+
IGroup::SuperAdmins,
391+
IGroup::Administrators,
392+
IGroup::SummitAdministrators,
393+
IGroup::SummitRegistrationAdmins,
394+
]],
368395
tags: ['tickets'],
369396
parameters: [
370397
new OA\Parameter(name: 'summit_id', in: 'path', required: true, description: 'Summit ID or slug', schema: new OA\Schema(type: 'string')),
@@ -628,7 +655,16 @@ function($data, $serializerParams) use($questions){
628655
path: '/api/v1/summits/{summit_id}/tickets/ingest',
629656
summary: 'Ingest external ticket data',
630657
description: 'Triggers ingestion of ticket data from external registration feed',
631-
security: [['bearer' => []]],
658+
security: [['summit_tickets_oauth2' => [
659+
SummitScopes::WriteSummitData,
660+
SummitScopes::WriteRegistrationData,
661+
]]],
662+
x: ['required-groups' => [
663+
IGroup::SuperAdmins,
664+
IGroup::Administrators,
665+
IGroup::SummitAdministrators,
666+
IGroup::SummitRegistrationAdmins,
667+
]],
632668
tags: ['tickets'],
633669
parameters: [
634670
new OA\Parameter(name: 'summit_id', in: 'path', required: true, description: 'Summit ID or slug', schema: new OA\Schema(type: 'string')),
@@ -669,7 +705,16 @@ public function ingestExternalTicketData($summit_id)
669705
path: '/api/v1/summits/{summit_id}/tickets/import-template',
670706
summary: 'Get ticket import template',
671707
description: 'Returns a CSV template for importing ticket data',
672-
security: [['bearer' => []]],
708+
security: [['summit_tickets_oauth2' => [
709+
SummitScopes::WriteSummitData,
710+
SummitScopes::WriteRegistrationData,
711+
]]],
712+
x: ['required-groups' => [
713+
IGroup::SuperAdmins,
714+
IGroup::Administrators,
715+
IGroup::SummitAdministrators,
716+
IGroup::SummitRegistrationAdmins,
717+
]],
673718
tags: ['tickets'],
674719
parameters: [
675720
new OA\Parameter(name: 'summit_id', in: 'path', required: true, description: 'Summit ID or slug', schema: new OA\Schema(type: 'string')),
@@ -749,7 +794,16 @@ public function getImportTicketDataTemplate($summit_id)
749794
path: '/api/v1/summits/{summit_id}/tickets/import',
750795
summary: 'Import ticket data from CSV',
751796
description: 'Imports ticket data from a CSV file',
752-
security: [['bearer' => []]],
797+
security: [['summit_tickets_oauth2' => [
798+
SummitScopes::WriteSummitData,
799+
SummitScopes::WriteRegistrationData,
800+
]]],
801+
x: ['required-groups' => [
802+
IGroup::SuperAdmins,
803+
IGroup::Administrators,
804+
IGroup::SummitAdministrators,
805+
IGroup::SummitRegistrationAdmins,
806+
]],
753807
tags: ['tickets'],
754808
parameters: [
755809
new OA\Parameter(name: 'summit_id', in: 'path', required: true, description: 'Summit ID or slug', schema: new OA\Schema(type: 'string')),
@@ -801,7 +855,9 @@ public function importTicketData(LaravelRequest $request, $summit_id)
801855
path: '/api/v1/summits/all/tickets/me',
802856
summary: 'Get all my tickets across all summits',
803857
description: 'Returns all tickets owned by the current user across all summits',
804-
security: [['bearer' => []]],
858+
security: [['summit_tickets_oauth2' => [
859+
SummitScopes::ReadMyRegistrationOrders,
860+
]]],
805861
tags: ['tickets'],
806862
parameters: [
807863
new OA\Parameter(name: 'page', in: 'query', required: false, description: 'Page number', schema: new OA\Schema(type: 'integer', default: 1)),
@@ -828,7 +884,9 @@ public function getAllMyTickets()
828884
path: '/api/v1/summits/{summit_id}/tickets/me',
829885
summary: 'Get my tickets for a summit',
830886
description: 'Returns all tickets owned by the current user for a specific summit',
831-
security: [['bearer' => []]],
887+
security: [['summit_tickets_oauth2' => [
888+
SummitScopes::ReadMyRegistrationOrders,
889+
]]],
832890
tags: ['tickets'],
833891
parameters: [
834892
new OA\Parameter(name: 'summit_id', in: 'path', required: true, description: 'Summit ID or slug', schema: new OA\Schema(type: 'string')),
@@ -963,7 +1021,16 @@ protected function getChildFromSummit(Summit $summit, $child_id): ?IEntity
9631021
path: '/api/v1/summits/{summit_id}/tickets/{ticket_id}/refund',
9641022
summary: 'Refund a ticket',
9651023
description: 'Processes a refund for a specific ticket',
966-
security: [['bearer' => []]],
1024+
security: [['summit_tickets_oauth2' => [
1025+
SummitScopes::WriteSummitData,
1026+
SummitScopes::UpdateRegistrationOrders,
1027+
]]],
1028+
x: ['required-groups' => [
1029+
IGroup::SuperAdmins,
1030+
IGroup::Administrators,
1031+
IGroup::SummitAdministrators,
1032+
IGroup::SummitRegistrationAdmins,
1033+
]],
9671034
tags: ['tickets'],
9681035
parameters: [
9691036
new OA\Parameter(name: 'summit_id', in: 'path', required: true, description: 'Summit ID or slug', schema: new OA\Schema(type: 'string')),
@@ -1026,7 +1093,16 @@ public function refundTicket($summit_id, $ticket_id)
10261093
path: '/api/v1/summits/{summit_id}/tickets/{ticket_id}/badge',
10271094
summary: 'Get ticket badge',
10281095
description: 'Returns the badge associated with a ticket',
1029-
security: [['bearer' => []]],
1096+
security: [['summit_tickets_oauth2' => [
1097+
SummitScopes::ReadAllSummitData,
1098+
SummitScopes::ReadRegistrationOrders,
1099+
]]],
1100+
x: ['required-groups' => [
1101+
IGroup::SuperAdmins,
1102+
IGroup::Administrators,
1103+
IGroup::SummitAdministrators,
1104+
IGroup::SummitRegistrationAdmins,
1105+
]],
10301106
tags: ['tickets'],
10311107
parameters: [
10321108
new OA\Parameter(name: 'summit_id', in: 'path', required: true, description: 'Summit ID or slug', schema: new OA\Schema(type: 'string')),
@@ -1069,7 +1145,16 @@ public function getAttendeeBadge($summit_id, $ticket_id)
10691145
path: '/api/v1/summits/{summit_id}/tickets/{ticket_id}/badge',
10701146
summary: 'Create ticket badge',
10711147
description: 'Creates a badge for a specific ticket',
1072-
security: [['bearer' => []]],
1148+
security: [['summit_tickets_oauth2' => [
1149+
SummitScopes::WriteSummitData,
1150+
SummitScopes::UpdateRegistrationOrdersBadges,
1151+
]]],
1152+
x: ['required-groups' => [
1153+
IGroup::SuperAdmins,
1154+
IGroup::Administrators,
1155+
IGroup::SummitAdministrators,
1156+
IGroup::SummitRegistrationAdmins,
1157+
]],
10731158
tags: ['tickets'],
10741159
parameters: [
10751160
new OA\Parameter(name: 'summit_id', in: 'path', required: true, description: 'Summit ID or slug', schema: new OA\Schema(type: 'string')),
@@ -1113,7 +1198,16 @@ public function createAttendeeBadge($summit_id, $ticket_id)
11131198
path: '/api/v1/summits/{summit_id}/tickets/{ticket_id}/badge',
11141199
summary: 'Delete ticket badge',
11151200
description: 'Deletes the badge associated with a ticket',
1116-
security: [['bearer' => []]],
1201+
security: [['summit_tickets_oauth2' => [
1202+
SummitScopes::WriteSummitData,
1203+
SummitScopes::UpdateRegistrationOrders,
1204+
]]],
1205+
x: ['required-groups' => [
1206+
IGroup::SuperAdmins,
1207+
IGroup::Administrators,
1208+
IGroup::SummitAdministrators,
1209+
IGroup::SummitRegistrationAdmins,
1210+
]],
11171211
tags: ['tickets'],
11181212
parameters: [
11191213
new OA\Parameter(name: 'summit_id', in: 'path', required: true, description: 'Summit ID or slug', schema: new OA\Schema(type: 'string')),
@@ -1139,7 +1233,16 @@ public function deleteAttendeeBadge($summit_id, $ticket_id)
11391233
path: '/api/v1/summits/{summit_id}/tickets/{ticket_id}/badge/type/{type_id}',
11401234
summary: 'Update badge type',
11411235
description: 'Updates the badge type for a ticket',
1142-
security: [['bearer' => []]],
1236+
security: [['summit_tickets_oauth2' => [
1237+
SummitScopes::WriteSummitData,
1238+
SummitScopes::UpdateRegistrationOrdersBadges,
1239+
]]],
1240+
x: ['required-groups' => [
1241+
IGroup::SuperAdmins,
1242+
IGroup::Administrators,
1243+
IGroup::SummitAdministrators,
1244+
IGroup::SummitRegistrationAdmins,
1245+
]],
11431246
tags: ['tickets'],
11441247
parameters: [
11451248
new OA\Parameter(name: 'summit_id', in: 'path', required: true, description: 'Summit ID or slug', schema: new OA\Schema(type: 'string')),
@@ -1175,7 +1278,16 @@ public function updateAttendeeBadgeType($summit_id, $ticket_id, $type_id)
11751278
path: '/api/v1/summits/{summit_id}/tickets/{ticket_id}/badge/features/{feature_id}',
11761279
summary: 'Add badge feature',
11771280
description: 'Adds a feature to a ticket badge',
1178-
security: [['bearer' => []]],
1281+
security: [['summit_tickets_oauth2' => [
1282+
SummitScopes::WriteSummitData,
1283+
SummitScopes::UpdateRegistrationOrdersBadges,
1284+
]]],
1285+
x: ['required-groups' => [
1286+
IGroup::SuperAdmins,
1287+
IGroup::Administrators,
1288+
IGroup::SummitAdministrators,
1289+
IGroup::SummitRegistrationAdmins,
1290+
]],
11791291
tags: ['tickets'],
11801292
parameters: [
11811293
new OA\Parameter(name: 'summit_id', in: 'path', required: true, description: 'Summit ID or slug', schema: new OA\Schema(type: 'string')),
@@ -1211,7 +1323,16 @@ public function addAttendeeBadgeFeature($summit_id, $ticket_id, $feature_id)
12111323
path: '/api/v1/summits/{summit_id}/tickets/{ticket_id}/badge/features/{feature_id}',
12121324
summary: 'Remove badge feature',
12131325
description: 'Removes a feature from a ticket badge',
1214-
security: [['bearer' => []]],
1326+
security: [['summit_tickets_oauth2' => [
1327+
SummitScopes::WriteSummitData,
1328+
SummitScopes::UpdateRegistrationOrdersBadges,
1329+
]]],
1330+
x: ['required-groups' => [
1331+
IGroup::SuperAdmins,
1332+
IGroup::Administrators,
1333+
IGroup::SummitAdministrators,
1334+
IGroup::SummitRegistrationAdmins,
1335+
]],
12151336
tags: ['tickets'],
12161337
parameters: [
12171338
new OA\Parameter(name: 'summit_id', in: 'path', required: true, description: 'Summit ID or slug', schema: new OA\Schema(type: 'string')),
@@ -1247,7 +1368,17 @@ public function removeAttendeeBadgeFeature($summit_id, $ticket_id, $feature_id)
12471368
path: '/api/v1/summits/{summit_id}/tickets/{ticket_id}/badge/print',
12481369
summary: 'Print badge with default view',
12491370
description: 'Prints a badge using the summit\'s default view type',
1250-
security: [['bearer' => []]],
1371+
security: [['summit_tickets_oauth2' => [
1372+
SummitScopes::WriteSummitData,
1373+
SummitScopes::PrintRegistrationOrdersBadges,
1374+
]]],
1375+
x: ['required-groups' => [
1376+
IGroup::SuperAdmins,
1377+
IGroup::Administrators,
1378+
IGroup::SummitAdministrators,
1379+
IGroup::SummitRegistrationAdmins,
1380+
IGroup::BadgePrinters,
1381+
]],
12511382
tags: ['tickets'],
12521383
parameters: [
12531384
new OA\Parameter(name: 'summit_id', in: 'path', required: true, description: 'Summit ID or slug', schema: new OA\Schema(type: 'string')),
@@ -1284,7 +1415,17 @@ public function printAttendeeBadgeDefault($summit_id, $ticket_id)
12841415
path: '/api/v1/summits/{summit_id}/tickets/{ticket_id}/badge/{view_type}/print',
12851416
summary: 'Print badge with specific view type',
12861417
description: 'Prints a badge using a specific view type',
1287-
security: [['bearer' => []]],
1418+
security: [['summit_tickets_oauth2' => [
1419+
SummitScopes::WriteSummitData,
1420+
SummitScopes::PrintRegistrationOrdersBadges,
1421+
]]],
1422+
x: ['required-groups' => [
1423+
IGroup::SuperAdmins,
1424+
IGroup::Administrators,
1425+
IGroup::SummitAdministrators,
1426+
IGroup::SummitRegistrationAdmins,
1427+
IGroup::BadgePrinters,
1428+
]],
12881429
tags: ['tickets'],
12891430
parameters: [
12901431
new OA\Parameter(name: 'summit_id', in: 'path', required: true, description: 'Summit ID or slug', schema: new OA\Schema(type: 'string')),
@@ -1339,7 +1480,17 @@ public function printAttendeeBadge($summit_id, $ticket_id, $view_type)
13391480
path: '/api/v1/summits/{summit_id}/tickets/{ticket_id}/badge/can-print',
13401481
summary: 'Check if badge can be printed (default view)',
13411482
description: 'Checks if a badge can be printed using the default view type',
1342-
security: [['bearer' => []]],
1483+
security: [['summit_tickets_oauth2' => [
1484+
SummitScopes::ReadAllSummitData,
1485+
SummitScopes::PrintRegistrationOrdersBadges,
1486+
]]],
1487+
x: ['required-groups' => [
1488+
IGroup::SuperAdmins,
1489+
IGroup::Administrators,
1490+
IGroup::SummitAdministrators,
1491+
IGroup::SummitRegistrationAdmins,
1492+
IGroup::BadgePrinters,
1493+
]],
13431494
tags: ['tickets'],
13441495
parameters: [
13451496
new OA\Parameter(name: 'summit_id', in: 'path', required: true, description: 'Summit ID or slug', schema: new OA\Schema(type: 'string')),
@@ -1372,7 +1523,17 @@ public function canPrintAttendeeBadgeDefault($summit_id, $ticket_id)
13721523
path: '/api/v1/summits/{summit_id}/tickets/{ticket_id}/badge/{view_type}/can-print',
13731524
summary: 'Check if badge can be printed (specific view)',
13741525
description: 'Checks if a badge can be printed using a specific view type',
1375-
security: [['bearer' => []]],
1526+
security: [['summit_tickets_oauth2' => [
1527+
SummitScopes::ReadAllSummitData,
1528+
SummitScopes::PrintRegistrationOrdersBadges,
1529+
]]],
1530+
x: ['required-groups' => [
1531+
IGroup::SuperAdmins,
1532+
IGroup::Administrators,
1533+
IGroup::SummitAdministrators,
1534+
IGroup::SummitRegistrationAdmins,
1535+
IGroup::BadgePrinters,
1536+
]],
13761537
tags: ['tickets'],
13771538
parameters: [
13781539
new OA\Parameter(name: 'summit_id', in: 'path', required: true, description: 'Summit ID or slug', schema: new OA\Schema(type: 'string')),
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?php
2+
3+
namespace App\Swagger\schemas;
4+
5+
use App\Security\SummitScopes;
6+
use OpenApi\Attributes as OA;
7+
8+
#[OA\SecurityScheme(
9+
type: 'oauth2',
10+
securityScheme: 'summit_tickets_oauth2',
11+
flows: [
12+
new OA\Flow(
13+
authorizationUrl: L5_SWAGGER_CONST_AUTH_URL,
14+
tokenUrl: L5_SWAGGER_CONST_TOKEN_URL,
15+
flow: 'authorizationCode',
16+
scopes: [
17+
SummitScopes::ReadAllSummitData => 'Read All Summit Data',
18+
SummitScopes::ReadRegistrationOrders => 'Read Registration Orders',
19+
SummitScopes::WriteSummitData => 'Write Summit Data',
20+
SummitScopes::WriteRegistrationData => 'Write Registration Data',
21+
SummitScopes::UpdateRegistrationOrders => 'Update Registration Orders',
22+
SummitScopes::UpdateRegistrationOrdersBadges => 'Update Registration Orders Badges',
23+
SummitScopes::PrintRegistrationOrdersBadges => 'Print Registration Orders Badges',
24+
SummitScopes::ReadMyRegistrationOrders => 'Read My Registration Orders',
25+
],
26+
),
27+
],
28+
)]
29+
class SummitTicketsAuthSchema {}

0 commit comments

Comments
 (0)