Skip to content

Commit 7e87cef

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 5e89c7b commit 7e87cef

3 files changed

Lines changed: 63 additions & 16 deletions

File tree

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

Lines changed: 32 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,10 @@
1212
* limitations under the License.
1313
**/
1414

15+
use App\Models\Foundation\Main\IGroup;
1516
use App\ModelSerializers\SerializerUtils;
1617
use App\Rules\Boolean;
18+
use App\Security\SummitScopes;
1719
use App\Services\Model\ISummitMetricService;
1820
use Illuminate\Http\Response;
1921
use models\main\IMemberRepository;
@@ -72,9 +74,10 @@ public function __construct
7274
*/
7375
#[OA\Put(
7476
path: "/api/v1/summits/{id}/metrics/enter",
77+
operationId: 'enter',
7578
summary: "Record a metric entry (enter)",
76-
security: [["Bearer" => []]],
77-
tags: ["summit-metrics"],
79+
security: [["summit_metrics_oauth2" => [SummitScopes::EnterEvent, SummitScopes::WriteMetrics]]],
80+
tags: ["Summit Metrics"],
7881
parameters: [
7982
new OA\Parameter(
8083
name: "id",
@@ -140,9 +143,10 @@ public function enter($summit_id)
140143
*/
141144
#[OA\Post(
142145
path: "/api/v1/summits/{id}/metrics/leave",
146+
operationId: 'leave',
143147
summary: "Record a metric exit (leave)",
144-
security: [["Bearer" => []]],
145-
tags: ["summit-metrics"],
148+
security: [["summit_metrics_oauth2" => [SummitScopes::LeaveEvent, SummitScopes::WriteMetrics]]],
149+
tags: ["Summit Metrics"],
146150
parameters: [
147151
new OA\Parameter(
148152
name: "id",
@@ -208,9 +212,10 @@ public function leave($summit_id)
208212
*/
209213
#[OA\Put(
210214
path: "/api/v1/summits/{id}/members/{member_id}/schedule/{event_id}/metrics/enter",
215+
operationId: 'enterToEvent',
211216
summary: "Record a metric entry to a specific event",
212-
security: [["Bearer" => []]],
213-
tags: ["summit-metrics"],
217+
security: [["summit_metrics_oauth2" => [SummitScopes::EnterEvent]]],
218+
tags: ["Summit Metrics"],
214219
parameters: [
215220
new OA\Parameter(
216221
name: "id",
@@ -278,9 +283,10 @@ public function enterToEvent($summit_id, $member_id, $event_id)
278283
*/
279284
#[OA\Post(
280285
path: "/api/v1/summits/{id}/members/{member_id}/schedule/{event_id}/metrics/leave",
286+
operationId: 'leaveFromEvent',
281287
summary: "Record a metric exit from a specific event",
282-
security: [["Bearer" => []]],
283-
tags: ["summit-metrics"],
288+
security: [["summit_metrics_oauth2" => [SummitScopes::LeaveEvent]]],
289+
tags: ["Summit Metrics"],
284290
parameters: [
285291
new OA\Parameter(
286292
name: "id",
@@ -342,9 +348,13 @@ public function leaveFromEvent($summit_id, $member_id, $event_id)
342348

343349
#[OA\Put(
344350
path: "/api/v1/summits/{id}/metrics/onsite/enter",
351+
operationId: 'onSiteEnter',
345352
summary: "Record an on-site metric entry (for attendees entering venue/room)",
346-
security: [["Bearer" => []]],
347-
tags: ["summit-metrics"],
353+
security: [["summit_metrics_oauth2" => [SummitScopes::WriteMetrics]]],
354+
tags: ["Summit Metrics"],
355+
x: [
356+
"authz_groups" => [IGroup::SummitAccessControl]
357+
],
348358
parameters: [
349359
new OA\Parameter(
350360
name: "id",
@@ -406,9 +416,13 @@ public function onSiteEnter($summit_id)
406416

407417
#[OA\Get(
408418
path: "/api/v1/summits/{id}/metrics/onsite/enter",
419+
operationId: 'checkOnSiteEnter',
409420
summary: "Check if on-site entry is allowed for an attendee (validation only, does not record entry)",
410-
security: [["Bearer" => []]],
411-
tags: ["summit-metrics"],
421+
security: [["summit_metrics_oauth2" => [SummitScopes::ReadAllSummitData, SummitScopes::ReadSummitData, SummitScopes::ReadMetrics]]],
422+
tags: ["Summit Metrics"],
423+
x: [
424+
"authz_groups" => [IGroup::SummitAccessControl]
425+
],
412426
parameters: [
413427
new OA\Parameter(
414428
name: "id",
@@ -481,9 +495,13 @@ public function checkOnSiteEnter($summit_id)
481495

482496
#[OA\Post(
483497
path: "/api/v1/summits/{id}/metrics/onsite/leave",
498+
operationId: 'onSiteLeave',
484499
summary: "Record an on-site metric exit (for attendees leaving venue/room)",
485-
security: [["Bearer" => []]],
486-
tags: ["summit-metrics"],
500+
security: [["summit_metrics_oauth2" => [SummitScopes::WriteMetrics]]],
501+
tags: ["Summit Metrics"],
502+
x: [
503+
"authz_groups" => [IGroup::SummitAccessControl]
504+
],
487505
parameters: [
488506
new OA\Parameter(
489507
name: "id",
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\Security;
4+
5+
use App\Security\SummitScopes;
6+
use OpenApi\Attributes as OA;
7+
8+
#[
9+
OA\SecurityScheme(
10+
type: 'oauth2',
11+
securityScheme: 'summit_metrics_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::EnterEvent => 'Enter Event',
19+
SummitScopes::LeaveEvent => 'Leave Event',
20+
SummitScopes::WriteMetrics => 'Write Metrics',
21+
SummitScopes::ReadMetrics => 'Read Metrics',
22+
SummitScopes::ReadAllSummitData => 'Read All Summit Data',
23+
SummitScopes::ReadSummitData => 'Read Summit Data',
24+
],
25+
),
26+
],
27+
)
28+
]
29+
class SummitMetricsAuthSchema {}

app/Swagger/SummitMetricsSchemas.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
type: "object",
1212
properties: [
1313
new OA\Property(property: "id", type: "integer"),
14+
new OA\Property(property: "created", type: "integer"),
15+
new OA\Property(property: "last_edited", type: "integer"),
1416
new OA\Property(property: "member_first_name", type: "string", nullable: true),
1517
new OA\Property(property: "member_last_name", type: "string", nullable: true),
1618
new OA\Property(property: "member_pic", type: "string", nullable: true),
@@ -20,8 +22,6 @@
2022
new OA\Property(property: "browser", type: "string", nullable: true),
2123
new OA\Property(property: "outgress_date", type: "integer", nullable: true),
2224
new OA\Property(property: "ingress_date", type: "integer"),
23-
new OA\Property(property: "created", type: "integer"),
24-
new OA\Property(property: "last_edited", type: "integer")
2525
]
2626
)]
2727
class SummitMetric

0 commit comments

Comments
 (0)