[PM-33951] feat(admin-console): Add bulk confirmation and pending auto-confirmation#7661
Conversation
…ion methods for organization users - Implemented ConfirmManyOrganizationUsersAsync to confirm multiple users in a single operation. - Added GetManyPendingAutoConfirmAsync to retrieve users pending automatic confirmation. - Created stored procedures for bulk confirmation and fetching pending users. - Updated relevant repository interfaces and implementations across Dapper and Entity Framework.
Bitwarden Claude Code ReviewOverall Assessment: APPROVE This PR adds the database layer for bulk organization user confirmation: a new Code Review DetailsNo new findings. All previously raised concerns have been addressed in the resolved threads:
|
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #7661 +/- ##
==========================================
+ Coverage 64.86% 64.96% +0.10%
==========================================
Files 2140 2143 +3
Lines 94629 94914 +285
Branches 8445 8492 +47
==========================================
+ Hits 61378 61662 +284
+ Misses 31155 31143 -12
- Partials 2096 2109 +13 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
r-tome
left a comment
There was a problem hiding this comment.
Claude pointed out a few things to fix. Let me know when to review this again
|
There are similar database changes in PR 7527, as well as this one. Do both PR's need a review from dbops or only this one? |
Valid question! @mkincaid-bw -- Sorry for the confusion. @eliykat suggested we split up that PR into smaller PRs like this one that we merge first, then that original PR will be smaller and easier to review since that big chunk of code are broken into pieces. Theoretically speaking, this should be the only one DB ops needs to worry about 😄 |
…ationUsersAsync to IReadOnlyCollection - Updated the ConfirmManyOrganizationUsersAsync method signature in the IOrganizationUserRepository and its implementations to use IReadOnlyCollection instead of IEnumerable for better performance and clarity. - Adjusted related repository methods in both Dapper and Entity Framework implementations to reflect this change. - Added unit tests to ensure the new implementation behaves as expected, including scenarios for mixed batches and idempotency.
There was a problem hiding this comment.
Thanks @JaredScar for splitting this to a separate PR - I cannot tell you how much easier it is to review smaller PRs.
Aside from my comments below, please check the CI runs:
- db integration test is failing - potentially faulty prod or test logic
- db validation is failing - this ensures that the migration scripts match the
src/Sqlfiles - validate new migration naming and order - this is failing because later migrations have overtaken you and you need to bump the dates on your script
More info available in each of the runs, or hit me up on Slack if you have questions.
EDIT: please also add more info to your PR description, e.g.
This PR contains the database changes needed for #7527, split to their own PR to manage PR size.
The PR link is particularly useful to understand what's going on.
…s part of database cleanup.
…dingAutoConfirm methods - Introduced ConfirmManyOrganizationUsersTests to validate the confirmation of multiple organization users, ensuring only accepted users are confirmed and idempotency is maintained. - Added GetManyPendingAutoConfirmTests to verify retrieval of pending auto-confirm users, ensuring only eligible users are returned based on specific criteria. - Removed duplicate test implementations from OrganizationUserRepositoryTests to maintain clarity and organization in the test suite.
eliykat
left a comment
There was a problem hiding this comment.
My changes have been addressed, I can approve once @mkincaid-bw is happy and CI checks are passing.
…e related repository method - Added OrganizationUser_UpdateStatusKey stored procedure to handle updating the status and key of organization users based on a JSON input. - Updated OrganizationUserRepository to call the new stored procedure instead of the previous confirmation procedure. - Modified OrganizationUser_ReadByPendingAutoConfirm stored procedure to filter users by a new type value. - Enhanced integration tests to verify the correct behavior of the updated confirmation logic, ensuring revision dates are accurately tracked.
mkincaid-bw
left a comment
There was a problem hiding this comment.
Couple more minor changes.
…anyStatusKey - Renamed the stored procedure to OrganizationUser_UpdateManyStatusKey to better reflect its functionality of updating multiple organization users' statuses. - Updated the OrganizationUserRepository to call the new stored procedure. - Adjusted the migration script to create or alter the procedure accordingly.
mkincaid-bw
left a comment
There was a problem hiding this comment.
Sorry, I should have flagged the data type changes in the migration script as well. Also have some really minor, petty spacing nit picks 😄
|
Please re-request review when feedback is addressed and CI is passing, thanks. If you need any help just let me know. |
… migration script - Changed the data type of the Key column from NVARCHAR(MAX) to VARCHAR(MAX) in the UsersToUpdate table and the corresponding JSON parsing logic to improve compatibility and performance.
eliykat
left a comment
There was a problem hiding this comment.
Migration dates need bumping again 😢
- Created OrganizationUser_UpdateManyStatusKey to update multiple organization users' statuses based on a JSON input, including handling revision dates and tracking updated IDs for idempotency. - Added OrganizationUser_ReadByPendingAutoConfirm to retrieve organization users pending auto-confirmation based on organization ID and specific status and type filters.
https://github.com/bitwarden/server into ac/pm-33919-db-changes
|



🎟️ Tracking
https://bitwarden.atlassian.net/browse/PM-33951
📔 Objective
This PR contains the database changes needed for #7527, split to their own PR to manage PR size.