mirror of
https://github.com/bitwarden/server
synced 2025-12-13 06:43:45 +00:00
* add metrics endpoint for an organization to return completed and total security tasks * refactor metrics fetch to use sql sproc for efficiency rather than having to pull all security task data * add separate response model for security task metrics endpoint * Pascal Case to match existing implementations * refactor org to organization for consistency with other methods * alter security task endpoint: - remove "count" from variable naming - update sproc naming * remove enablement check * replace orgId with organizationId
43 lines
1.5 KiB
C#
43 lines
1.5 KiB
C#
using Bit.Core.Context;
|
|
using Bit.Core.Exceptions;
|
|
using Bit.Core.Utilities;
|
|
using Bit.Core.Vault.Authorization.SecurityTasks;
|
|
using Bit.Core.Vault.Entities;
|
|
using Bit.Core.Vault.Repositories;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
|
|
namespace Bit.Core.Vault.Queries;
|
|
|
|
public class GetTaskMetricsForOrganizationQuery : IGetTaskMetricsForOrganizationQuery
|
|
{
|
|
private readonly ISecurityTaskRepository _securityTaskRepository;
|
|
private readonly IAuthorizationService _authorizationService;
|
|
private readonly ICurrentContext _currentContext;
|
|
|
|
public GetTaskMetricsForOrganizationQuery(
|
|
ISecurityTaskRepository securityTaskRepository,
|
|
IAuthorizationService authorizationService,
|
|
ICurrentContext currentContext
|
|
)
|
|
{
|
|
_securityTaskRepository = securityTaskRepository;
|
|
_authorizationService = authorizationService;
|
|
_currentContext = currentContext;
|
|
}
|
|
|
|
public async Task<SecurityTaskMetrics> GetTaskMetrics(Guid organizationId)
|
|
{
|
|
var organization = _currentContext.GetOrganization(organizationId);
|
|
var userId = _currentContext.UserId;
|
|
|
|
if (organization == null || !userId.HasValue)
|
|
{
|
|
throw new NotFoundException();
|
|
}
|
|
|
|
await _authorizationService.AuthorizeOrThrowAsync(_currentContext.HttpContext.User, organization, SecurityTaskOperations.ListAllForOrganization);
|
|
|
|
return await _securityTaskRepository.GetTaskMetricsAsync(organizationId);
|
|
}
|
|
}
|