Skip to content

Commit 21e91d7

Browse files
committed
chore: Add the correct security and x attributes and create security schema, fix path routes and change schema to be defined as requested
1 parent 460b0d9 commit 21e91d7

File tree

3 files changed

+188
-34
lines changed

3 files changed

+188
-34
lines changed

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

Lines changed: 152 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,10 @@
1919
use App\Http\Utils\EpochCellFormatter;
2020
use App\Jobs\Emails\Registration\Invitations\InviteSummitRegistrationEmail;
2121
use App\Jobs\Emails\Registration\Invitations\ReInviteSummitRegistrationEmail;
22+
use App\Models\Foundation\Main\IGroup;
2223
use App\Models\Foundation\Summit\Repositories\ISummitRegistrationInvitationRepository;
2324
use App\ModelSerializers\SerializerUtils;
25+
use App\Security\SummitScopes;
2426
use App\Services\Model\ISummitRegistrationInvitationService;
2527
use Illuminate\Http\Request as LaravelRequest;
2628
use Illuminate\Http\Response;
@@ -85,9 +87,21 @@ public function __construct
8587
*/
8688
#[OA\Post(
8789
path: "/api/v1/summits/{id}/registration-invitations/csv",
90+
operationId: 'ingestInvitations',
8891
summary: "Import registration invitations from CSV file",
89-
security: [["Bearer" => []]],
90-
tags: ["summit-registration-invitations"],
92+
security: [['summit_registration_invitation_oauth2' => [
93+
SummitScopes::WriteSummitData,
94+
SummitScopes::WriteRegistrationInvitations,
95+
]]],
96+
x: [
97+
'authz_groups' => [
98+
IGroup::SuperAdmins,
99+
IGroup::Administrators,
100+
IGroup::SummitAdministrators,
101+
IGroup::SummitRegistrationAdmins,
102+
]
103+
],
104+
tags: ["Summit Registration Invitations"],
91105
parameters: [
92106
new OA\Parameter(
93107
name: 'id',
@@ -151,10 +165,21 @@ public function ingestInvitations(LaravelRequest $request, $summit_id)
151165
* @return \Illuminate\Http\JsonResponse|mixed
152166
*/
153167
#[OA\Get(
154-
path: "/api/v1/summits/registration-invitations/tokens/{token}",
168+
path: "/api/v1/summits/registration-invitations/{token}",
169+
operationId: 'getInvitationByToken',
155170
summary: "Get a registration invitation by token",
156-
security: [["Bearer" => []]],
157-
tags: ["summit-registration-invitations"],
171+
security: [['summit_registration_invitation_oauth2' => [
172+
SummitScopes::ReadMyRegistrationInvitations,
173+
]]],
174+
x: [
175+
'authz_groups' => [
176+
IGroup::SuperAdmins,
177+
IGroup::Administrators,
178+
IGroup::SummitAdministrators,
179+
IGroup::SummitRegistrationAdmins,
180+
]
181+
],
182+
tags: ["Summit Registration Invitations"],
158183
parameters: [
159184
new OA\Parameter(
160185
name: "token",
@@ -222,9 +247,21 @@ protected function getChildFromSummit(Summit $summit, $child_id): ?IEntity
222247
*/
223248
#[OA\Get(
224249
path: "/api/v1/summits/{id}/registration-invitations/{invitation_id}",
250+
operationId: 'getRegistrationInvitation',
225251
summary: "Get a registration invitation by id",
226-
security: [["Bearer" => []]],
227-
tags: ["summit-registration-invitations"],
252+
security: [['summit_registration_invitation_oauth2' => [
253+
SummitScopes::ReadAllSummitData,
254+
SummitScopes::ReadRegistrationInvitations,
255+
]]],
256+
x: [
257+
'authz_groups' => [
258+
IGroup::SuperAdmins,
259+
IGroup::Administrators,
260+
IGroup::SummitAdministrators,
261+
IGroup::SummitRegistrationAdmins,
262+
]
263+
],
264+
tags: ["Summit Registration Invitations"],
228265
parameters: [
229266
new OA\Parameter(
230267
name: 'id',
@@ -264,9 +301,21 @@ public function get($summit_id, $invitation_id)
264301
*/
265302
#[OA\Get(
266303
path: "/api/v1/summits/{id}/registration-invitations",
304+
operationId: 'getAllBySummit',
267305
summary: "Get all registration invitations for a summit",
268-
security: [["Bearer" => []]],
269-
tags: ["summit-registration-invitations"],
306+
security: [['summit_registration_invitation_oauth2' => [
307+
SummitScopes::ReadAllSummitData,
308+
SummitScopes::ReadRegistrationInvitations,
309+
]]],
310+
x: [
311+
'authz_groups' => [
312+
IGroup::SuperAdmins,
313+
IGroup::Administrators,
314+
IGroup::SummitAdministrators,
315+
IGroup::SummitRegistrationAdmins,
316+
]
317+
],
318+
tags: ["Summit Registration Invitations"],
270319
parameters: [
271320
new OA\Parameter(
272321
name: 'id',
@@ -383,9 +432,21 @@ function () {
383432
*/
384433
#[OA\Get(
385434
path: "/api/v1/summits/{id}/registration-invitations/csv",
435+
operationId: 'getAllBySummitCSV',
386436
summary: "Export registration invitations to CSV",
387-
security: [["Bearer" => []]],
388-
tags: ["summit-registration-invitations"],
437+
security: [['summit_registration_invitation_oauth2' => [
438+
SummitScopes::ReadAllSummitData,
439+
SummitScopes::ReadRegistrationInvitations,
440+
]]],
441+
x: [
442+
'authz_groups' => [
443+
IGroup::SuperAdmins,
444+
IGroup::Administrators,
445+
IGroup::SummitAdministrators,
446+
IGroup::SummitRegistrationAdmins,
447+
]
448+
],
449+
tags: ["Summit Registration Invitations"],
389450
parameters: [
390451
new OA\Parameter(
391452
name: 'id',
@@ -524,7 +585,7 @@ function () {
524585
$columns = $allowed_columns;
525586
return $columns;
526587
},
527-
'summit-registration-invitations-'
588+
'Summit Registration Invitations-'
528589
);
529590
}
530591

@@ -548,9 +609,21 @@ protected function deleteChild(Summit $summit, $child_id): void
548609
*/
549610
#[OA\Delete(
550611
path: "/api/v1/summits/{id}/registration-invitations/{invitation_id}",
612+
operationId: 'deleteRegistrationInvitation',
551613
summary: "Delete a registration invitation",
552-
security: [["Bearer" => []]],
553-
tags: ["summit-registration-invitations"],
614+
security: [['summit_registration_invitation_oauth2' => [
615+
SummitScopes::WriteSummitData,
616+
SummitScopes::WriteRegistrationInvitations,
617+
]]],
618+
x: [
619+
'authz_groups' => [
620+
IGroup::SuperAdmins,
621+
IGroup::Administrators,
622+
IGroup::SummitAdministrators,
623+
IGroup::SummitRegistrationAdmins,
624+
]
625+
],
626+
tags: ["Summit Registration Invitations"],
554627
parameters: [
555628
new OA\Parameter(
556629
name: 'id',
@@ -606,9 +679,21 @@ function getAddValidationRules(array $payload): array
606679
*/
607680
#[OA\Post(
608681
path: "/api/v1/summits/{id}/registration-invitations",
682+
operationId: 'addRegistrationInvitation',
609683
summary: "Create a registration invitation",
610-
security: [["Bearer" => []]],
611-
tags: ["summit-registration-invitations"],
684+
security: [['summit_registration_invitation_oauth2' => [
685+
SummitScopes::WriteSummitData,
686+
SummitScopes::WriteRegistrationInvitations,
687+
]]],
688+
x: [
689+
'authz_groups' => [
690+
IGroup::SuperAdmins,
691+
IGroup::Administrators,
692+
IGroup::SummitAdministrators,
693+
IGroup::SummitRegistrationAdmins,
694+
]
695+
],
696+
tags: ["Summit Registration Invitations"],
612697
parameters: [
613698
new OA\Parameter(
614699
name: 'id',
@@ -671,9 +756,21 @@ protected function updateChild(Summit $summit, int $child_id, array $payload): I
671756
*/
672757
#[OA\Put(
673758
path: "/api/v1/summits/{id}/registration-invitations/{invitation_id}",
759+
operationId: 'updateRegistrationInvitation',
674760
summary: "Update a registration invitation",
675-
security: [["Bearer" => []]],
676-
tags: ["summit-registration-invitations"],
761+
security: [['summit_registration_invitation_oauth2' => [
762+
SummitScopes::WriteSummitData,
763+
SummitScopes::WriteRegistrationInvitations,
764+
]]],
765+
x: [
766+
'authz_groups' => [
767+
IGroup::SuperAdmins,
768+
IGroup::Administrators,
769+
IGroup::SummitAdministrators,
770+
IGroup::SummitRegistrationAdmins,
771+
]
772+
],
773+
tags: ["Summit Registration Invitations"],
677774
parameters: [
678775
new OA\Parameter(
679776
name: 'id',
@@ -721,9 +818,21 @@ public function update($summit_id, $invitation_id)
721818
*/
722819
#[OA\Delete(
723820
path: "/api/v1/summits/{id}/registration-invitations/all",
821+
operationId: 'deleteAllRegistrationInvitations',
724822
summary: "Delete all registration invitations for a summit",
725-
security: [["Bearer" => []]],
726-
tags: ["summit-registration-invitations"],
823+
security: [['summit_registration_invitation_oauth2' => [
824+
SummitScopes::WriteSummitData,
825+
SummitScopes::WriteRegistrationInvitations,
826+
]]],
827+
x: [
828+
'authz_groups' => [
829+
IGroup::SuperAdmins,
830+
IGroup::Administrators,
831+
IGroup::SummitAdministrators,
832+
IGroup::SummitRegistrationAdmins,
833+
]
834+
],
835+
tags: ["Summit Registration Invitations"],
727836
parameters: [
728837
new OA\Parameter(
729838
name: 'id',
@@ -759,9 +868,21 @@ public function deleteAll($summit_id)
759868
*/
760869
#[OA\Put(
761870
path: "/api/v1/summits/{id}/registration-invitations/all/send",
871+
operationId: 'sendRegistrationInvitations',
762872
summary: "Send registration invitation emails",
763-
security: [["Bearer" => []]],
764-
tags: ["summit-registration-invitations"],
873+
security: [['summit_registration_invitation_oauth2' => [
874+
SummitScopes::WriteSummitData,
875+
SummitScopes::WriteRegistrationInvitations,
876+
]]],
877+
x: [
878+
'authz_groups' => [
879+
IGroup::SuperAdmins,
880+
IGroup::Administrators,
881+
IGroup::SummitAdministrators,
882+
IGroup::SummitRegistrationAdmins,
883+
]
884+
],
885+
tags: ["Summit Registration Invitations"],
765886
parameters: [
766887
new OA\Parameter(
767888
name: 'id',
@@ -877,9 +998,12 @@ public function send($summit_id)
877998
*/
878999
#[OA\Get(
8791000
path: "/api/v1/summits/{id}/registration-invitations/me",
1001+
operationId: 'getMyRegistrationInvitation',
8801002
summary: "Get my registration invitation for the current user",
881-
security: [["Bearer" => []]],
882-
tags: ["summit-registration-invitations"],
1003+
security: [['summit_registration_invitation_oauth2' => [
1004+
SummitScopes::ReadMyRegistrationInvitations,
1005+
]]],
1006+
tags: ["Summit Registration Invitations"],
8831007
parameters: [
8841008
new OA\Parameter(
8851009
name: 'id',
@@ -933,8 +1057,9 @@ function getMyInvitation($summit_id)
9331057
*/
9341058
#[OA\Get(
9351059
path: "/api/public/v1/summits/{id}/registration-invitations/{token}",
1060+
operationId: 'getInvitationBySummitAndToken',
9361061
summary: "Get a registration invitation by summit and token (public endpoint)",
937-
tags: ["summit-registration-invitations"],
1062+
tags: ["Summit Registration Invitations (Public)"],
9381063
parameters: [
9391064
new OA\Parameter(
9401065
name: 'id',
@@ -985,8 +1110,9 @@ function getInvitationBySummitAndToken($summit_id, $token)
9851110
*/
9861111
#[OA\Delete(
9871112
path: "/api/public/v1/summits/{id}/registration-invitations/{token}/reject",
1113+
operationId: 'rejectInvitationBySummitAndToken',
9881114
summary: "Reject a registration invitation by summit and token (public endpoint)",
989-
tags: ["summit-registration-invitations"],
1115+
tags: ["Summit Registration Invitations (Public)"],
9901116
parameters: [
9911117
new OA\Parameter(
9921118
name: 'id',
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
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: 'summit_registration_invitation_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::ReadAllSummitData => 'Read All Summit Data',
19+
SummitScopes::WriteSummitData => 'Write Summit Data',
20+
SummitScopes::ReadRegistrationInvitations => 'Read Registration Invitations',
21+
SummitScopes::WriteRegistrationInvitations => 'Write Registration Invitations',
22+
SummitScopes::ReadMyRegistrationInvitations => 'Read My Registration Invitations',
23+
],
24+
),
25+
],
26+
)
27+
]
28+
class SummitRegistrationInvitationAuthSchema {}

app/Swagger/SummitRegistrationSchemas.php

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@
2222
new OA\Property(property: "action_date", type: "integer", nullable: true),
2323
new OA\Property(property: "acceptance_criteria", type: "string", enum: ["ANY_TICKET_TYPE", "ALL_TICKET_TYPES"]),
2424
new OA\Property(property: "status", type: "string", enum: ["Pending", "Accepted", "Rejected"]),
25-
new OA\Property(property: "allowed_ticket_types", type: "array", items: new OA\Items(type: ["integer", "SummitTicketType"]), nullable: true),
26-
new OA\Property(property: "tags", type: "array", items: new OA\Items(type: ["integer", "Tag"]), nullable: true)
25+
new OA\Property(property: "allowed_ticket_types", type: "array", items: new OA\Items(type: "integer"), description: "Array of SummitTicketType IDs, full object when expanded", nullable: true),
26+
new OA\Property(property: "tags", type: "array", items: new OA\Items(type: ["integer", "string"]), description: "Array of Tag IDs or names when expanded", nullable: true),
2727
]
2828
)]
29-
class SummitRegistrationInvitation
29+
class SummitRegistrationInvitationSchema
3030
{
3131
}
3232

@@ -45,7 +45,7 @@ class SummitRegistrationInvitation
4545
)
4646
]
4747
)]
48-
class PaginatedSummitRegistrationInvitationsResponse
48+
class PaginatedSummitRegistrationInvitationsResponseSchema
4949
{
5050
}
5151

@@ -63,7 +63,7 @@ class PaginatedSummitRegistrationInvitationsResponse
6363
new OA\Property(property: "status", type: "string", enum: ["Pending", "Accepted", "Rejected"])
6464
]
6565
)]
66-
class SummitRegistrationInvitationCreateRequest
66+
class SummitRegistrationInvitationCreateRequestSchema
6767
{
6868
}
6969

@@ -81,7 +81,7 @@ class SummitRegistrationInvitationCreateRequest
8181
new OA\Property(property: "status", type: "string", enum: ["Pending", "Accepted", "Rejected"])
8282
]
8383
)]
84-
class SummitRegistrationInvitationUpdateRequest
84+
class SummitRegistrationInvitationUpdateRequestSchema
8585
{
8686
}
8787

@@ -94,7 +94,7 @@ class SummitRegistrationInvitationUpdateRequest
9494
new OA\Property(property: "acceptance_criteria", type: "string", enum: ["ANY_TICKET_TYPE", "ALL_TICKET_TYPES"])
9595
]
9696
)]
97-
class SummitRegistrationInvitationCSVImportRequest
97+
class SummitRegistrationInvitationCSVImportRequestSchema
9898
{
9999
}
100100

@@ -110,7 +110,7 @@ class SummitRegistrationInvitationCSVImportRequest
110110
new OA\Property(property: "outcome_email_recipient", type: "string", format: "email")
111111
]
112112
)]
113-
class SendRegistrationInvitationsRequest
113+
class SendRegistrationInvitationsRequestSchema
114114
{
115115
}
116116

0 commit comments

Comments
 (0)