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:
13
src/Core/Vault/Queries/GetTaskDetailsForUserQuery.cs
Normal file
13
src/Core/Vault/Queries/GetTaskDetailsForUserQuery.cs
Normal 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);
|
||||
}
|
15
src/Core/Vault/Queries/IGetTaskDetailsForUserQuery.cs
Normal file
15
src/Core/Vault/Queries/IGetTaskDetailsForUserQuery.cs
Normal 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);
|
||||
}
|
@ -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);
|
||||
}
|
||||
|
@ -15,5 +15,6 @@ public static class VaultServiceCollectionExtensions
|
||||
private static void AddVaultQueries(this IServiceCollection services)
|
||||
{
|
||||
services.AddScoped<IOrganizationCiphersQuery, OrganizationCiphersQuery>();
|
||||
services.AddScoped<IGetTaskDetailsForUserQuery, GetTaskDetailsForUserQuery>();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user