Skip to content

Commit 650a9fd

Browse files
committed
db updates
1 parent ff93de8 commit 650a9fd

17 files changed

Lines changed: 150 additions & 120 deletions

File tree

src/Core/AdminConsole/Repositories/IOrganizationUserRepository.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -148,16 +148,17 @@ UpdateEncryptedDataForKeyRotation UpdateForKeyRotation(Guid userId,
148148
Func<DbConnection, DbTransaction, Task> BuildConfirmOwnerAction(OrganizationUser organizationUser);
149149

150150
/// <summary>
151-
/// Returns a delegate that sets organization users to Accepted status and clears Key.
151+
/// Returns a delegate that sets organization user status to accepted and clears
152+
/// their copy of the shared organization key.
152153
/// Used during key regeneration when the user's public key changes.
153154
/// </summary>
154155
/// <param name="organizationUsers">Organization users to update</param>
155-
DatabaseTransactionAction SetStatusToAcceptedForKeyRegeneration(IEnumerable<OrganizationUser> organizationUsers);
156+
DatabaseTransactionAction SetStatusToAcceptedForPublicKeyPairRegeneration(IEnumerable<OrganizationUser> organizationUsers);
156157

157158
/// <summary>
158159
/// Returns a delegate that deletes organization users and their associated data.
159160
/// Used during key regeneration when the user's public key changes.
160161
/// </summary>
161162
/// <param name="organizationUsers">Organization users to delete</param>
162-
DatabaseTransactionAction RemoveForKeyRegeneration(IEnumerable<OrganizationUser> organizationUsers);
163+
DatabaseTransactionAction RemoveForPublicKeyPairRegeneration(IEnumerable<OrganizationUser> organizationUsers);
163164
}

src/Core/Auth/Repositories/IEmergencyAccessRepository.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ UpdateEncryptedDataForKeyRotation UpdateForKeyRotation(Guid grantorId,
4848
/// Used during key regeneration when the grantee's public key changes.
4949
/// </summary>
5050
/// <param name="emergencyAccesses">Emergency access records to update</param>
51-
DatabaseTransactionAction SetStatusToAcceptedForKeyRegeneration(IEnumerable<EmergencyAccess> emergencyAccesses);
51+
DatabaseTransactionAction SetStatusToAcceptedForPublicKeyPairRegeneration(IEnumerable<EmergencyAccess> emergencyAccesses);
5252

5353
/// <summary>
5454
/// Deletes multiple emergency access records by their IDs

src/Core/KeyManagement/Commands/RegenerateUserAsymmetricKeysCommand.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ or EmergencyAccessStatusType.RecoveryInitiated
7979
if (eaToReset.Count > 0)
8080
{
8181
updateDataActions.Add(
82-
_emergencyAccessRepository.SetStatusToAcceptedForKeyRegeneration(eaToReset));
82+
_emergencyAccessRepository.SetStatusToAcceptedForPublicKeyPairRegeneration(eaToReset));
8383
}
8484

8585
var orgUsersToReset = usersOrganizationAccounts
@@ -88,7 +88,7 @@ or EmergencyAccessStatusType.RecoveryInitiated
8888
if (orgUsersToReset.Count > 0)
8989
{
9090
updateDataActions.Add(
91-
_organizationUserRepository.SetStatusToAcceptedForKeyRegeneration(orgUsersToReset));
91+
_organizationUserRepository.SetStatusToAcceptedForPublicKeyPairRegeneration(orgUsersToReset));
9292
}
9393

9494
var orgUsersToRemove = usersOrganizationAccounts
@@ -97,7 +97,7 @@ or EmergencyAccessStatusType.RecoveryInitiated
9797
if (orgUsersToRemove.Count > 0)
9898
{
9999
updateDataActions.Add(
100-
_organizationUserRepository.RemoveForKeyRegeneration(orgUsersToRemove));
100+
_organizationUserRepository.RemoveForPublicKeyPairRegeneration(orgUsersToRemove));
101101
}
102102

103103
await _userAsymmetricKeysRepository.RegenerateUserAsymmetricKeysAsync(

src/Infrastructure.Dapper/AdminConsole/Repositories/OrganizationUserRepository.cs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -745,7 +745,7 @@ await connection.ExecuteAsync(
745745
}
746746

747747
/// <inheritdoc />
748-
public DatabaseTransactionAction SetStatusToAcceptedForKeyRegeneration(IEnumerable<OrganizationUser> organizationUsers)
748+
public DatabaseTransactionAction SetStatusToAcceptedForPublicKeyPairRegeneration(IEnumerable<OrganizationUser> organizationUsers)
749749
{
750750
return async (connection, transaction) =>
751751
{
@@ -755,16 +755,23 @@ public DatabaseTransactionAction SetStatusToAcceptedForKeyRegeneration(IEnumerab
755755
return;
756756
}
757757

758+
var utcNow = DateTime.UtcNow;
759+
758760
await connection.ExecuteAsync(
759-
"[dbo].[OrganizationUser_SetStatusToAccepted]",
760-
new { OrganizationUserIds = ids.ToGuidIdArrayTVP() },
761+
"[dbo].[OrganizationUser_UpdateManySetStatus]",
762+
new
763+
{
764+
OrganizationUserIds = ids.ToGuidIdArrayTVP(),
765+
Status = (short)OrganizationUserStatusType.Accepted,
766+
RevisionDate = utcNow
767+
},
761768
transaction: transaction,
762769
commandType: CommandType.StoredProcedure);
763770
};
764771
}
765772

766773
/// <inheritdoc />
767-
public DatabaseTransactionAction RemoveForKeyRegeneration(IEnumerable<OrganizationUser> organizationUsers)
774+
public DatabaseTransactionAction RemoveForPublicKeyPairRegeneration(IEnumerable<OrganizationUser> organizationUsers)
768775
{
769776
return async (connection, transaction) =>
770777
{

src/Infrastructure.Dapper/Auth/Repositories/EmergencyAccessRepository.cs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System.Data;
22
using Bit.Core.Auth.Entities;
3+
using Bit.Core.Auth.Enums;
34
using Bit.Core.Auth.Models.Data;
45
using Bit.Core.KeyManagement.UserKey;
56
using Bit.Core.Repositories;
@@ -178,7 +179,7 @@ INNER JOIN
178179
}
179180

180181
/// <inheritdoc />
181-
public DatabaseTransactionAction SetStatusToAcceptedForKeyRegeneration(IEnumerable<EmergencyAccess> emergencyAccesses)
182+
public DatabaseTransactionAction SetStatusToAcceptedForPublicKeyPairRegeneration(IEnumerable<EmergencyAccess> emergencyAccesses)
182183
{
183184
return async (connection, transaction) =>
184185
{
@@ -188,9 +189,16 @@ public DatabaseTransactionAction SetStatusToAcceptedForKeyRegeneration(IEnumerab
188189
return;
189190
}
190191

192+
var utcNow = DateTime.UtcNow;
193+
191194
await connection.ExecuteAsync(
192-
"[dbo].[EmergencyAccess_SetStatusToAccepted]",
193-
new { Ids = ids.ToGuidIdArrayTVP() },
195+
"[dbo].[EmergencyAccess_UpdateManySetStatus]",
196+
new
197+
{
198+
Ids = ids.ToGuidIdArrayTVP(),
199+
Status = (byte)EmergencyAccessStatusType.Accepted,
200+
RevisionDate = utcNow
201+
},
194202
transaction: transaction,
195203
commandType: CommandType.StoredProcedure);
196204
};

src/Infrastructure.EntityFramework/AdminConsole/Repositories/OrganizationUserRepository.cs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1060,7 +1060,7 @@ public Func<DbConnection, DbTransaction, Task> BuildConfirmOwnerAction(Core.Enti
10601060
}
10611061

10621062
/// <inheritdoc />
1063-
public DatabaseTransactionAction SetStatusToAcceptedForKeyRegeneration(
1063+
public DatabaseTransactionAction SetStatusToAcceptedForPublicKeyPairRegeneration(
10641064
IEnumerable<Core.Entities.OrganizationUser> organizationUsers)
10651065
{
10661066
return async (connection, transaction) =>
@@ -1081,13 +1081,11 @@ await dbContext.OrganizationUsers
10811081
.SetProperty(ou => ou.Status, OrganizationUserStatusType.Accepted)
10821082
.SetProperty(ou => ou.Key, (string?)null)
10831083
.SetProperty(ou => ou.RevisionDate, utcNow));
1084-
1085-
await dbContext.UserBumpAccountRevisionDateByOrganizationUserIdsAsync(ids);
10861084
};
10871085
}
10881086

10891087
/// <inheritdoc />
1090-
public DatabaseTransactionAction RemoveForKeyRegeneration(
1088+
public DatabaseTransactionAction RemoveForPublicKeyPairRegeneration(
10911089
IEnumerable<Core.Entities.OrganizationUser> organizationUsers)
10921090
{
10931091
return async (connection, transaction) =>
@@ -1101,8 +1099,6 @@ public DatabaseTransactionAction RemoveForKeyRegeneration(
11011099
using var scope = ServiceScopeFactory.CreateScope();
11021100
var dbContext = GetTransactionalDatabaseContext(scope, connection, transaction);
11031101

1104-
await dbContext.UserBumpAccountRevisionDateByOrganizationUserIdsAsync(ids);
1105-
11061102
await dbContext.CollectionUsers
11071103
.Where(cu => ids.Contains(cu.OrganizationUserId))
11081104
.ExecuteDeleteAsync();

src/Infrastructure.EntityFramework/Auth/Repositories/EmergencyAccessRepository.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ public UpdateEncryptedDataForKeyRotation UpdateForKeyRotation(
178178
}
179179

180180
/// <inheritdoc />
181-
public DatabaseTransactionAction SetStatusToAcceptedForKeyRegeneration(
181+
public DatabaseTransactionAction SetStatusToAcceptedForPublicKeyPairRegeneration(
182182
IEnumerable<Core.Auth.Entities.EmergencyAccess> emergencyAccesses)
183183
{
184184
return async (connection, transaction) =>

src/Sql/dbo/Auth/Stored Procedures/EmergencyAccess_SetStatusToAccepted.sql

Lines changed: 0 additions & 16 deletions
This file was deleted.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
CREATE PROCEDURE [dbo].[EmergencyAccess_UpdateManySetStatus]
2+
@Ids [dbo].[GuidIdArray] READONLY,
3+
@Status TINYINT,
4+
@RevisionDate DATETIME2(7)
5+
AS
6+
BEGIN
7+
SET NOCOUNT ON
8+
9+
UPDATE
10+
EA
11+
SET
12+
EA.[Status] = @Status,
13+
EA.[KeyEncrypted] = NULL,
14+
EA.[RevisionDate] = @RevisionDate
15+
FROM
16+
[dbo].[EmergencyAccess] EA
17+
INNER JOIN
18+
@Ids I ON I.[Id] = EA.[Id]
19+
END
20+
GO

src/Sql/dbo/Stored Procedures/OrganizationUser_SetStatusToAccepted.sql

Lines changed: 0 additions & 18 deletions
This file was deleted.

0 commit comments

Comments
 (0)