Skip to content

Commit 9393231

Browse files
refactor: this commit introduces explicit binding attributes to controller method parameters, making it clear where each value is obtained
1 parent 6617d27 commit 9393231

8 files changed

Lines changed: 51 additions & 70 deletions

File tree

Source/HttpsRichardy.Federation.WebApi/Controllers/ConnectController.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,13 @@ public sealed class ConnectController(IDispatcher dispatcher) : ControllerBase
77
{
88
[HttpPost("token")]
99
[Stability(Stability.Stable)]
10-
public async Task<IActionResult> AuthenticateClientAsync(
11-
[FromSnakeCaseForm] ClientAuthenticationCredentials request, CancellationToken cancellation)
10+
public async Task<IActionResult> AuthenticateClientAsync([FromSnakeCaseForm] ClientAuthenticationCredentials request, CancellationToken cancellation)
1211
{
1312
var result = await dispatcher.DispatchAsync(request, cancellation);
1413

1514
return result switch
1615
{
17-
{ IsSuccess: true } =>
16+
{ IsSuccess: true } when result.Data is not null =>
1817
StatusCode(StatusCodes.Status200OK, result.Data),
1918

2019
{ IsFailure: true } when result.Error == AuthenticationErrors.ClientNotFound =>

Source/HttpsRichardy.Federation.WebApi/Controllers/GroupsController.cs

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,7 @@ public sealed class GroupsController(IDispatcher dispatcher) : ControllerBase
99
[HttpGet]
1010
[Authorize(Roles = Permissions.ViewGroups)]
1111
[Stability(Stability.Stable)]
12-
public async Task<IActionResult> GetGroupsAsync(
13-
[FromQuery] GroupsFetchParameters request, CancellationToken cancellation)
12+
public async Task<IActionResult> GetGroupsAsync([FromQuery] GroupsFetchParameters request, CancellationToken cancellation)
1413
{
1514
var result = await dispatcher.DispatchAsync(request, cancellation);
1615

@@ -25,13 +24,13 @@ public async Task<IActionResult> GetGroupsAsync(
2524
[HttpPost]
2625
[Authorize(Roles = Permissions.CreateGroup)]
2726
[Stability(Stability.Stable)]
28-
public async Task<IActionResult> CreateGroupAsync(GroupCreationScheme request, CancellationToken cancellation)
27+
public async Task<IActionResult> CreateGroupAsync([FromBody] GroupCreationScheme request, CancellationToken cancellation)
2928
{
3029
var result = await dispatcher.DispatchAsync(request, cancellation);
3130

3231
return result switch
3332
{
34-
{ IsSuccess: true } =>
33+
{ IsSuccess: true } when result.Data is not null =>
3534
StatusCode(StatusCodes.Status201Created, result.Data),
3635

3736
{ IsFailure: true } when result.Error == GroupErrors.GroupAlreadyExists =>
@@ -42,13 +41,13 @@ public async Task<IActionResult> CreateGroupAsync(GroupCreationScheme request, C
4241
[HttpPut("{id}")]
4342
[Authorize(Roles = Permissions.EditGroup)]
4443
[Stability(Stability.Stable)]
45-
public async Task<IActionResult> UpdateGroupAsync(string id, GroupUpdateScheme request, CancellationToken cancellation)
44+
public async Task<IActionResult> UpdateGroupAsync([FromRoute] string id, [FromBody] GroupUpdateScheme request, CancellationToken cancellation)
4645
{
4746
var result = await dispatcher.DispatchAsync(request with { GroupId = id }, cancellation);
4847

4948
return result switch
5049
{
51-
{ IsSuccess: true } =>
50+
{ IsSuccess: true } when result.Data is not null =>
5251
StatusCode(StatusCodes.Status200OK, result.Data),
5352

5453
{ IsFailure: true } when result.Error == GroupErrors.GroupDoesNotExist =>
@@ -59,9 +58,9 @@ public async Task<IActionResult> UpdateGroupAsync(string id, GroupUpdateScheme r
5958
[HttpDelete("{id}")]
6059
[Authorize(Roles = Permissions.DeleteGroup)]
6160
[Stability(Stability.Stable)]
62-
public async Task<IActionResult> DeleteGroupAsync(string id, CancellationToken cancellation)
61+
public async Task<IActionResult> DeleteGroupAsync([FromRoute] string id, [FromQuery] GroupDeletionScheme request, CancellationToken cancellation)
6362
{
64-
var result = await dispatcher.DispatchAsync(new GroupDeletionScheme { GroupId = id }, cancellation);
63+
var result = await dispatcher.DispatchAsync(request with { GroupId = id }, cancellation);
6564

6665
return result switch
6766
{
@@ -76,16 +75,14 @@ public async Task<IActionResult> DeleteGroupAsync(string id, CancellationToken c
7675
[HttpGet("{id}/permissions")]
7776
[Authorize(Roles = Permissions.ViewPermissions)]
7877
[Stability(Stability.Stable)]
79-
public async Task<IActionResult> GetGroupsPermissionsAsync(
80-
[FromRoute] string id,
81-
[FromQuery] ListGroupAssignedPermissionsParameters request, CancellationToken cancellation
82-
)
78+
public async Task<IActionResult> GetGroupsPermissionsAsync([FromRoute] string id, [FromQuery] ListGroupAssignedPermissionsParameters request, CancellationToken cancellation)
8379
{
8480
var result = await dispatcher.DispatchAsync(request with { GroupId = id }, cancellation);
8581

8682
return result switch
8783
{
88-
{ IsSuccess: true } => StatusCode(StatusCodes.Status200OK, result.Data),
84+
{ IsSuccess: true } when result.Data is not null =>
85+
StatusCode(StatusCodes.Status200OK, result.Data),
8986

9087
{ IsFailure: true } when result.Error == GroupErrors.GroupDoesNotExist =>
9188
StatusCode(StatusCodes.Status404NotFound, result.Error),
@@ -95,14 +92,13 @@ public async Task<IActionResult> GetGroupsPermissionsAsync(
9592
[HttpPost("{id}/permissions")]
9693
[Authorize(Roles = Permissions.AssignPermissions)]
9794
[Stability(Stability.Stable)]
98-
public async Task<IActionResult> AssignPermissionAsync(
99-
string id, AssignGroupPermissionScheme request, CancellationToken cancellation)
95+
public async Task<IActionResult> AssignPermissionAsync([FromRoute] string id, [FromBody] AssignGroupPermissionScheme request, CancellationToken cancellation)
10096
{
10197
var result = await dispatcher.DispatchAsync(request with { GroupId = id }, cancellation);
10298

10399
return result switch
104100
{
105-
{ IsSuccess: true } =>
101+
{ IsSuccess: true } when result.Data is not null =>
106102
StatusCode(StatusCodes.Status200OK, result.Data),
107103

108104
{ IsFailure: true } when result.Error == GroupErrors.GroupDoesNotExist =>
@@ -119,7 +115,7 @@ public async Task<IActionResult> AssignPermissionAsync(
119115
[HttpDelete("{id}/permissions/{permissionId}")]
120116
[Authorize(Roles = Permissions.RevokePermissions)]
121117
[Stability(Stability.Stable)]
122-
public async Task<IActionResult> RevokePermissionAsync(string id, string permissionId, CancellationToken cancellation)
118+
public async Task<IActionResult> RevokePermissionAsync([FromRoute] string id, [FromRoute] string permissionId, CancellationToken cancellation)
123119
{
124120
var request = new RevokeGroupPermissionScheme { GroupId = id, PermissionId = permissionId };
125121
var result = await dispatcher.DispatchAsync(request, cancellation);

Source/HttpsRichardy.Federation.WebApi/Controllers/IdentityController.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,13 @@ public async Task<IActionResult> GetPrincipalAsync([FromQuery] InspectPrincipalP
2626
[HttpPost]
2727
[RealmRequired]
2828
[Stability(Stability.Stable)]
29-
public async Task<IActionResult> EnrollIdentityAsync(IdentityEnrollmentCredentials request, CancellationToken cancellation)
29+
public async Task<IActionResult> EnrollIdentityAsync([FromBody] IdentityEnrollmentCredentials request, CancellationToken cancellation)
3030
{
3131
var result = await dispatcher.DispatchAsync(request, cancellation);
3232

3333
return result switch
3434
{
35-
{ IsSuccess: true } =>
35+
{ IsSuccess: true } when result.Data is not null =>
3636
StatusCode(StatusCodes.Status201Created, result.Data),
3737

3838
{ IsFailure: true } when result.Error == IdentityErrors.UserAlreadyExists =>
@@ -43,13 +43,13 @@ public async Task<IActionResult> EnrollIdentityAsync(IdentityEnrollmentCredentia
4343
[HttpPost("authenticate")]
4444
[RealmRequired]
4545
[Stability(Stability.Deprecated)]
46-
public async Task<IActionResult> AuthenticateAsync(AuthenticationCredentials request, CancellationToken cancellation)
46+
public async Task<IActionResult> AuthenticateAsync([FromBody] AuthenticationCredentials request, CancellationToken cancellation)
4747
{
4848
var result = await dispatcher.DispatchAsync(request, cancellation);
4949

5050
return result switch
5151
{
52-
{ IsSuccess: true } =>
52+
{ IsSuccess: true } when result.Data is not null =>
5353
StatusCode(StatusCodes.Status200OK, result.Data),
5454

5555
{ IsFailure: true } when result.Error == AuthenticationErrors.InvalidCredentials =>
@@ -63,13 +63,13 @@ public async Task<IActionResult> AuthenticateAsync(AuthenticationCredentials req
6363
[HttpPost("refresh-token")]
6464
[RealmRequired]
6565
[Stability(Stability.Stable)]
66-
public async Task<IActionResult> RefreshTokenAsync(SessionTokenRenewalScheme request, CancellationToken cancellation)
66+
public async Task<IActionResult> RefreshTokenAsync([FromBody] SessionTokenRenewalScheme request, CancellationToken cancellation)
6767
{
6868
var result = await dispatcher.DispatchAsync(request, cancellation);
6969

7070
return result switch
7171
{
72-
{ IsSuccess: true } =>
72+
{ IsSuccess: true } when result.Data is not null =>
7373
StatusCode(StatusCodes.Status200OK, result.Data),
7474

7575
{ IsFailure: true } when result.Error == AuthenticationErrors.InvalidRefreshToken =>
@@ -92,7 +92,7 @@ public async Task<IActionResult> RefreshTokenAsync(SessionTokenRenewalScheme req
9292
[HttpPost("invalidate-session")]
9393
[RealmRequired]
9494
[Stability(Stability.Stable)]
95-
public async Task<IActionResult> InvalidateSessionAsync(SessionInvalidationScheme request, CancellationToken cancellation)
95+
public async Task<IActionResult> InvalidateSessionAsync([FromBody] SessionInvalidationScheme request, CancellationToken cancellation)
9696
{
9797
var result = await dispatcher.DispatchAsync(request, cancellation);
9898

Source/HttpsRichardy.Federation.WebApi/Controllers/PermissionsController.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,13 @@ public async Task<IActionResult> GetPermissionsAsync([FromQuery] PermissionsFetc
2424
[HttpPost]
2525
[Authorize(Roles = Permissions.CreatePermission)]
2626
[Stability(Stability.Stable)]
27-
public async Task<IActionResult> CreatePermissionAsync(PermissionCreationScheme request, CancellationToken cancellation)
27+
public async Task<IActionResult> CreatePermissionAsync([FromBody] PermissionCreationScheme request, CancellationToken cancellation)
2828
{
2929
var result = await dispatcher.DispatchAsync(request, cancellation);
3030

3131
return result switch
3232
{
33-
{ IsSuccess: true } =>
33+
{ IsSuccess: true } when result.Data is not null =>
3434
StatusCode(StatusCodes.Status201Created, result.Data),
3535

3636
{ IsFailure: true } when result.Error == PermissionErrors.PermissionAlreadyExists =>
@@ -41,13 +41,13 @@ public async Task<IActionResult> CreatePermissionAsync(PermissionCreationScheme
4141
[HttpPut("{id}")]
4242
[Authorize(Roles = Permissions.EditPermission)]
4343
[Stability(Stability.Stable)]
44-
public async Task<IActionResult> UpdatePermissionAsync(string id, PermissionUpdateScheme request, CancellationToken cancellation)
44+
public async Task<IActionResult> UpdatePermissionAsync([FromRoute] string id, [FromBody] PermissionUpdateScheme request, CancellationToken cancellation)
4545
{
4646
var result = await dispatcher.DispatchAsync(request with { PermissionId = id }, cancellation);
4747

4848
return result switch
4949
{
50-
{ IsSuccess: true } =>
50+
{ IsSuccess: true } when result.Data is not null =>
5151
StatusCode(StatusCodes.Status200OK, result.Data),
5252

5353
{ IsFailure: true } when result.Error == PermissionErrors.PermissionDoesNotExist =>
@@ -58,9 +58,9 @@ public async Task<IActionResult> UpdatePermissionAsync(string id, PermissionUpda
5858
[HttpDelete("{id}")]
5959
[Authorize(Roles = Permissions.DeletePermission)]
6060
[Stability(Stability.Stable)]
61-
public async Task<IActionResult> DeletePermissionAsync(string id, CancellationToken cancellation)
61+
public async Task<IActionResult> DeletePermissionAsync([FromRoute] string id, [FromQuery] PermissionDeletionScheme request, CancellationToken cancellation)
6262
{
63-
var result = await dispatcher.DispatchAsync(new PermissionDeletionScheme { PermissionId = id }, cancellation);
63+
var result = await dispatcher.DispatchAsync(request with { PermissionId = id }, cancellation);
6464

6565
return result switch
6666
{

Source/HttpsRichardy.Federation.WebApi/Controllers/RealmsController.cs

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,13 @@ public async Task<IActionResult> GetRealmsAsync([FromQuery] RealmFetchParameters
2424
[HttpPost]
2525
[Authorize(Roles = Permissions.CreateRealm)]
2626
[Stability(Stability.Stable)]
27-
public async Task<IActionResult> CreateRealmAsync(RealmCreationScheme request, CancellationToken cancellation)
27+
public async Task<IActionResult> CreateRealmAsync([FromBody] RealmCreationScheme request, CancellationToken cancellation)
2828
{
2929
var result = await dispatcher.DispatchAsync(request, cancellation);
3030

3131
return result switch
3232
{
33-
{ IsSuccess: true } =>
33+
{ IsSuccess: true } when result.Data is not null =>
3434
StatusCode(StatusCodes.Status201Created, result.Data),
3535

3636
{ IsFailure: true } when result.Error == RealmErrors.RealmAlreadyExists =>
@@ -41,14 +41,13 @@ public async Task<IActionResult> CreateRealmAsync(RealmCreationScheme request, C
4141
[HttpPut("{id}")]
4242
[Authorize(Roles = Permissions.EditRealm)]
4343
[Stability(Stability.Stable)]
44-
public async Task<IActionResult> UpdateRealmAsync(
45-
string id, RealmUpdateScheme request, CancellationToken cancellation)
44+
public async Task<IActionResult> UpdateRealmAsync([FromRoute] string id, [FromBody] RealmUpdateScheme request, CancellationToken cancellation)
4645
{
4746
var result = await dispatcher.DispatchAsync(request with { RealmId = id }, cancellation);
4847

4948
return result switch
5049
{
51-
{ IsSuccess: true } =>
50+
{ IsSuccess: true } when result.Data is not null =>
5251
StatusCode(StatusCodes.Status200OK, result.Data),
5352

5453
{ IsFailure: true } when result.Error == RealmErrors.RealmDoesNotExist =>
@@ -59,9 +58,9 @@ public async Task<IActionResult> UpdateRealmAsync(
5958
[HttpDelete("{id}")]
6059
[Authorize(Roles = Permissions.DeleteRealm)]
6160
[Stability(Stability.Stable)]
62-
public async Task<IActionResult> DeleteRealmAsync(string id, CancellationToken cancellation)
61+
public async Task<IActionResult> DeleteRealmAsync([FromRoute] string id, [FromQuery] RealmDeletionScheme request, CancellationToken cancellation)
6362
{
64-
var result = await dispatcher.DispatchAsync(new RealmDeletionScheme { RealmId = id }, cancellation);
63+
var result = await dispatcher.DispatchAsync(request with { RealmId = id }, cancellation);
6564

6665
return result switch
6766
{
@@ -76,15 +75,14 @@ public async Task<IActionResult> DeleteRealmAsync(string id, CancellationToken c
7675
[HttpGet("{id}/permissions")]
7776
[Authorize(Roles = Permissions.ViewPermissions)]
7877
[Stability(Stability.Stable)]
79-
public async Task<IActionResult> GetRealmPermissionsAsync(
80-
[FromRoute] string id, [FromQuery] ListRealmAssignedPermissionsParameters request, CancellationToken cancellation
81-
)
78+
public async Task<IActionResult> GetRealmPermissionsAsync([FromRoute] string id, [FromQuery] ListRealmAssignedPermissionsParameters request, CancellationToken cancellation)
8279
{
8380
var result = await dispatcher.DispatchAsync(request with { RealmId = id }, cancellation);
8481

8582
return result switch
8683
{
87-
{ IsSuccess: true } => StatusCode(StatusCodes.Status200OK, result.Data),
84+
{ IsSuccess: true } when result.Data is not null =>
85+
StatusCode(StatusCodes.Status200OK, result.Data),
8886

8987
{ IsFailure: true } when result.Error == RealmErrors.RealmDoesNotExist =>
9088
StatusCode(StatusCodes.Status404NotFound, result.Error),
@@ -94,8 +92,7 @@ public async Task<IActionResult> GetRealmPermissionsAsync(
9492
[HttpPost("{id}/permissions")]
9593
[Authorize(Roles = Permissions.AssignPermissions)]
9694
[Stability(Stability.Stable)]
97-
public async Task<IActionResult> AssignPermissionAsync(
98-
[FromRoute] string id, [FromBody] AssignRealmPermissionScheme request, CancellationToken cancellation)
95+
public async Task<IActionResult> AssignPermissionAsync([FromRoute] string id, [FromBody] AssignRealmPermissionScheme request, CancellationToken cancellation)
9996
{
10097
var result = await dispatcher.DispatchAsync(request with { RealmId = id }, cancellation);
10198

Source/HttpsRichardy.Federation.WebApi/Controllers/ScopesController.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ public sealed class ScopesController(IDispatcher dispatcher) : ControllerBase
99
[HttpPost]
1010
[Authorize(Roles = Permissions.CreateScope)]
1111
[Stability(Stability.Experimental)]
12-
public async Task<IActionResult> CreateScopeAsync(ScopeCreationScheme request, CancellationToken cancellation)
12+
public async Task<IActionResult> CreateScopeAsync([FromBody] ScopeCreationScheme request, CancellationToken cancellation)
1313
{
1414
var result = await dispatcher.DispatchAsync(request, cancellation);
1515

0 commit comments

Comments
 (0)