using PostFundManagement.Application.Abstractions.Services; using PostFundManagement.Domain; using PostFundManagement.Domain.Errors; using PostFundManagement.Infrastructure.Database; namespace PostFundManagement.Application.Services.Shared; public sealed class IdentityService(IDbContextFactory contextFactory) : IIdentityService { public async Task UserIsAuthorisedAsync(Guid userId, CancellationToken cancellationToken = default) => await Result.Try((Func>)(async () => { await using var context = await contextFactory.CreateDbContextAsync(cancellationToken); // TODO: Ensure TenantUser status is checked var userExistsAndActive = await context.Users .AnyAsync(u => u.Id == userId && u.Status == ActivityStatus.Active, cancellationToken); return Result.OkIf(userExistsAndActive, NotFoundError.Create()); })); }