Skip to content

Commit e580d07

Browse files
committed
fix: Add security schema, also security and x.required-groups fields
1 parent acaa457 commit e580d07

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')),
@@ -287,7 +299,13 @@ function () {
287299
path: '/api/v1/summits/{summit_id}/tickets/external',
288300
summary: 'Get external ticket data',
289301
description: 'Returns ticket data from external registration feed by owner email',
290-
security: [['bearer' => []]],
302+
security: [['summit_tickets_oauth2' => [
303+
SummitScopes::ReadAllSummitData,
304+
SummitScopes::ReadRegistrationOrders,
305+
]]],
306+
x: ['required-groups' => [
307+
IGroup::BadgePrinters,
308+
]],
291309
tags: ['tickets'],
292310
parameters: [
293311
new OA\Parameter(name: 'summit_id', in: 'path', required: true, description: 'Summit ID or slug', schema: new OA\Schema(type: 'string')),
@@ -362,7 +380,16 @@ function () {
362380
path: '/api/v1/summits/{summit_id}/tickets/csv',
363381
summary: 'Get all tickets for a summit',
364382
description: 'Returns a paginated list of tickets for the specified summit with filtering and sorting capabilities',
365-
security: [['bearer' => []]],
383+
security: [['summit_tickets_oauth2' => [
384+
SummitScopes::ReadAllSummitData,
385+
SummitScopes::ReadRegistrationOrders,
386+
]]],
387+
x: ['required-groups' => [
388+
IGroup::SuperAdmins,
389+
IGroup::Administrators,
390+
IGroup::SummitAdministrators,
391+
IGroup::SummitRegistrationAdmins,
392+
]],
366393
tags: ['tickets'],
367394
parameters: [
368395
new OA\Parameter(name: 'summit_id', in: 'path', required: true, description: 'Summit ID or slug', schema: new OA\Schema(type: 'string')),
@@ -624,7 +651,16 @@ function($data, $serializerParams) use($questions){
624651
path: '/api/v1/summits/{summit_id}/tickets/ingest',
625652
summary: 'Ingest external ticket data',
626653
description: 'Triggers ingestion of ticket data from external registration feed',
627-
security: [['bearer' => []]],
654+
security: [['summit_tickets_oauth2' => [
655+
SummitScopes::WriteSummitData,
656+
SummitScopes::WriteRegistrationData,
657+
]]],
658+
x: ['required-groups' => [
659+
IGroup::SuperAdmins,
660+
IGroup::Administrators,
661+
IGroup::SummitAdministrators,
662+
IGroup::SummitRegistrationAdmins,
663+
]],
628664
tags: ['tickets'],
629665
parameters: [
630666
new OA\Parameter(name: 'summit_id', in: 'path', required: true, description: 'Summit ID or slug', schema: new OA\Schema(type: 'string')),
@@ -665,7 +701,16 @@ public function ingestExternalTicketData($summit_id)
665701
path: '/api/v1/summits/{summit_id}/tickets/import-template',
666702
summary: 'Get ticket import template',
667703
description: 'Returns a CSV template for importing ticket data',
668-
security: [['bearer' => []]],
704+
security: [['summit_tickets_oauth2' => [
705+
SummitScopes::WriteSummitData,
706+
SummitScopes::WriteRegistrationData,
707+
]]],
708+
x: ['required-groups' => [
709+
IGroup::SuperAdmins,
710+
IGroup::Administrators,
711+
IGroup::SummitAdministrators,
712+
IGroup::SummitRegistrationAdmins,
713+
]],
669714
tags: ['tickets'],
670715
parameters: [
671716
new OA\Parameter(name: 'summit_id', in: 'path', required: true, description: 'Summit ID or slug', schema: new OA\Schema(type: 'string')),
@@ -745,7 +790,16 @@ public function getImportTicketDataTemplate($summit_id)
745790
path: '/api/v1/summits/{summit_id}/tickets/import',
746791
summary: 'Import ticket data from CSV',
747792
description: 'Imports ticket data from a CSV file',
748-
security: [['bearer' => []]],
793+
security: [['summit_tickets_oauth2' => [
794+
SummitScopes::WriteSummitData,
795+
SummitScopes::WriteRegistrationData,
796+
]]],
797+
x: ['required-groups' => [
798+
IGroup::SuperAdmins,
799+
IGroup::Administrators,
800+
IGroup::SummitAdministrators,
801+
IGroup::SummitRegistrationAdmins,
802+
]],
749803
tags: ['tickets'],
750804
parameters: [
751805
new OA\Parameter(name: 'summit_id', in: 'path', required: true, description: 'Summit ID or slug', schema: new OA\Schema(type: 'string')),
@@ -797,7 +851,9 @@ public function importTicketData(LaravelRequest $request, $summit_id)
797851
path: '/api/v1/summits/all/tickets/me',
798852
summary: 'Get all my tickets across all summits',
799853
description: 'Returns all tickets owned by the current user across all summits',
800-
security: [['bearer' => []]],
854+
security: [['summit_tickets_oauth2' => [
855+
SummitScopes::ReadMyRegistrationOrders,
856+
]]],
801857
tags: ['tickets'],
802858
parameters: [
803859
new OA\Parameter(name: 'page', in: 'query', required: false, description: 'Page number', schema: new OA\Schema(type: 'integer', default: 1)),
@@ -824,7 +880,9 @@ public function getAllMyTickets()
824880
path: '/api/v1/summits/{summit_id}/tickets/me',
825881
summary: 'Get my tickets for a summit',
826882
description: 'Returns all tickets owned by the current user for a specific summit',
827-
security: [['bearer' => []]],
883+
security: [['summit_tickets_oauth2' => [
884+
SummitScopes::ReadMyRegistrationOrders,
885+
]]],
828886
tags: ['tickets'],
829887
parameters: [
830888
new OA\Parameter(name: 'summit_id', in: 'path', required: true, description: 'Summit ID or slug', schema: new OA\Schema(type: 'string')),
@@ -959,7 +1017,16 @@ protected function getChildFromSummit(Summit $summit, $child_id): ?IEntity
9591017
path: '/api/v1/summits/{summit_id}/tickets/{ticket_id}/refund',
9601018
summary: 'Refund a ticket',
9611019
description: 'Processes a refund for a specific ticket',
962-
security: [['bearer' => []]],
1020+
security: [['summit_tickets_oauth2' => [
1021+
SummitScopes::WriteSummitData,
1022+
SummitScopes::UpdateRegistrationOrders,
1023+
]]],
1024+
x: ['required-groups' => [
1025+
IGroup::SuperAdmins,
1026+
IGroup::Administrators,
1027+
IGroup::SummitAdministrators,
1028+
IGroup::SummitRegistrationAdmins,
1029+
]],
9631030
tags: ['tickets'],
9641031
parameters: [
9651032
new OA\Parameter(name: 'summit_id', in: 'path', required: true, description: 'Summit ID or slug', schema: new OA\Schema(type: 'string')),
@@ -1022,7 +1089,16 @@ public function refundTicket($summit_id, $ticket_id)
10221089
path: '/api/v1/summits/{summit_id}/tickets/{ticket_id}/badge',
10231090
summary: 'Get ticket badge',
10241091
description: 'Returns the badge associated with a ticket',
1025-
security: [['bearer' => []]],
1092+
security: [['summit_tickets_oauth2' => [
1093+
SummitScopes::ReadAllSummitData,
1094+
SummitScopes::ReadRegistrationOrders,
1095+
]]],
1096+
x: ['required-groups' => [
1097+
IGroup::SuperAdmins,
1098+
IGroup::Administrators,
1099+
IGroup::SummitAdministrators,
1100+
IGroup::SummitRegistrationAdmins,
1101+
]],
10261102
tags: ['tickets'],
10271103
parameters: [
10281104
new OA\Parameter(name: 'summit_id', in: 'path', required: true, description: 'Summit ID or slug', schema: new OA\Schema(type: 'string')),
@@ -1065,7 +1141,16 @@ public function getAttendeeBadge($summit_id, $ticket_id)
10651141
path: '/api/v1/summits/{summit_id}/tickets/{ticket_id}/badge',
10661142
summary: 'Create ticket badge',
10671143
description: 'Creates a badge for a specific ticket',
1068-
security: [['bearer' => []]],
1144+
security: [['summit_tickets_oauth2' => [
1145+
SummitScopes::WriteSummitData,
1146+
SummitScopes::UpdateRegistrationOrdersBadges,
1147+
]]],
1148+
x: ['required-groups' => [
1149+
IGroup::SuperAdmins,
1150+
IGroup::Administrators,
1151+
IGroup::SummitAdministrators,
1152+
IGroup::SummitRegistrationAdmins,
1153+
]],
10691154
tags: ['tickets'],
10701155
parameters: [
10711156
new OA\Parameter(name: 'summit_id', in: 'path', required: true, description: 'Summit ID or slug', schema: new OA\Schema(type: 'string')),
@@ -1109,7 +1194,16 @@ public function createAttendeeBadge($summit_id, $ticket_id)
11091194
path: '/api/v1/summits/{summit_id}/tickets/{ticket_id}/badge',
11101195
summary: 'Delete ticket badge',
11111196
description: 'Deletes the badge associated with a ticket',
1112-
security: [['bearer' => []]],
1197+
security: [['summit_tickets_oauth2' => [
1198+
SummitScopes::WriteSummitData,
1199+
SummitScopes::UpdateRegistrationOrders,
1200+
]]],
1201+
x: ['required-groups' => [
1202+
IGroup::SuperAdmins,
1203+
IGroup::Administrators,
1204+
IGroup::SummitAdministrators,
1205+
IGroup::SummitRegistrationAdmins,
1206+
]],
11131207
tags: ['tickets'],
11141208
parameters: [
11151209
new OA\Parameter(name: 'summit_id', in: 'path', required: true, description: 'Summit ID or slug', schema: new OA\Schema(type: 'string')),
@@ -1135,7 +1229,16 @@ public function deleteAttendeeBadge($summit_id, $ticket_id)
11351229
path: '/api/v1/summits/{summit_id}/tickets/{ticket_id}/badge/type/{type_id}',
11361230
summary: 'Update badge type',
11371231
description: 'Updates the badge type for a ticket',
1138-
security: [['bearer' => []]],
1232+
security: [['summit_tickets_oauth2' => [
1233+
SummitScopes::WriteSummitData,
1234+
SummitScopes::UpdateRegistrationOrdersBadges,
1235+
]]],
1236+
x: ['required-groups' => [
1237+
IGroup::SuperAdmins,
1238+
IGroup::Administrators,
1239+
IGroup::SummitAdministrators,
1240+
IGroup::SummitRegistrationAdmins,
1241+
]],
11391242
tags: ['tickets'],
11401243
parameters: [
11411244
new OA\Parameter(name: 'summit_id', in: 'path', required: true, description: 'Summit ID or slug', schema: new OA\Schema(type: 'string')),
@@ -1171,7 +1274,16 @@ public function updateAttendeeBadgeType($summit_id, $ticket_id, $type_id)
11711274
path: '/api/v1/summits/{summit_id}/tickets/{ticket_id}/badge/features/{feature_id}',
11721275
summary: 'Add badge feature',
11731276
description: 'Adds a feature to a ticket badge',
1174-
security: [['bearer' => []]],
1277+
security: [['summit_tickets_oauth2' => [
1278+
SummitScopes::WriteSummitData,
1279+
SummitScopes::UpdateRegistrationOrdersBadges,
1280+
]]],
1281+
x: ['required-groups' => [
1282+
IGroup::SuperAdmins,
1283+
IGroup::Administrators,
1284+
IGroup::SummitAdministrators,
1285+
IGroup::SummitRegistrationAdmins,
1286+
]],
11751287
tags: ['tickets'],
11761288
parameters: [
11771289
new OA\Parameter(name: 'summit_id', in: 'path', required: true, description: 'Summit ID or slug', schema: new OA\Schema(type: 'string')),
@@ -1207,7 +1319,16 @@ public function addAttendeeBadgeFeature($summit_id, $ticket_id, $feature_id)
12071319
path: '/api/v1/summits/{summit_id}/tickets/{ticket_id}/badge/features/{feature_id}',
12081320
summary: 'Remove badge feature',
12091321
description: 'Removes a feature from a ticket badge',
1210-
security: [['bearer' => []]],
1322+
security: [['summit_tickets_oauth2' => [
1323+
SummitScopes::WriteSummitData,
1324+
SummitScopes::UpdateRegistrationOrdersBadges,
1325+
]]],
1326+
x: ['required-groups' => [
1327+
IGroup::SuperAdmins,
1328+
IGroup::Administrators,
1329+
IGroup::SummitAdministrators,
1330+
IGroup::SummitRegistrationAdmins,
1331+
]],
12111332
tags: ['tickets'],
12121333
parameters: [
12131334
new OA\Parameter(name: 'summit_id', in: 'path', required: true, description: 'Summit ID or slug', schema: new OA\Schema(type: 'string')),
@@ -1243,7 +1364,17 @@ public function removeAttendeeBadgeFeature($summit_id, $ticket_id, $feature_id)
12431364
path: '/api/v1/summits/{summit_id}/tickets/{ticket_id}/badge/print',
12441365
summary: 'Print badge with default view',
12451366
description: 'Prints a badge using the summit\'s default view type',
1246-
security: [['bearer' => []]],
1367+
security: [['summit_tickets_oauth2' => [
1368+
SummitScopes::WriteSummitData,
1369+
SummitScopes::PrintRegistrationOrdersBadges,
1370+
]]],
1371+
x: ['required-groups' => [
1372+
IGroup::SuperAdmins,
1373+
IGroup::Administrators,
1374+
IGroup::SummitAdministrators,
1375+
IGroup::SummitRegistrationAdmins,
1376+
IGroup::BadgePrinters,
1377+
]],
12471378
tags: ['tickets'],
12481379
parameters: [
12491380
new OA\Parameter(name: 'summit_id', in: 'path', required: true, description: 'Summit ID or slug', schema: new OA\Schema(type: 'string')),
@@ -1280,7 +1411,17 @@ public function printAttendeeBadgeDefault($summit_id, $ticket_id)
12801411
path: '/api/v1/summits/{summit_id}/tickets/{ticket_id}/badge/{view_type}/print',
12811412
summary: 'Print badge with specific view type',
12821413
description: 'Prints a badge using a specific view type',
1283-
security: [['bearer' => []]],
1414+
security: [['summit_tickets_oauth2' => [
1415+
SummitScopes::WriteSummitData,
1416+
SummitScopes::PrintRegistrationOrdersBadges,
1417+
]]],
1418+
x: ['required-groups' => [
1419+
IGroup::SuperAdmins,
1420+
IGroup::Administrators,
1421+
IGroup::SummitAdministrators,
1422+
IGroup::SummitRegistrationAdmins,
1423+
IGroup::BadgePrinters,
1424+
]],
12841425
tags: ['tickets'],
12851426
parameters: [
12861427
new OA\Parameter(name: 'summit_id', in: 'path', required: true, description: 'Summit ID or slug', schema: new OA\Schema(type: 'string')),
@@ -1335,7 +1476,17 @@ public function printAttendeeBadge($summit_id, $ticket_id, $view_type)
13351476
path: '/api/v1/summits/{summit_id}/tickets/{ticket_id}/badge/can-print',
13361477
summary: 'Check if badge can be printed (default view)',
13371478
description: 'Checks if a badge can be printed using the default view type',
1338-
security: [['bearer' => []]],
1479+
security: [['summit_tickets_oauth2' => [
1480+
SummitScopes::ReadAllSummitData,
1481+
SummitScopes::PrintRegistrationOrdersBadges,
1482+
]]],
1483+
x: ['required-groups' => [
1484+
IGroup::SuperAdmins,
1485+
IGroup::Administrators,
1486+
IGroup::SummitAdministrators,
1487+
IGroup::SummitRegistrationAdmins,
1488+
IGroup::BadgePrinters,
1489+
]],
13391490
tags: ['tickets'],
13401491
parameters: [
13411492
new OA\Parameter(name: 'summit_id', in: 'path', required: true, description: 'Summit ID or slug', schema: new OA\Schema(type: 'string')),
@@ -1368,7 +1519,17 @@ public function canPrintAttendeeBadgeDefault($summit_id, $ticket_id)
13681519
path: '/api/v1/summits/{summit_id}/tickets/{ticket_id}/badge/{view_type}/can-print',
13691520
summary: 'Check if badge can be printed (specific view)',
13701521
description: 'Checks if a badge can be printed using a specific view type',
1371-
security: [['bearer' => []]],
1522+
security: [['summit_tickets_oauth2' => [
1523+
SummitScopes::ReadAllSummitData,
1524+
SummitScopes::PrintRegistrationOrdersBadges,
1525+
]]],
1526+
x: ['required-groups' => [
1527+
IGroup::SuperAdmins,
1528+
IGroup::Administrators,
1529+
IGroup::SummitAdministrators,
1530+
IGroup::SummitRegistrationAdmins,
1531+
IGroup::BadgePrinters,
1532+
]],
13721533
tags: ['tickets'],
13731534
parameters: [
13741535
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)