1
0
mirror of https://github.com/bitwarden/server.git synced 2025-06-30 23:52:50 -05:00

[PM-14376] Add GET tasks endpoint (#5089)

* Added CQRS pattern

* Added the GetManyByUserIdAsync signature to the repositiory

* Added sql sproc

Created user defined type to hold status

Created migration file

* Added ef core query

* Added absract and concrete implementation for GetManyByUserIdStatusAsync

* Added integration tests

* Updated params to status

* Implemented new query to utilize repository method

* Added controller for the security task endpoint

* Fixed lint issues

* Added documentation

* simplified to require single status

modified script to check for users with edit rights

* Updated ef core query

* Added new assertions

* simplified to require single status

* fixed formatting

* Fixed sql script

* Removed default null

* Added security tasks feature flag
This commit is contained in:
SmithThe4th
2024-12-12 14:27:31 -05:00
committed by GitHub
parent 03dde0d008
commit a332a69112
13 changed files with 469 additions and 2 deletions

View File

@ -0,0 +1,13 @@
using Bit.Core.Vault.Entities;
using Bit.Core.Vault.Enums;
using Bit.Core.Vault.Repositories;
namespace Bit.Core.Vault.Queries;
public class GetTaskDetailsForUserQuery(ISecurityTaskRepository securityTaskRepository) : IGetTaskDetailsForUserQuery
{
/// <inheritdoc />
public async Task<IEnumerable<SecurityTask>> GetTaskDetailsForUserAsync(Guid userId,
SecurityTaskStatus? status = null)
=> await securityTaskRepository.GetManyByUserIdStatusAsync(userId, status);
}

View File

@ -0,0 +1,15 @@
using Bit.Core.Vault.Entities;
using Bit.Core.Vault.Enums;
namespace Bit.Core.Vault.Queries;
public interface IGetTaskDetailsForUserQuery
{
/// <summary>
/// Retrieves security tasks for a user based on their organization and cipher access permissions.
/// </summary>
/// <param name="userId">The Id of the user retrieving tasks</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<IEnumerable<SecurityTask>> GetTaskDetailsForUserAsync(Guid userId, SecurityTaskStatus? status = null);
}

View File

@ -1,9 +1,16 @@
using Bit.Core.Repositories;
using Bit.Core.Vault.Entities;
using Bit.Core.Vault.Enums;
namespace Bit.Core.Vault.Repositories;
public interface ISecurityTaskRepository : IRepository<SecurityTask, Guid>
{
/// <summary>
/// Retrieves security tasks for a user based on their organization and cipher access permissions.
/// </summary>
/// <param name="userId">The Id of the user retrieving tasks</param>
/// <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);
}

View File

@ -15,5 +15,6 @@ public static class VaultServiceCollectionExtensions
private static void AddVaultQueries(this IServiceCollection services)
{
services.AddScoped<IOrganizationCiphersQuery, OrganizationCiphersQuery>();
services.AddScoped<IGetTaskDetailsForUserQuery, GetTaskDetailsForUserQuery>();
}
}