From 7cb1851b0da03667c783b76ecb7bcbef0522d77d Mon Sep 17 00:00:00 2001 From: XShine555 Date: Fri, 29 May 2026 22:36:33 +0200 Subject: [PATCH] Use null --- WebApi/Authentication/CurrentUser.cs | 5 ++-- WebApi/Endpoints/PlayListEndpoints.cs | 37 +++++++++++++++------------ 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/WebApi/Authentication/CurrentUser.cs b/WebApi/Authentication/CurrentUser.cs index f5b8df2..0809fe4 100644 --- a/WebApi/Authentication/CurrentUser.cs +++ b/WebApi/Authentication/CurrentUser.cs @@ -12,7 +12,7 @@ public sealed class CurrentUser : IBindableFromHttpContext IsAuthenticated = isAuthenticated.HasValue && isAuthenticated.Value; var rawId = principal.FindFirstValue(ClaimTypes.NameIdentifier); - Id = Guid.TryParse(rawId, out var id)? id : Guid.Empty; + Id = Guid.TryParse(rawId, out var id)? id : null; Username = principal.FindFirstValue(ClaimTypes.Name); FirstName = principal.FindFirstValue(ClaimTypes.GivenName); @@ -31,8 +31,7 @@ public sealed class CurrentUser : IBindableFromHttpContext public string? LastName { get; } - public Guid RequiredId => Id - ?? throw new InvalidOperationException("The current request does not contain an authenticated user id."); + public Guid RequiredId => Id.HasValue? Id.Value : throw new InvalidOperationException("User ID is required but not present."); public bool HasClaim(string type) => Principal.HasClaim(c => c.Type == type); diff --git a/WebApi/Endpoints/PlayListEndpoints.cs b/WebApi/Endpoints/PlayListEndpoints.cs index dcada56..e2a0b0f 100644 --- a/WebApi/Endpoints/PlayListEndpoints.cs +++ b/WebApi/Endpoints/PlayListEndpoints.cs @@ -1,6 +1,7 @@ using Mediator; using Musify.Application.PlayLists.Commands; using Musify.Application.PlayLists.Queries; +using WebApi.Authentication; using WebApi.DataTransferObjects.PlayLists; using WebApi.Extensions; using WebApi.Filters; @@ -26,24 +27,28 @@ public static class PlayListEndpoints .WithName("GetPlayListsByUserId") .WithSummary("Get Paginated PlayLists For A User."); - group.MapPost("/users/{userId}", CreatePlayList) + group.MapPost("/", CreatePlayList) .WithName("CreatePlayList") .WithSummary("Create A New PlayList.") - .AddEndpointFilter>(); + .AddEndpointFilter>() + .RequireAuthorization(); - group.MapPut("/{playlistId}/users/{userId}", UpdatePlayList) + group.MapPut("/{playlistId}", UpdatePlayList) .WithName("UpdatePlayList") .WithSummary("Update An Existing PlayList.") - .AddEndpointFilter>(); + .AddEndpointFilter>() + .RequireAuthorization(); - group.MapDelete("/{playlistId}/users/{userId}", DeletePlayList) + group.MapDelete("/{playlistId}", DeletePlayList) .WithName("DeletePlayList") - .WithSummary("Delete A PlayList."); + .WithSummary("Delete A PlayList.") + .RequireAuthorization(); - group.MapPost("/upload-picture/users/{userId}", RequestPlayListPictureUpload) + group.MapPost("/upload-picture", RequestPlayListPictureUpload) .WithName("RequestPlayListPictureUpload") .WithSummary("Request A Pre-Signed URL To Upload A PlayList Picture.") - .AddEndpointFilter>(); + .AddEndpointFilter>() + .RequireAuthorization(); return app; } @@ -81,12 +86,12 @@ public static class PlayListEndpoints private static async Task CreatePlayList( IMediator mediator, - Guid userId, + CurrentUser currentUser, CreatePlayListRequest request, CancellationToken cancellationToken) { var result = await mediator.Send( - new CreatePlayListCommand(userId, request.Name, request.Description, request.PictureIntentId), + new CreatePlayListCommand(currentUser.RequiredId, request.Name, request.Description, request.PictureIntentId), cancellationToken); if (!result.IsSuccess) @@ -97,13 +102,13 @@ public static class PlayListEndpoints private static async Task UpdatePlayList( IMediator mediator, - Guid userId, + CurrentUser currentUser, Guid playlistId, UpdatePlayListRequest request, CancellationToken cancellationToken) { var result = await mediator.Send( - new UpdatePlayListCommand(userId, playlistId, request.NewName, request.NewDescription, request.NewPictureIntentId), + new UpdatePlayListCommand(currentUser.RequiredId, playlistId, request.NewName, request.NewDescription, request.NewPictureIntentId), cancellationToken); return result.ToHttpResult(); @@ -111,22 +116,22 @@ public static class PlayListEndpoints private static async Task DeletePlayList( IMediator mediator, - Guid userId, + CurrentUser currentUser, Guid playlistId, CancellationToken cancellationToken) { - var result = await mediator.Send(new DeletePlayListCommand(userId, playlistId), cancellationToken); + var result = await mediator.Send(new DeletePlayListCommand(currentUser.RequiredId, playlistId), cancellationToken); return result.ToHttpResult(); } private static async Task RequestPlayListPictureUpload( IMediator mediator, - Guid userId, + CurrentUser currentUser, RequestPlayListPictureUploadRequest request, CancellationToken cancellationToken) { var result = await mediator.Send( - new RequestPlayListPictureUploadCommand(userId, request.FileType, request.ContentType, request.ExpectedSizeBytes), + new RequestPlayListPictureUploadCommand(currentUser.RequiredId, request.FileType, request.ContentType, request.ExpectedSizeBytes), cancellationToken); return result.ToHttpResult();