Skip to content

PM-20574 & PM-20575 Adding Risk Insight Report tables, repositories, and migrations #5839

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 5 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/Api/Dirt/Controllers/HibpController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;

namespace Bit.Api.Tools.Controllers;
namespace Bit.Api.Dirt.Controllers;

[Route("hibp")]
[Authorize("Application")]
Expand Down
20 changes: 10 additions & 10 deletions src/Api/Dirt/Controllers/ReportsController.cs
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
using Bit.Api.Tools.Models;
using Bit.Api.Tools.Models.Response;
using Bit.Api.Dirt.Models;
using Bit.Api.Dirt.Models.Response;
using Bit.Core.Context;
using Bit.Core.Dirt.Reports.Entities;
using Bit.Core.Dirt.Reports.Models.Data;
using Bit.Core.Dirt.Reports.ReportFeatures.Interfaces;
using Bit.Core.Dirt.Reports.ReportFeatures.OrganizationReportMembers.Interfaces;
using Bit.Core.Dirt.Reports.ReportFeatures.Requests;
using Bit.Core.Exceptions;
using Bit.Core.Tools.Entities;
using Bit.Core.Tools.Models.Data;
using Bit.Core.Tools.ReportFeatures.Interfaces;
using Bit.Core.Tools.ReportFeatures.OrganizationReportMembers.Interfaces;
using Bit.Core.Tools.ReportFeatures.Requests;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;

namespace Bit.Api.Tools.Controllers;
namespace Bit.Api.Dirt.Controllers;

[Route("reports")]
[Authorize("Application")]
Expand Down Expand Up @@ -47,7 +47,7 @@ IDropPasswordHealthReportApplicationCommand dropPwdHealthReportAppCommand
[HttpGet("member-cipher-details/{orgId}")]
public async Task<IEnumerable<MemberCipherDetailsResponseModel>> GetMemberCipherDetails(Guid orgId)
{
// Using the AccessReports permission here until new permissions
// Using the AccessReports permission here until new permissions
// are needed for more control over reports
if (!await _currentContext.AccessReports(orgId))
{
Expand Down Expand Up @@ -84,7 +84,7 @@ public async Task<IEnumerable<MemberAccessReportResponseModel>> GetMemberAccessR
}

/// <summary>
/// Contains the organization member info, the cipher ids associated with the member,
/// Contains the organization member info, the cipher ids associated with the member,
/// and details on their collections, groups, and permissions
/// </summary>
/// <param name="request">Request to the MemberAccessCipherDetailsQuery</param>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Bit.Api.Tools.Models;
namespace Bit.Api.Dirt.Models;

public class PasswordHealthReportApplicationModel
{
Expand Down
6 changes: 3 additions & 3 deletions src/Api/Dirt/Models/Response/MemberAccessReportModel.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
using Bit.Core.Tools.Models.Data;
using Bit.Core.Dirt.Reports.Models.Data;

namespace Bit.Api.Tools.Models.Response;
namespace Bit.Api.Dirt.Models.Response;

/// <summary>
/// Contains the collections and group collections a user has access to including
/// the permission level for the collection and group collection.
/// the permission level for the collection and group collection.
/// </summary>
public class MemberAccessReportResponseModel
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using Bit.Core.Tools.Models.Data;
using Bit.Core.Dirt.Reports.Models.Data;

namespace Bit.Api.Tools.Models.Response;
namespace Bit.Api.Dirt.Models.Response;

public class MemberCipherDetailsResponseModel
{
Expand Down
2 changes: 1 addition & 1 deletion src/Api/Startup.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@
using Bit.Core.Auth.Identity.TokenProviders;
using Bit.Core.Services;
using Bit.Core.Tools.ImportFeatures;
using Bit.Core.Tools.ReportFeatures;
using Bit.Core.Auth.Models.Api.Request;
using Bit.Core.Dirt.Reports.ReportFeatures;
using Bit.Core.Tools.SendFeatures;

#if !OSS
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
using Bit.Core.Entities;
using Bit.Core.Utilities;
#nullable enable

#nullable enable
using Bit.Core.Entities;
using Bit.Core.Utilities;

namespace Bit.Core.Tools.Entities;
namespace Bit.Core.Dirt.Reports.Entities;

public class PasswordHealthReportApplication : ITableObject<Guid>, IRevisable
{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#nullable enable

using Bit.Core.Entities;
using Bit.Core.Utilities;

namespace Bit.Core.Dirt.Reports.Entities;

public class RiskInsightCriticalApplication : ITableObject<Guid>, IRevisable
{
public Guid Id { get; set; }
public Guid OrganizationId { get; set; }
public string Applications { get; set; } = string.Empty;
public DateTime CreationDate { get; set; } = DateTime.UtcNow;
public DateTime RevisionDate { get; set; } = DateTime.UtcNow;

Check warning on line 14 in src/Core/Dirt/Reports/Entities/RiskInsightCriticalApplication.cs

View check run for this annotation

Codecov / codecov/patch

src/Core/Dirt/Reports/Entities/RiskInsightCriticalApplication.cs#L10-L14

Added lines #L10 - L14 were not covered by tests

public void SetNewId()
{
Id = CoreHelpers.GenerateComb();
}

Check warning on line 19 in src/Core/Dirt/Reports/Entities/RiskInsightCriticalApplication.cs

View check run for this annotation

Codecov / codecov/patch

src/Core/Dirt/Reports/Entities/RiskInsightCriticalApplication.cs#L17-L19

Added lines #L17 - L19 were not covered by tests
}
21 changes: 21 additions & 0 deletions src/Core/Dirt/Reports/Entities/RiskInsightReport.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#nullable enable

using Bit.Core.Entities;
using Bit.Core.Utilities;

namespace Bit.Core.Dirt.Reports.Entities;

public class RiskInsightReport : ITableObject<Guid>, IRevisable
{
public Guid Id { get; set; }
public Guid OrganizationId { get; set; }
public DateTime Date { get; set; }
public string ReportData { get; set; } = string.Empty;
public DateTime CreationDate { get; set; } = DateTime.UtcNow;
public DateTime RevisionDate { get; set; } = DateTime.UtcNow;

Check warning on line 15 in src/Core/Dirt/Reports/Entities/RiskInsightReport.cs

View check run for this annotation

Codecov / codecov/patch

src/Core/Dirt/Reports/Entities/RiskInsightReport.cs#L10-L15

Added lines #L10 - L15 were not covered by tests

public void SetNewId()
{
Id = CoreHelpers.GenerateComb();
}

Check warning on line 20 in src/Core/Dirt/Reports/Entities/RiskInsightReport.cs

View check run for this annotation

Codecov / codecov/patch

src/Core/Dirt/Reports/Entities/RiskInsightReport.cs#L18-L20

Added lines #L18 - L20 were not covered by tests
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Bit.Core.Tools.Models.Data;
namespace Bit.Core.Dirt.Reports.Models.Data;

public class MemberAccessDetails
{
Expand Down Expand Up @@ -30,13 +30,13 @@ public class MemberAccessCipherDetails
public bool UsesKeyConnector { get; set; }

/// <summary>
/// The details for the member's collection access depending
/// on the collections and groups they are assigned to
/// The details for the member's collection access depending
/// on the collections and groups they are assigned to
/// </summary>
public IEnumerable<MemberAccessDetails> AccessDetails { get; set; }

/// <summary>
/// A distinct list of the cipher ids associated with
/// A distinct list of the cipher ids associated with
/// the organization member
/// </summary>
public IEnumerable<string> CipherIds { get; set; }
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
using Bit.Core.Exceptions;
using Bit.Core.Dirt.Reports.Entities;
using Bit.Core.Dirt.Reports.ReportFeatures.Interfaces;
using Bit.Core.Dirt.Reports.ReportFeatures.Requests;
using Bit.Core.Dirt.Reports.Repositories;
using Bit.Core.Exceptions;
using Bit.Core.Repositories;
using Bit.Core.Tools.Entities;
using Bit.Core.Tools.ReportFeatures.Interfaces;
using Bit.Core.Tools.ReportFeatures.Requests;
using Bit.Core.Tools.Repositories;

namespace Bit.Core.Tools.ReportFeatures;
namespace Bit.Core.Dirt.Reports.ReportFeatures;

public class AddPasswordHealthReportApplicationCommand : IAddPasswordHealthReportApplicationCommand
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
using Bit.Core.Exceptions;
using Bit.Core.Tools.ReportFeatures.Interfaces;
using Bit.Core.Tools.ReportFeatures.Requests;
using Bit.Core.Tools.Repositories;
using Bit.Core.Dirt.Reports.ReportFeatures.Interfaces;
using Bit.Core.Dirt.Reports.ReportFeatures.Requests;
using Bit.Core.Dirt.Reports.Repositories;
using Bit.Core.Exceptions;

namespace Bit.Core.Tools.ReportFeatures;
namespace Bit.Core.Dirt.Reports.ReportFeatures;

public class DropPasswordHealthReportApplicationCommand : IDropPasswordHealthReportApplicationCommand
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
using Bit.Core.Exceptions;
using Bit.Core.Tools.Entities;
using Bit.Core.Tools.ReportFeatures.Interfaces;
using Bit.Core.Tools.Repositories;
using Bit.Core.Dirt.Reports.Entities;
using Bit.Core.Dirt.Reports.ReportFeatures.Interfaces;
using Bit.Core.Dirt.Reports.Repositories;
using Bit.Core.Exceptions;

namespace Bit.Core.Tools.ReportFeatures;
namespace Bit.Core.Dirt.Reports.ReportFeatures;

public class GetPasswordHealthReportApplicationQuery : IGetPasswordHealthReportApplicationQuery
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using Bit.Core.Tools.Entities;
using Bit.Core.Tools.ReportFeatures.Requests;
using Bit.Core.Dirt.Reports.Entities;
using Bit.Core.Dirt.Reports.ReportFeatures.Requests;

namespace Bit.Core.Tools.ReportFeatures.Interfaces;
namespace Bit.Core.Dirt.Reports.ReportFeatures.Interfaces;

public interface IAddPasswordHealthReportApplicationCommand
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using Bit.Core.Tools.ReportFeatures.Requests;
using Bit.Core.Dirt.Reports.ReportFeatures.Requests;

namespace Bit.Core.Tools.ReportFeatures.Interfaces;
namespace Bit.Core.Dirt.Reports.ReportFeatures.Interfaces;

public interface IDropPasswordHealthReportApplicationCommand
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using Bit.Core.Tools.Entities;
using Bit.Core.Dirt.Reports.Entities;

namespace Bit.Core.Tools.ReportFeatures.Interfaces;
namespace Bit.Core.Dirt.Reports.ReportFeatures.Interfaces;

public interface IGetPasswordHealthReportApplicationQuery
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,21 @@
using Bit.Core.AdminConsole.Entities;
using Bit.Core.AdminConsole.Repositories;
using Bit.Core.Auth.UserFeatures.TwoFactorAuth.Interfaces;
using Bit.Core.Dirt.Reports.Models.Data;
using Bit.Core.Dirt.Reports.ReportFeatures.OrganizationReportMembers.Interfaces;
using Bit.Core.Dirt.Reports.ReportFeatures.Requests;
using Bit.Core.Entities;
using Bit.Core.Models.Data;
using Bit.Core.Models.Data.Organizations;
using Bit.Core.Models.Data.Organizations.OrganizationUsers;
using Bit.Core.Repositories;
using Bit.Core.Services;
using Bit.Core.Tools.Models.Data;
using Bit.Core.Tools.ReportFeatures.OrganizationReportMembers.Interfaces;
using Bit.Core.Tools.ReportFeatures.Requests;
using Bit.Core.Vault.Models.Data;
using Bit.Core.Vault.Queries;
using Core.AdminConsole.OrganizationFeatures.OrganizationUsers.Interfaces;
using Core.AdminConsole.OrganizationFeatures.OrganizationUsers.Requests;

namespace Bit.Core.Tools.ReportFeatures;
namespace Bit.Core.Dirt.Reports.ReportFeatures;

public class MemberAccessCipherDetailsQuery : IMemberAccessCipherDetailsQuery
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using Bit.Core.Tools.Models.Data;
using Bit.Core.Tools.ReportFeatures.Requests;
using Bit.Core.Dirt.Reports.Models.Data;
using Bit.Core.Dirt.Reports.ReportFeatures.Requests;

namespace Bit.Core.Tools.ReportFeatures.OrganizationReportMembers.Interfaces;
namespace Bit.Core.Dirt.Reports.ReportFeatures.OrganizationReportMembers.Interfaces;

public interface IMemberAccessCipherDetailsQuery
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
using Bit.Core.Tools.ReportFeatures.Interfaces;
using Bit.Core.Tools.ReportFeatures.OrganizationReportMembers.Interfaces;
using Bit.Core.Dirt.Reports.ReportFeatures.Interfaces;
using Bit.Core.Dirt.Reports.ReportFeatures.OrganizationReportMembers.Interfaces;
using Microsoft.Extensions.DependencyInjection;

namespace Bit.Core.Tools.ReportFeatures;
namespace Bit.Core.Dirt.Reports.ReportFeatures;

public static class ReportingServiceCollectionExtensions
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Bit.Core.Tools.ReportFeatures.Requests;
namespace Bit.Core.Dirt.Reports.ReportFeatures.Requests;

public class AddPasswordHealthReportApplicationRequest
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Bit.Core.Tools.ReportFeatures.Requests;
namespace Bit.Core.Dirt.Reports.ReportFeatures.Requests;

public class DropPasswordHealthReportApplicationRequest
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace Bit.Core.Tools.ReportFeatures.Requests;
namespace Bit.Core.Dirt.Reports.ReportFeatures.Requests;

public class MemberAccessCipherDetailsRequest
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using Bit.Core.Repositories;
using Bit.Core.Tools.Entities;
using Bit.Core.Dirt.Reports.Entities;
using Bit.Core.Repositories;

namespace Bit.Core.Tools.Repositories;
namespace Bit.Core.Dirt.Reports.Repositories;

public interface IPasswordHealthReportApplicationRepository : IRepository<PasswordHealthReportApplication, Guid>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
using Bit.Core.Dirt.Reports.Entities;
using Bit.Core.Repositories;

namespace Bit.Core.Dirt.Reports.Repositories;

public interface IRiskInsightCriticalApplicationRepository : IRepository<RiskInsightCriticalApplication, Guid>
{
Task<ICollection<RiskInsightCriticalApplication>> GetByOrganizationIdAsync(Guid organizationId);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
using Bit.Core.Dirt.Reports.Entities;
using Bit.Core.Repositories;

namespace Bit.Core.Dirt.Reports.Repositories;

public interface IRiskInsightReportRepository : IRepository<RiskInsightReport, Guid>
{
Task<ICollection<RiskInsightReport>> GetByOrganizationIdAsync(Guid organizationId);
}

Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using Bit.Core.AdminConsole.Repositories;
using Bit.Core.Auth.Repositories;
using Bit.Core.Billing.Repositories;
using Bit.Core.Dirt.Reports.Repositories;
using Bit.Core.KeyManagement.Repositories;
using Bit.Core.NotificationCenter.Repositories;
using Bit.Core.Platform.Installations;
Expand All @@ -11,6 +12,7 @@
using Bit.Infrastructure.Dapper.AdminConsole.Repositories;
using Bit.Infrastructure.Dapper.Auth.Repositories;
using Bit.Infrastructure.Dapper.Billing.Repositories;
using Bit.Infrastructure.Dapper.Dirt;
using Bit.Infrastructure.Dapper.KeyManagement.Repositories;
using Bit.Infrastructure.Dapper.NotificationCenter.Repositories;
using Bit.Infrastructure.Dapper.Platform;
Expand Down Expand Up @@ -67,6 +69,8 @@ public static void AddDapperRepositories(this IServiceCollection services, bool
services.AddSingleton<ISecurityTaskRepository, SecurityTaskRepository>();
services.AddSingleton<IUserAsymmetricKeysRepository, UserAsymmetricKeysRepository>();
services.AddSingleton<IOrganizationInstallationRepository, OrganizationInstallationRepository>();
services.AddSingleton<IRiskInsightReportRepository, RiskInsightReportRepository>();
services.AddSingleton<IRiskInsightCriticalApplicationRepository, RiskInsightCriticalApplicationRepository>();

if (selfHosted)
{
Expand Down
Loading
Loading