using PostFundManagement.Domain; using PostFundManagement.Domain.Abstractions; using PostFundManagement.Infrastructure.Database; namespace PostFundManagement.Application.Services.Shared; public sealed class IdentityService(IDbContextFactory contextFactory) : IService { public async ValueTask UserIsAuthorisedAsync(Guid userId, CancellationToken cancellationToken = default) { try { using var context = await contextFactory.CreateDbContextAsync(cancellationToken); return !await context.Users.AnyAsync(u => u.Id == userId && u.Status == ActivityStatus.Active, cancellationToken) ? Result.Fail("Invalid user") : Result.Ok(); } catch (Exception ex) { return Result.Fail(new Error(ex.Message).CausedBy(ex)); } } }