mirror of
https://github.com/bitwarden/server.git
synced 2025-07-03 09:02:48 -05:00
[PM-14380] Add GET /tasks/organization endpoint (#5149)
* [PM-14380] Add GetManyByOrganizationIdStatusAsync to SecurityTaskRepository * [PM-14380] Introduce IGetTasksForOrganizationQuery * [PM-14380] Add /tasks/organization endpoint * [PM-14380] Add unit tests * [PM-14380] Formatting * [PM-14380] Bump migration script date * [PM-14380] Bump migration script date
This commit is contained in:
44
src/Core/Vault/Queries/GetTasksForOrganizationQuery.cs
Normal file
44
src/Core/Vault/Queries/GetTasksForOrganizationQuery.cs
Normal file
@ -0,0 +1,44 @@
|
||||
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.Enums;
|
||||
using Bit.Core.Vault.Repositories;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
|
||||
namespace Bit.Core.Vault.Queries;
|
||||
|
||||
public class GetTasksForOrganizationQuery : IGetTasksForOrganizationQuery
|
||||
{
|
||||
private readonly ISecurityTaskRepository _securityTaskRepository;
|
||||
private readonly IAuthorizationService _authorizationService;
|
||||
private readonly ICurrentContext _currentContext;
|
||||
|
||||
public GetTasksForOrganizationQuery(
|
||||
ISecurityTaskRepository securityTaskRepository,
|
||||
IAuthorizationService authorizationService,
|
||||
ICurrentContext currentContext
|
||||
)
|
||||
{
|
||||
_securityTaskRepository = securityTaskRepository;
|
||||
_authorizationService = authorizationService;
|
||||
_currentContext = currentContext;
|
||||
}
|
||||
|
||||
public async Task<ICollection<SecurityTask>> GetTasksAsync(Guid organizationId,
|
||||
SecurityTaskStatus? status = null)
|
||||
{
|
||||
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.GetManyByOrganizationIdStatusAsync(organizationId, status)).ToList();
|
||||
}
|
||||
}
|
15
src/Core/Vault/Queries/IGetTasksForOrganizationQuery.cs
Normal file
15
src/Core/Vault/Queries/IGetTasksForOrganizationQuery.cs
Normal file
@ -0,0 +1,15 @@
|
||||
using Bit.Core.Vault.Entities;
|
||||
using Bit.Core.Vault.Enums;
|
||||
|
||||
namespace Bit.Core.Vault.Queries;
|
||||
|
||||
public interface IGetTasksForOrganizationQuery
|
||||
{
|
||||
/// <summary>
|
||||
/// Retrieves all security tasks for an organization.
|
||||
/// </summary>
|
||||
/// <param name="organizationId">The Id of the organization</param>
|
||||
/// <param name="status">Optional filter for task status. If not provided, returns tasks of all statuses</param>
|
||||
/// <returns>A collection of security tasks</returns>
|
||||
Task<ICollection<SecurityTask>> GetTasksAsync(Guid organizationId, SecurityTaskStatus? status = null);
|
||||
}
|
@ -13,4 +13,12 @@ public interface ISecurityTaskRepository : IRepository<SecurityTask, Guid>
|
||||
/// <param name="status">Optional filter for task status. If not provided, returns tasks of all statuses</param>
|
||||
/// <returns></returns>
|
||||
Task<ICollection<SecurityTask>> GetManyByUserIdStatusAsync(Guid userId, SecurityTaskStatus? status = null);
|
||||
|
||||
/// <summary>
|
||||
/// Retrieves all security tasks for an organization.
|
||||
/// </summary>
|
||||
/// <param name="organizationId">The id of the organization</param>
|
||||
/// <param name="status">Optional filter for task status. If not provided, returns tasks of all statuses</param>
|
||||
/// <returns></returns>
|
||||
Task<ICollection<SecurityTask>> GetManyByOrganizationIdStatusAsync(Guid organizationId, SecurityTaskStatus? status = null);
|
||||
}
|
||||
|
Reference in New Issue
Block a user