diff --git a/src/Modules/Identity/Modules.Identity.Contracts/Services/ICurrentUserService.cs b/src/Modules/Identity/Modules.Identity.Contracts/Services/ICurrentUserService.cs new file mode 100644 index 0000000000..b32c14fe53 --- /dev/null +++ b/src/Modules/Identity/Modules.Identity.Contracts/Services/ICurrentUserService.cs @@ -0,0 +1,12 @@ +using System.Security.Claims; +using FSH.Framework.Core.Context; + +namespace FSH.Modules.Identity.Contracts.Services; + +/// +/// Service interface for managing the current user context. +/// Combines user identity access with initialization capabilities. +/// +public interface ICurrentUserService : ICurrentUser, ICurrentUserInitializer +{ +} diff --git a/src/Modules/Identity/Modules.Identity.Contracts/Services/IRequestContextService.cs b/src/Modules/Identity/Modules.Identity.Contracts/Services/IRequestContextService.cs new file mode 100644 index 0000000000..3bf9966703 --- /dev/null +++ b/src/Modules/Identity/Modules.Identity.Contracts/Services/IRequestContextService.cs @@ -0,0 +1,11 @@ +using FSH.Framework.Core.Context; + +namespace FSH.Modules.Identity.Contracts.Services; + +/// +/// Service interface for accessing HTTP request context information. +/// Provides request metadata for auditing, logging, and other cross-cutting concerns. +/// +public interface IRequestContextService : IRequestContext +{ +} diff --git a/src/Modules/Identity/Modules.Identity/IdentityModule.cs b/src/Modules/Identity/Modules.Identity/IdentityModule.cs index da3ea97e04..061107b5b5 100644 --- a/src/Modules/Identity/Modules.Identity/IdentityModule.cs +++ b/src/Modules/Identity/Modules.Identity/IdentityModule.cs @@ -73,10 +73,12 @@ public void ConfigureServices(IHostApplicationBuilder builder) ArgumentNullException.ThrowIfNull(builder); var services = builder.Services; services.AddSingleton(); - services.AddScoped(); - services.AddScoped(); + services.AddScoped(); + services.AddScoped(sp => sp.GetRequiredService()); + services.AddScoped(sp => sp.GetRequiredService()); + services.AddScoped(); + services.AddScoped(sp => sp.GetRequiredService()); services.AddScoped(); - services.AddScoped(sp => (ICurrentUserInitializer)sp.GetRequiredService()); // User services - focused single-responsibility services services.AddTransient(); diff --git a/src/Modules/Identity/Modules.Identity/Services/CurrentUserService.cs b/src/Modules/Identity/Modules.Identity/Services/CurrentUserService.cs index 888d251e57..2fa5ff12d3 100644 --- a/src/Modules/Identity/Modules.Identity/Services/CurrentUserService.cs +++ b/src/Modules/Identity/Modules.Identity/Services/CurrentUserService.cs @@ -1,11 +1,12 @@ using FSH.Framework.Core.Context; using FSH.Framework.Core.Exceptions; using FSH.Framework.Shared.Identity.Claims; +using FSH.Modules.Identity.Contracts.Services; using System.Security.Claims; namespace FSH.Modules.Identity.Services; -public class CurrentUserService : ICurrentUser, ICurrentUserInitializer +internal sealed class CurrentUserService : ICurrentUserService { private ClaimsPrincipal? _user; diff --git a/src/Modules/Identity/Modules.Identity/Services/RequestContextService.cs b/src/Modules/Identity/Modules.Identity/Services/RequestContextService.cs index 8184f2b112..a59b399660 100644 --- a/src/Modules/Identity/Modules.Identity/Services/RequestContextService.cs +++ b/src/Modules/Identity/Modules.Identity/Services/RequestContextService.cs @@ -1,5 +1,6 @@ using FSH.Framework.Core.Context; using FSH.Framework.Web.Origin; +using FSH.Modules.Identity.Contracts.Services; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Options; @@ -9,7 +10,7 @@ namespace FSH.Modules.Identity.Services; /// Provides HTTP request context information through an abstraction. /// This allows handlers to access request metadata without direct ASP.NET Core dependencies. /// -public sealed class RequestContextService : IRequestContext +internal sealed class RequestContextService : IRequestContextService { private readonly IHttpContextAccessor _httpContextAccessor; private readonly Uri? _originUrl;