From df5bc90a607537c02b492c9f308affed443b80c5 Mon Sep 17 00:00:00 2001 From: Francis Pion Date: Sat, 28 Dec 2024 02:27:47 -0500 Subject: [PATCH 1/2] Refactored Web layer. --- .../Extensions/HttpContextExtensions.cs | 18 ++---------------- ...ationHandler.cs => ApiKeyAuthentication.cs} | 2 ++ .../ApiKeyAuthenticationOptions.cs | 7 ------- ...cationHandler.cs => BasicAuthentication.cs} | 2 ++ .../BasicAuthenticationOptions.cs | 7 ------- ...ationHandler.cs => BearerAuthentication.cs} | 2 ++ .../BearerAuthenticationOptions.cs | 7 ------- ...tionHandler.cs => SessionAuthentication.cs} | 2 ++ .../SessionAuthenticationOptions.cs | 7 ------- ...nHandler.cs => PortalActorAuthorization.cs} | 2 ++ .../PortalActorAuthorizationRequirement.cs | 7 ------- ...onHandler.cs => PortalUserAuthorization.cs} | 2 ++ .../PortalUserAuthorizationRequirement.cs | 7 ------- .../Controllers/IndexController.cs | 2 +- .../src/Logitar.Portal/Models/ApiVersion.cs | 4 +++- 15 files changed, 18 insertions(+), 60 deletions(-) rename backend/src/Logitar.Portal/Authentication/{ApiKeyAuthenticationHandler.cs => ApiKeyAuthentication.cs} (95%) delete mode 100644 backend/src/Logitar.Portal/Authentication/ApiKeyAuthenticationOptions.cs rename backend/src/Logitar.Portal/Authentication/{BasicAuthenticationHandler.cs => BasicAuthentication.cs} (97%) delete mode 100644 backend/src/Logitar.Portal/Authentication/BasicAuthenticationOptions.cs rename backend/src/Logitar.Portal/Authentication/{BearerAuthenticationHandler.cs => BearerAuthentication.cs} (97%) delete mode 100644 backend/src/Logitar.Portal/Authentication/BearerAuthenticationOptions.cs rename backend/src/Logitar.Portal/Authentication/{SessionAuthenticationHandler.cs => SessionAuthentication.cs} (96%) delete mode 100644 backend/src/Logitar.Portal/Authentication/SessionAuthenticationOptions.cs rename backend/src/Logitar.Portal/Authorization/{PortalActorAuthorizationHandler.cs => PortalActorAuthorization.cs} (94%) delete mode 100644 backend/src/Logitar.Portal/Authorization/PortalActorAuthorizationRequirement.cs rename backend/src/Logitar.Portal/Authorization/{PortalUserAuthorizationHandler.cs => PortalUserAuthorization.cs} (93%) delete mode 100644 backend/src/Logitar.Portal/Authorization/PortalUserAuthorizationRequirement.cs diff --git a/backend/src/Logitar.Portal.Web/Extensions/HttpContextExtensions.cs b/backend/src/Logitar.Portal.Web/Extensions/HttpContextExtensions.cs index 12fded2eb..14b5ee234 100644 --- a/backend/src/Logitar.Portal.Web/Extensions/HttpContextExtensions.cs +++ b/backend/src/Logitar.Portal.Web/Extensions/HttpContextExtensions.cs @@ -44,7 +44,7 @@ public static Uri BuildLocation(this HttpContext context, string path, IEnumerab return builder.BuildUri(); } - public static IEnumerable GetSessionCustomAttributes(this HttpContext context) + public static IReadOnlyCollection GetSessionCustomAttributes(this HttpContext context) { List customAttributes = new(capacity: 2) { @@ -57,7 +57,7 @@ public static IEnumerable GetSessionCustomAttributes(this HttpC customAttributes.Add(new("IpAddress", ipAddress)); } - return customAttributes; + return customAttributes.AsReadOnly(); } public static string GetAdditionalInformation(this HttpContext context) { @@ -143,18 +143,4 @@ public static void SignOut(this HttpContext context) context.Response.Cookies.Delete(Cookies.RefreshToken); } - - public static void SetResponse(this HttpContext context, int statusCode) - { - context.Response.StatusCode = statusCode; - } - public static async Task SetResponseAsync(this HttpContext context, int statusCode, T? value = default, CancellationToken cancellationToken = default) - { - context.SetResponse(statusCode); - - if (value != null) - { - await context.Response.WriteAsJsonAsync(value, cancellationToken); - } - } } diff --git a/backend/src/Logitar.Portal/Authentication/ApiKeyAuthenticationHandler.cs b/backend/src/Logitar.Portal/Authentication/ApiKeyAuthentication.cs similarity index 95% rename from backend/src/Logitar.Portal/Authentication/ApiKeyAuthenticationHandler.cs rename to backend/src/Logitar.Portal/Authentication/ApiKeyAuthentication.cs index eae6bbecf..68190a675 100644 --- a/backend/src/Logitar.Portal/Authentication/ApiKeyAuthenticationHandler.cs +++ b/backend/src/Logitar.Portal/Authentication/ApiKeyAuthentication.cs @@ -10,6 +10,8 @@ namespace Logitar.Portal.Authentication; +internal class ApiKeyAuthenticationOptions : AuthenticationSchemeOptions; + internal class ApiKeyAuthenticationHandler : AuthenticationHandler { private readonly IActivityPipeline _activityPipeline; diff --git a/backend/src/Logitar.Portal/Authentication/ApiKeyAuthenticationOptions.cs b/backend/src/Logitar.Portal/Authentication/ApiKeyAuthenticationOptions.cs deleted file mode 100644 index 075c4c523..000000000 --- a/backend/src/Logitar.Portal/Authentication/ApiKeyAuthenticationOptions.cs +++ /dev/null @@ -1,7 +0,0 @@ -using Microsoft.AspNetCore.Authentication; - -namespace Logitar.Portal.Authentication; - -internal class ApiKeyAuthenticationOptions : AuthenticationSchemeOptions -{ -} diff --git a/backend/src/Logitar.Portal/Authentication/BasicAuthenticationHandler.cs b/backend/src/Logitar.Portal/Authentication/BasicAuthentication.cs similarity index 97% rename from backend/src/Logitar.Portal/Authentication/BasicAuthenticationHandler.cs rename to backend/src/Logitar.Portal/Authentication/BasicAuthentication.cs index 1eb46bd05..f9f0931ed 100644 --- a/backend/src/Logitar.Portal/Authentication/BasicAuthenticationHandler.cs +++ b/backend/src/Logitar.Portal/Authentication/BasicAuthentication.cs @@ -11,6 +11,8 @@ namespace Logitar.Portal.Authentication; +internal class BasicAuthenticationOptions : AuthenticationSchemeOptions; + internal class BasicAuthenticationHandler : AuthenticationHandler { private readonly IActivityPipeline _activityPipeline; diff --git a/backend/src/Logitar.Portal/Authentication/BasicAuthenticationOptions.cs b/backend/src/Logitar.Portal/Authentication/BasicAuthenticationOptions.cs deleted file mode 100644 index 0b8971574..000000000 --- a/backend/src/Logitar.Portal/Authentication/BasicAuthenticationOptions.cs +++ /dev/null @@ -1,7 +0,0 @@ -using Microsoft.AspNetCore.Authentication; - -namespace Logitar.Portal.Authentication; - -internal class BasicAuthenticationOptions : AuthenticationSchemeOptions -{ -} diff --git a/backend/src/Logitar.Portal/Authentication/BearerAuthenticationHandler.cs b/backend/src/Logitar.Portal/Authentication/BearerAuthentication.cs similarity index 97% rename from backend/src/Logitar.Portal/Authentication/BearerAuthenticationHandler.cs rename to backend/src/Logitar.Portal/Authentication/BearerAuthentication.cs index 349bee21a..fc360305c 100644 --- a/backend/src/Logitar.Portal/Authentication/BearerAuthenticationHandler.cs +++ b/backend/src/Logitar.Portal/Authentication/BearerAuthentication.cs @@ -13,6 +13,8 @@ namespace Logitar.Portal.Authentication; +internal class BearerAuthenticationOptions : AuthenticationSchemeOptions; + internal class BearerAuthenticationHandler : AuthenticationHandler { private readonly IActivityPipeline _activityPipeline; diff --git a/backend/src/Logitar.Portal/Authentication/BearerAuthenticationOptions.cs b/backend/src/Logitar.Portal/Authentication/BearerAuthenticationOptions.cs deleted file mode 100644 index a63279762..000000000 --- a/backend/src/Logitar.Portal/Authentication/BearerAuthenticationOptions.cs +++ /dev/null @@ -1,7 +0,0 @@ -using Microsoft.AspNetCore.Authentication; - -namespace Logitar.Portal.Authentication; - -internal class BearerAuthenticationOptions : AuthenticationSchemeOptions -{ -} diff --git a/backend/src/Logitar.Portal/Authentication/SessionAuthenticationHandler.cs b/backend/src/Logitar.Portal/Authentication/SessionAuthentication.cs similarity index 96% rename from backend/src/Logitar.Portal/Authentication/SessionAuthenticationHandler.cs rename to backend/src/Logitar.Portal/Authentication/SessionAuthentication.cs index a9502899e..4ad4a1021 100644 --- a/backend/src/Logitar.Portal/Authentication/SessionAuthenticationHandler.cs +++ b/backend/src/Logitar.Portal/Authentication/SessionAuthentication.cs @@ -8,6 +8,8 @@ namespace Logitar.Portal.Authentication; +internal class SessionAuthenticationOptions : AuthenticationSchemeOptions; + internal class SessionAuthenticationHandler : AuthenticationHandler { private readonly IActivityPipeline _activityPipeline; diff --git a/backend/src/Logitar.Portal/Authentication/SessionAuthenticationOptions.cs b/backend/src/Logitar.Portal/Authentication/SessionAuthenticationOptions.cs deleted file mode 100644 index a248e9fa1..000000000 --- a/backend/src/Logitar.Portal/Authentication/SessionAuthenticationOptions.cs +++ /dev/null @@ -1,7 +0,0 @@ -using Microsoft.AspNetCore.Authentication; - -namespace Logitar.Portal.Authentication; - -internal class SessionAuthenticationOptions : AuthenticationSchemeOptions -{ -} diff --git a/backend/src/Logitar.Portal/Authorization/PortalActorAuthorizationHandler.cs b/backend/src/Logitar.Portal/Authorization/PortalActorAuthorization.cs similarity index 94% rename from backend/src/Logitar.Portal/Authorization/PortalActorAuthorizationHandler.cs rename to backend/src/Logitar.Portal/Authorization/PortalActorAuthorization.cs index 98c50d9ad..352012428 100644 --- a/backend/src/Logitar.Portal/Authorization/PortalActorAuthorizationHandler.cs +++ b/backend/src/Logitar.Portal/Authorization/PortalActorAuthorization.cs @@ -5,6 +5,8 @@ namespace Logitar.Portal.Authorization; +internal class PortalActorAuthorizationRequirement : IAuthorizationRequirement; + internal class PortalActorAuthorizationHandler : AuthorizationHandler { private readonly IHttpContextAccessor _httpContextAccessor; diff --git a/backend/src/Logitar.Portal/Authorization/PortalActorAuthorizationRequirement.cs b/backend/src/Logitar.Portal/Authorization/PortalActorAuthorizationRequirement.cs deleted file mode 100644 index 3c169ab2b..000000000 --- a/backend/src/Logitar.Portal/Authorization/PortalActorAuthorizationRequirement.cs +++ /dev/null @@ -1,7 +0,0 @@ -using Microsoft.AspNetCore.Authorization; - -namespace Logitar.Portal.Authorization; - -internal class PortalActorAuthorizationRequirement : IAuthorizationRequirement -{ -} diff --git a/backend/src/Logitar.Portal/Authorization/PortalUserAuthorizationHandler.cs b/backend/src/Logitar.Portal/Authorization/PortalUserAuthorization.cs similarity index 93% rename from backend/src/Logitar.Portal/Authorization/PortalUserAuthorizationHandler.cs rename to backend/src/Logitar.Portal/Authorization/PortalUserAuthorization.cs index a46255f37..e9d07edfc 100644 --- a/backend/src/Logitar.Portal/Authorization/PortalUserAuthorizationHandler.cs +++ b/backend/src/Logitar.Portal/Authorization/PortalUserAuthorization.cs @@ -4,6 +4,8 @@ namespace Logitar.Portal.Authorization; +internal class PortalUserAuthorizationRequirement : IAuthorizationRequirement; + internal class PortalUserAuthorizationHandler : AuthorizationHandler { private readonly IHttpContextAccessor _httpContextAccessor; diff --git a/backend/src/Logitar.Portal/Authorization/PortalUserAuthorizationRequirement.cs b/backend/src/Logitar.Portal/Authorization/PortalUserAuthorizationRequirement.cs deleted file mode 100644 index b1a6ed046..000000000 --- a/backend/src/Logitar.Portal/Authorization/PortalUserAuthorizationRequirement.cs +++ /dev/null @@ -1,7 +0,0 @@ -using Microsoft.AspNetCore.Authorization; - -namespace Logitar.Portal.Authorization; - -internal class PortalUserAuthorizationRequirement : IAuthorizationRequirement -{ -} diff --git a/backend/src/Logitar.Portal/Controllers/IndexController.cs b/backend/src/Logitar.Portal/Controllers/IndexController.cs index 9588bdd8b..78013dff0 100644 --- a/backend/src/Logitar.Portal/Controllers/IndexController.cs +++ b/backend/src/Logitar.Portal/Controllers/IndexController.cs @@ -8,5 +8,5 @@ namespace Logitar.Portal.Controllers; public class IndexController : ControllerBase { [HttpGet] - public ActionResult Get() => Ok(new ApiVersion()); + public ActionResult Get() => Ok(ApiVersion.Current); } diff --git a/backend/src/Logitar.Portal/Models/ApiVersion.cs b/backend/src/Logitar.Portal/Models/ApiVersion.cs index 5513a3913..0c650e2f9 100644 --- a/backend/src/Logitar.Portal/Models/ApiVersion.cs +++ b/backend/src/Logitar.Portal/Models/ApiVersion.cs @@ -4,10 +4,12 @@ namespace Logitar.Portal.Models; public record ApiVersion { + public static ApiVersion Current => new(Api.Title, Api.Version); + public string Title { get; set; } public string Version { get; set; } - public ApiVersion() : this(Api.Title, Api.Version) + public ApiVersion() : this(string.Empty, string.Empty) { } From 70aac09dc7bda86edc8c953ea8563e520c453eae Mon Sep 17 00:00:00 2001 From: Francis Pion Date: Sat, 28 Dec 2024 02:28:29 -0500 Subject: [PATCH 2/2] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8fc999832..23612cdcd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Refactored validators. - Refactored database entities & `PortalDb`. - Upgraded Identity NuGet packages. +- Refactored Web layer. ### Fixed