mirror of
https://github.com/bitwarden/server
synced 2025-12-15 07:43:54 +00:00
[PM-22405] Add debugging instrument for finding invalid OrganizationUser state. (#5955)
This commit is contained in:
@@ -3,6 +3,7 @@ using System.Text.Json;
|
||||
using Bit.Core.AdminConsole.Entities;
|
||||
using Bit.Core.AdminConsole.Enums;
|
||||
using Bit.Core.AdminConsole.OrganizationFeatures.OrganizationUsers.InviteUsers.Models;
|
||||
using Bit.Core.AdminConsole.Utilities.DebuggingInstruments;
|
||||
using Bit.Core.Entities;
|
||||
using Bit.Core.Enums;
|
||||
using Bit.Core.KeyManagement.UserKey;
|
||||
@@ -12,6 +13,7 @@ using Bit.Core.Repositories;
|
||||
using Bit.Core.Settings;
|
||||
using Dapper;
|
||||
using Microsoft.Data.SqlClient;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
#nullable enable
|
||||
|
||||
@@ -25,8 +27,9 @@ public class OrganizationUserRepository : Repository<OrganizationUser, Guid>, IO
|
||||
/// https://github.com/dotnet/SqlClient/issues/54
|
||||
/// </summary>
|
||||
private string _marsConnectionString;
|
||||
private readonly ILogger<OrganizationUserRepository> _logger;
|
||||
|
||||
public OrganizationUserRepository(GlobalSettings globalSettings)
|
||||
public OrganizationUserRepository(GlobalSettings globalSettings, ILogger<OrganizationUserRepository> logger)
|
||||
: base(globalSettings.SqlServer.ConnectionString, globalSettings.SqlServer.ReadOnlyConnectionString)
|
||||
{
|
||||
var builder = new SqlConnectionStringBuilder(ConnectionString)
|
||||
@@ -34,6 +37,7 @@ public class OrganizationUserRepository : Repository<OrganizationUser, Guid>, IO
|
||||
MultipleActiveResultSets = true,
|
||||
};
|
||||
_marsConnectionString = builder.ToString();
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
public async Task<int> GetCountByOrganizationIdAsync(Guid organizationId)
|
||||
@@ -305,6 +309,8 @@ public class OrganizationUserRepository : Repository<OrganizationUser, Guid>, IO
|
||||
|
||||
public async Task<Guid> CreateAsync(OrganizationUser obj, IEnumerable<CollectionAccessSelection> collections)
|
||||
{
|
||||
_logger.LogUserInviteStateDiagnostics(obj);
|
||||
|
||||
obj.SetNewId();
|
||||
var objWithCollections = JsonSerializer.Deserialize<OrganizationUserWithCollections>(
|
||||
JsonSerializer.Serialize(obj))!;
|
||||
@@ -323,6 +329,8 @@ public class OrganizationUserRepository : Repository<OrganizationUser, Guid>, IO
|
||||
|
||||
public async Task ReplaceAsync(OrganizationUser obj, IEnumerable<CollectionAccessSelection> collections)
|
||||
{
|
||||
_logger.LogUserInviteStateDiagnostics(obj);
|
||||
|
||||
var objWithCollections = JsonSerializer.Deserialize<OrganizationUserWithCollections>(
|
||||
JsonSerializer.Serialize(obj))!;
|
||||
objWithCollections.Collections = collections.ToArrayTVP();
|
||||
@@ -406,6 +414,8 @@ public class OrganizationUserRepository : Repository<OrganizationUser, Guid>, IO
|
||||
|
||||
public async Task<ICollection<Guid>?> CreateManyAsync(IEnumerable<OrganizationUser> organizationUsers)
|
||||
{
|
||||
_logger.LogUserInviteStateDiagnostics(organizationUsers);
|
||||
|
||||
organizationUsers = organizationUsers.ToList();
|
||||
if (!organizationUsers.Any())
|
||||
{
|
||||
@@ -430,6 +440,8 @@ public class OrganizationUserRepository : Repository<OrganizationUser, Guid>, IO
|
||||
|
||||
public async Task ReplaceManyAsync(IEnumerable<OrganizationUser> organizationUsers)
|
||||
{
|
||||
_logger.LogUserInviteStateDiagnostics(organizationUsers);
|
||||
|
||||
organizationUsers = organizationUsers.ToList();
|
||||
if (!organizationUsers.Any())
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user