Skip to content
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

Expose an endpoint for bulk processing of organization auth requests #4077

Conversation

addisonbeck
Copy link
Contributor

@addisonbeck addisonbeck commented May 10, 2024

Type of change

- [ ] Bug fix
- [x] New feature development
- [ ] Tech debt (refactoring, code cleanup, dependency upgrades, etc)
- [ ] Build/deploy pipeline (DevOps)
- [ ] Other

Objective

In order to facilitate a new batch approval process for organization auth requests in the web vault and CLI a new endpoint needs to be added to the API that accepts a list or auth request updates and processes them.

Code changes

The changes here are pretty straight forward, most of the work has already happened on lower levels of the project. This PR simply adds a new endpoint, request model, and some tests. A feature flag has also been added at this stage.

References

  • AC-2301 is the Jira ticket for this work.
  • This PR builds on #4064 which implements the command layer functionality for supporting this operation.
  • There is also #4053 which builds database and repository layer support for bulk updating auth request table objects.

Copy link
Contributor

github-actions bot commented May 10, 2024

Logo
Checkmarx One – Scan Summary & Details6afae99a-4c27-4c94-8e7b-30dc44ac284e

Fixed Issues

Severity Issue Source File / Package
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [628](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L628)
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [628](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L628)
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [628](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L628)
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [628](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L628)
MEDIUM CSRF /src/Api/AdminConsole/Controllers/ProvidersController.cs: [82](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Controllers/ProvidersController.cs# L82)
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [607](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L607)
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [607](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L607)
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [607](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L607)
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [607](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L607)
MEDIUM CSRF /src/Api/AdminConsole/Controllers/GroupsController.cs: [132](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Controllers/GroupsController.cs# L132)
MEDIUM CSRF /src/Api/AdminConsole/Controllers/ProvidersController.cs: [143](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Controllers/ProvidersController.cs# L143)
MEDIUM CSRF /src/Api/SecretsManager/Controllers/AccessPoliciesController.cs: [229](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/SecretsManager/Controllers/AccessPoliciesController.cs# L229)
MEDIUM CSRF /src/Admin/AdminConsole/Controllers/ProvidersController.cs: [319](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Admin/AdminConsole/Controllers/ProvidersController.cs# L319)
MEDIUM CSRF /src/Api/AdminConsole/Controllers/GroupsController.cs: [163](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Controllers/GroupsController.cs# L163)
MEDIUM CSRF /src/Api/AdminConsole/Controllers/GroupsController.cs: [163](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Controllers/GroupsController.cs# L163)
MEDIUM CSRF /src/Api/Billing/Controllers/ProviderClientsController.cs: [28](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Billing/Controllers/ProviderClientsController.cs# L28)
MEDIUM CSRF /src/Api/AdminConsole/Controllers/OrganizationUsersController.cs: [205](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Controllers/OrganizationUsersController.cs# L205)
MEDIUM CSRF /src/Api/AdminConsole/Controllers/OrganizationUsersController.cs: [348](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Controllers/OrganizationUsersController.cs# L348)
MEDIUM CSRF /src/Api/AdminConsole/Controllers/OrganizationUsersController.cs: [348](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Controllers/OrganizationUsersController.cs# L348)
MEDIUM CSRF /src/Api/Auth/Controllers/AccountsController.cs: [665](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Auth/Controllers/AccountsController.cs# L665)
MEDIUM CSRF /src/Api/Auth/Controllers/AccountsController.cs: [641](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Auth/Controllers/AccountsController.cs# L641)
MEDIUM CSRF /src/Api/Auth/Controllers/AccountsController.cs: [707](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Auth/Controllers/AccountsController.cs# L707)
MEDIUM CSRF /src/Api/Vault/Controllers/FoldersController.cs: [45](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/FoldersController.cs# L45)
MEDIUM CSRF /src/Api/Controllers/SelfHosted/SelfHostedOrganizationLicensesController.cs: [51](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Controllers/SelfHosted/SelfHostedOrganizationLicensesController.cs# L51)
MEDIUM CSRF /src/Api/Controllers/UsersController.cs: [22](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Controllers/UsersController.cs# L22)
MEDIUM CSRF /src/Api/Controllers/DevicesController.cs: [70](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Controllers/DevicesController.cs# L70)
MEDIUM CSRF /src/Api/Controllers/DevicesController.cs: [57](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Controllers/DevicesController.cs# L57)
MEDIUM CSRF /src/Api/AdminConsole/Public/Controllers/PoliciesController.cs: [69](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Public/Controllers/PoliciesController.cs# L69)
MEDIUM CSRF /src/Api/AdminConsole/Public/Controllers/PoliciesController.cs: [49](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Public/Controllers/PoliciesController.cs# L49)
MEDIUM CSRF /src/Api/AdminConsole/Public/Controllers/OrganizationController.cs: [42](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Public/Controllers/OrganizationController.cs# L42)
MEDIUM CSRF /src/Api/AdminConsole/Public/Controllers/GroupsController.cs: [92](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Public/Controllers/GroupsController.cs# L92)
MEDIUM CSRF /src/Api/AdminConsole/Public/Controllers/GroupsController.cs: [49](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Public/Controllers/GroupsController.cs# L49)
MEDIUM CSRF /src/Api/AdminConsole/Controllers/ProviderUsersController.cs: [142](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Controllers/ProviderUsersController.cs# L142)
MEDIUM CSRF /src/Api/AdminConsole/Controllers/PoliciesController.cs: [148](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Controllers/PoliciesController.cs# L148)
MEDIUM CSRF /src/Api/AdminConsole/Controllers/PoliciesController.cs: [78](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Controllers/PoliciesController.cs# L78)
MEDIUM CSRF /src/Api/AdminConsole/Controllers/PoliciesController.cs: [61](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Controllers/PoliciesController.cs# L61)
MEDIUM CSRF /bitwarden_license/src/Sso/Controllers/AccountController.cs: [163](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//bitwarden_license/src/Sso/Controllers/AccountController.cs# L163)
MEDIUM CSRF /bitwarden_license/src/Sso/Controllers/AccountController.cs: [96](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//bitwarden_license/src/Sso/Controllers/AccountController.cs# L96)
MEDIUM CSRF /bitwarden_license/src/Scim/Controllers/v2/UsersController.cs: [50](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//bitwarden_license/src/Scim/Controllers/v2/UsersController.cs# L50)
MEDIUM CSRF /src/Api/AdminConsole/Public/Controllers/GroupsController.cs: [161](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Public/Controllers/GroupsController.cs# L161)
MEDIUM CSRF /src/Api/Auth/Controllers/EmergencyAccessController.cs: [159](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Auth/Controllers/EmergencyAccessController.cs# L159)
MEDIUM CSRF /bitwarden_license/src/Scim/Controllers/v2/GroupsController.cs: [98](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//bitwarden_license/src/Scim/Controllers/v2/GroupsController.cs# L98)
MEDIUM CSRF /bitwarden_license/src/Scim/Controllers/v2/GroupsController.cs: [88](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//bitwarden_license/src/Scim/Controllers/v2/GroupsController.cs# L88)
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [1073](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L1073)
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [1073](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L1073)
MEDIUM CSRF /src/Api/AdminConsole/Controllers/OrganizationUsersController.cs: [464](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Controllers/OrganizationUsersController.cs# L464)
MEDIUM CSRF /src/Api/AdminConsole/Controllers/OrganizationUsersController.cs: [316](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Controllers/OrganizationUsersController.cs# L316)
MEDIUM CSRF /src/Api/Auth/Controllers/AccountsController.cs: [541](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Auth/Controllers/AccountsController.cs# L541)
MEDIUM CSRF /src/Api/Auth/Controllers/AccountsController.cs: [428](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Auth/Controllers/AccountsController.cs# L428)
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [222](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L222)
MEDIUM CSRF /src/Api/Controllers/CollectionsController.cs: [303](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Controllers/CollectionsController.cs# L303)
MEDIUM CSRF /src/Api/Controllers/CollectionsController.cs: [411](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Controllers/CollectionsController.cs# L411)
MEDIUM CSRF /src/Api/Controllers/CollectionsController.cs: [323](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Controllers/CollectionsController.cs# L323)
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [159](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L159)
MEDIUM CSRF /src/Api/AdminConsole/Public/Controllers/MembersController.cs: [150](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Public/Controllers/MembersController.cs# L150)
MEDIUM CSRF /src/Api/AdminConsole/Public/Controllers/MembersController.cs: [150](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Public/Controllers/MembersController.cs# L150)
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [855](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L855)
MEDIUM CSRF /src/Api/AdminConsole/Controllers/ProviderUsersController.cs: [188](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Controllers/ProviderUsersController.cs# L188)
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [570](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L570)
MEDIUM CSRF /src/Api/AdminConsole/Controllers/GroupsController.cs: [260](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Controllers/GroupsController.cs# L260)
MEDIUM CSRF /src/Api/Controllers/CollectionsController.cs: [375](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Controllers/CollectionsController.cs# L375)
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [841](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L841)
MEDIUM CSRF /src/Api/Auth/Controllers/AccountsController.cs: [217](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Auth/Controllers/AccountsController.cs# L217)
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [193](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L193)
MEDIUM CSRF /src/Api/AdminConsole/Controllers/ProviderUsersController.cs: [175](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Controllers/ProviderUsersController.cs# L175)
MEDIUM CSRF /src/Api/Auth/Controllers/AccountsController.cs: [283](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Auth/Controllers/AccountsController.cs# L283)
MEDIUM CSRF /src/Api/AdminConsole/Controllers/OrganizationUsersController.cs: [261](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Controllers/OrganizationUsersController.cs# L261)
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [928](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L928)
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [174](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L174)
MEDIUM CSRF /src/Api/Auth/Controllers/AccountsController.cs: [357](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Auth/Controllers/AccountsController.cs# L357)
MEDIUM CSRF /src/Api/AdminConsole/Controllers/OrganizationUsersController.cs: [301](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Controllers/OrganizationUsersController.cs# L301)
MEDIUM CSRF /src/Api/Auth/Controllers/AccountsController.cs: [920](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Auth/Controllers/AccountsController.cs# L920)
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [778](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L778)
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [1130](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L1130)
MEDIUM CSRF /src/Api/Auth/Controllers/AccountsController.cs: [568](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Auth/Controllers/AccountsController.cs# L568)
MEDIUM CSRF /src/Api/Auth/Controllers/AccountsController.cs: [861](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Auth/Controllers/AccountsController.cs# L861)
MEDIUM CSRF /src/Api/AdminConsole/Public/Controllers/GroupsController.cs: [133](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Public/Controllers/GroupsController.cs# L133)
MEDIUM CSRF /src/Api/Auth/Controllers/AccountsController.cs: [403](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Auth/Controllers/AccountsController.cs# L403)
MEDIUM CSRF /src/Api/Controllers/CollectionsController.cs: [411](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Controllers/CollectionsController.cs# L411)
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [1047](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L1047)
MEDIUM CSRF /src/Admin/AdminConsole/Controllers/OrganizationsController.cs: [334](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Admin/AdminConsole/Controllers/OrganizationsController.cs# L334)
MEDIUM CSRF /src/Admin/AdminConsole/Controllers/ProvidersController.cs: [243](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Admin/AdminConsole/Controllers/ProvidersController.cs# L243)
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [1047](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L1047)
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [816](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L816)
MEDIUM CSRF /src/Api/Auth/Controllers/AccountsController.cs: [770](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Auth/Controllers/AccountsController.cs# L770)
MEDIUM CSRF /src/Api/AdminConsole/Controllers/GroupsController.cs: [81](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Controllers/GroupsController.cs# L81)
MEDIUM CSRF /src/Api/AdminConsole/Controllers/GroupsController.cs: [118](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Controllers/GroupsController.cs# L118)
MEDIUM CSRF /src/Api/AdminConsole/Controllers/OrganizationsController.cs: [118](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Controllers/OrganizationsController.cs# L118)
MEDIUM CSRF /src/Api/AdminConsole/Controllers/OrganizationsController.cs: [315](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Controllers/OrganizationsController.cs# L315)
MEDIUM CSRF /src/Api/AdminConsole/Public/Controllers/OrganizationController.cs: [42](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Public/Controllers/OrganizationController.cs# L42)
MEDIUM CSRF /src/Api/AdminConsole/Controllers/OrganizationUsersController.cs: [87](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Controllers/OrganizationUsersController.cs# L87)
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [1096](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L1096)
MEDIUM CSRF /src/Api/Controllers/CollectionsController.cs: [303](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Controllers/CollectionsController.cs# L303)
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [1150](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L1150)
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [657](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L657)
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [657](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L657)
MEDIUM CSRF /src/Api/AdminConsole/Controllers/OrganizationsController.cs: [315](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Controllers/OrganizationsController.cs# L315)
MEDIUM CSRF /src/Api/AdminConsole/Controllers/OrganizationsController.cs: [315](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Controllers/OrganizationsController.cs# L315)
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [222](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L222)
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [570](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L570)
MEDIUM CSRF /src/Api/Auth/Controllers/AccountsController.cs: [308](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Auth/Controllers/AccountsController.cs# L308)
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [193](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L193)
MEDIUM CSRF /src/Api/AdminConsole/Controllers/OrganizationUsersController.cs: [261](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Controllers/OrganizationUsersController.cs# L261)
MEDIUM CSRF /src/Api/AdminConsole/Controllers/OrganizationsController.cs: [315](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Controllers/OrganizationsController.cs# L315)
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [583](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L583)
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [583](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L583)
MEDIUM CSRF /src/Api/AdminConsole/Controllers/OrganizationUsersController.cs: [301](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Controllers/OrganizationUsersController.cs# L301)
MEDIUM CSRF /src/Api/AdminConsole/Public/Controllers/MembersController.cs: [187](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Public/Controllers/MembersController.cs# L187)
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [752](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L752)
MEDIUM CSRF /src/Api/Auth/Controllers/TwoFactorController.cs: [403](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Auth/Controllers/TwoFactorController.cs# L403)
MEDIUM CSRF /src/Api/Auth/Controllers/AccountsController.cs: [526](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Auth/Controllers/AccountsController.cs# L526)
MEDIUM CSRF /src/Api/AdminConsole/Controllers/OrganizationsController.cs: [315](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Controllers/OrganizationsController.cs# L315)
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [144](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L144)
MEDIUM CSRF /src/Api/AdminConsole/Controllers/OrganizationUsersController.cs: [233](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Controllers/OrganizationUsersController.cs# L233)
MEDIUM CSRF /src/Api/AdminConsole/Controllers/OrganizationUsersController.cs: [315](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Controllers/OrganizationUsersController.cs# L315)
MEDIUM CSRF /src/Api/AdminConsole/Controllers/OrganizationUsersController.cs: [333](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Controllers/OrganizationUsersController.cs# L333)
MEDIUM CSRF /src/Api/AdminConsole/Controllers/ProviderOrganizationsController.cs: [48](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Controllers/ProviderOrganizationsController.cs# L48)
MEDIUM CSRF /src/Api/AdminConsole/Public/Controllers/OrganizationController.cs: [42](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Public/Controllers/OrganizationController.cs# L42)
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [1096](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L1096)
MEDIUM CSRF /src/Api/AdminConsole/Public/Controllers/OrganizationController.cs: [42](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Public/Controllers/OrganizationController.cs# L42)
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [961](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L961)
MEDIUM CSRF /src/Api/Controllers/SettingsController.cs: [36](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Controllers/SettingsController.cs# L36)
MEDIUM CSRF /src/Api/Controllers/CollectionsController.cs: [375](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Controllers/CollectionsController.cs# L375)
MEDIUM CSRF /src/Api/AdminConsole/Controllers/GroupsController.cs: [277](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Controllers/GroupsController.cs# L277)
MEDIUM CSRF /src/Api/Auth/Controllers/AccountsController.cs: [515](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Auth/Controllers/AccountsController.cs# L515)
MEDIUM CSRF /src/Api/Tools/Controllers/ImportCiphersController.cs: [50](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Tools/Controllers/ImportCiphersController.cs# L50)
MEDIUM CSRF /src/Api/AdminConsole/Public/Controllers/MembersController.cs: [127](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Public/Controllers/MembersController.cs# L127)
MEDIUM CSRF /src/Api/AdminConsole/Public/Controllers/MembersController.cs: [59](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Public/Controllers/MembersController.cs# L59)
MEDIUM CSRF /src/Api/Public/Controllers/CollectionsController.cs: [64](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Public/Controllers/CollectionsController.cs# L64)
MEDIUM CSRF /src/Api/Controllers/CollectionsController.cs: [156](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Controllers/CollectionsController.cs# L156)
MEDIUM CSRF /src/Api/Controllers/CollectionsController.cs: [187](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Controllers/CollectionsController.cs# L187)
MEDIUM CSRF /src/Api/Controllers/CollectionsController.cs: [196](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Controllers/CollectionsController.cs# L196)
MEDIUM CSRF /src/Identity/Controllers/AccountsController.cs: [72](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Identity/Controllers/AccountsController.cs# L72)
MEDIUM CSRF /src/Identity/Controllers/AccountsController.cs: [50](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Identity/Controllers/AccountsController.cs# L50)
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [992](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L992)
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [125](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L125)
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [111](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L111)
MEDIUM CSRF /src/Api/Tools/Controllers/ImportCiphersController.cs: [66](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Tools/Controllers/ImportCiphersController.cs# L66)
MEDIUM CSRF /src/Admin/AdminConsole/Controllers/ProviderOrganizationsController.cs: [35](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Admin/AdminConsole/Controllers/ProviderOrganizationsController.cs# L35)
MEDIUM CSRF /src/Api/Auth/Controllers/WebAuthnController.cs: [130](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Auth/Controllers/WebAuthnController.cs# L130)
MEDIUM CSRF /src/Api/Auth/Controllers/WebAuthnController.cs: [101](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Auth/Controllers/WebAuthnController.cs# L101)
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [709](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L709)
MEDIUM CSRF /src/Api/Vault/Controllers/CiphersController.cs: [1150](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Vault/Controllers/CiphersController.cs# L1150)
MEDIUM CSRF /src/Api/AdminConsole/Controllers/OrganizationUsersController.cs: [118](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Controllers/OrganizationUsersController.cs# L118)
MEDIUM CSRF /src/Api/AdminConsole/Controllers/GroupsController.cs: [93](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Controllers/GroupsController.cs# L93)
MEDIUM CSRF /src/Api/Controllers/CollectionsController.cs: [375](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/Controllers/CollectionsController.cs# L375)
MEDIUM CSRF /src/Api/AdminConsole/Controllers/OrganizationDomainController.cs: [75](https://github.com/bitwarden/server/blob/ac/addison/ac-2301/bulk-device-approval-api//src/Api/AdminConsole/Controllers/OrganizationDomainController.cs# L75)
MEDIUM CSRF

More results are available on AST platform

@addisonbeck addisonbeck force-pushed the ac/addison/ac-2301/bulk-device-approval-api branch from 080c2c9 to 3a85a7c Compare May 10, 2024 23:25
@addisonbeck addisonbeck force-pushed the ac/addison/ac-2301/bulk-device-approval-service branch 14 times, most recently from 8b8099c to 1a754f5 Compare May 13, 2024 00:35
@addisonbeck addisonbeck force-pushed the ac/addison/ac-2301/bulk-device-approval-api branch from 3a85a7c to e59e335 Compare May 13, 2024 00:50
Copy link

codecov bot commented May 13, 2024

Codecov Report

Attention: Patch coverage is 46.66667% with 8 lines in your changes are missing coverage. Please review.

Please upload report for BASE (ac/addison/ac-2301/bulk-device-approval-service@c11189a). Learn more about missing BASE report.

Current head 777c92e differs from pull request most recent head 098b586

Please upload reports for the commit 098b586 to get more accurate results.

Files Patch % Lines
...t/OrganizationAuthRequestUpdateManyRequestModel.cs 27.27% 8 Missing ⚠️
Additional details and impacted files
@@                                Coverage Diff                                 @@
##             ac/addison/ac-2301/bulk-device-approval-service    #4077   +/-   ##
==================================================================================
  Coverage                                                   ?   39.26%           
==================================================================================
  Files                                                      ?     1215           
  Lines                                                      ?    58454           
  Branches                                                   ?     5376           
==================================================================================
  Hits                                                       ?    22950           
  Misses                                                     ?    34434           
  Partials                                                   ?     1070           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@addisonbeck addisonbeck force-pushed the ac/addison/ac-2301/bulk-device-approval-service branch from 1a754f5 to 603cc6d Compare May 13, 2024 02:48
Comment on lines 87 to 93
model.Select(x =>
new OrganizationAuthRequestUpdateCommandModel
{
Id = x.Id,
Key = x.Key,
Approved = x.Approved
}
Copy link
Member

@eliykat eliykat May 13, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like putting this in the request class itself: model.Select(x => x.ToOrganizationAuthRequestUpdate()). We do this elsewhere as well.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Implemented as suggested on 9771863

Copy link
Member

@eliykat eliykat May 13, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Similar comment as on the command PR, but here I think it's actually fairly critical that we unit test the permissions check on the endpoint itself, and not (only) via the ValidateaAdminRequest method. As a security matter, we want to ensure that our endpoints are checking user permissions, and you're not really assured of that unless you're testing the endpoint.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Implemented as suggested on 2587e5d

@addisonbeck addisonbeck force-pushed the ac/addison/ac-2301/bulk-device-approval-service branch 5 times, most recently from fd4eb2f to 5942db0 Compare May 17, 2024 22:28
@addisonbeck addisonbeck force-pushed the ac/addison/ac-2301/bulk-device-approval-service branch from 7f61948 to b84c312 Compare May 22, 2024 17:29
@addisonbeck addisonbeck force-pushed the ac/addison/ac-2301/bulk-device-approval-api branch from 6357076 to fb11acb Compare May 22, 2024 17:36
@addisonbeck addisonbeck changed the base branch from ac/addison/ac-2301/bulk-device-approval-service to main May 22, 2024 17:37
@addisonbeck addisonbeck dismissed r-tome’s stale review May 22, 2024 17:37

The base branch was changed.

@addisonbeck addisonbeck changed the base branch from main to ac/addison/ac-2301/bulk-device-approval-service May 22, 2024 17:37
@addisonbeck addisonbeck force-pushed the ac/addison/ac-2301/bulk-device-approval-api branch from fb11acb to 78da7fc Compare May 22, 2024 19:30
@addisonbeck addisonbeck removed the request for review from a team May 22, 2024 19:32
@addisonbeck addisonbeck force-pushed the ac/addison/ac-2301/bulk-device-approval-service branch 3 times, most recently from 7f17510 to cdb5a32 Compare May 23, 2024 18:58
addisonbeck and others added 2 commits May 24, 2024 20:28
@eliykat
Copy link
Member

eliykat commented May 27, 2024

Merging into the base branch, then merging that into main.

@eliykat eliykat merged commit 5d263fa into ac/addison/ac-2301/bulk-device-approval-service May 27, 2024
41 checks passed
@eliykat eliykat deleted the ac/addison/ac-2301/bulk-device-approval-api branch May 27, 2024 01:25
eliykat added a commit that referenced this pull request May 27, 2024
* Define a model for updating many auth requests

In order to facilitate a command method that can update many auth
requests at one time a new model must be defined that accepts valid
input for the command's needs. To achieve this a new file has been
created at
`Core/AdminConsole/OrganizationAuth/Models/OrganizationAuthRequestUpdateCommandModel.cs`
that contains a class of the same name. It's properties match those that
need to come from any calling API request models to fulfill the request.

* Declare a new command interface method

Calling API functions of the `UpdateOrganizationAuthRequestCommand` need
a function that can accept many auth request response objects and
process them as approved or denied. To achieve this a new function has
been added to `IUpdateOrganizationAuthRequestCommand` called
`UpdateManyAsync()` that accepts an
`IEnumberable<OrganizationAuthRequest>` and returns a `Task`.
Implementations of this interface method will be used to bulk process
auth requests as approved or denied.

* Stub out method implementation for unit testing

To facilitate a bulk device login request approval workflow in the admin
console `UpdateOrganizationAuthRequestCommand` needs to be updated to
include an `UpdateMany()` method. It should accept a list of
`OrganizationAuthRequestUpdateCommandModel` objects, perform some simple
data validation checks, and then pass those along to
`AuthRequestRepository` for updating in the database.

This commit stubs out this method for the purpose of writing unit tests.
At this stage the method throws a `NotImplementedException()`. It will
be expand after writing assertions.

* Inject `IAuthRequestRepository` into `UpdateOrganizationAuthCommand`

The updates to `UpdateOrganizationAuthRequestCommand` require a new
direct dependency on `IAuthRequestRepository`. This commit simply
registers this dependency in the `UpdateOrganizationAuthRequest`
constructor for use in unit tests and the `UpdateManyAsync()`
implementation.

* Write tests

* Rename `UpdateManyAsync()` to `UpdateAsync`

* Drop the `CommandModel` suffix

* Invert business logic update filters

* Rework everything to be more model-centric

* Bulk send push notifications

* Write tests that validate the command as a whole

* Fix a test that I broke by mistake

* Swap to using await instead of chained methods for processing

* Seperate a function arguement into a variable declaration

* Ungeneric-ify the processor

* Adjust ternary formatting

* Adjust naming of methods regarding logging organization events

* Throw an exception if Process is called with no auth request loaded

* Rename `_updates` -> `_update`

* Rename email methods

* Stop returning `this`

* Allow callbacks to be null

* Make some assertions about the state of a processed auth request

* Be more terse about arguements in happy path test

* Remove unneeded null check

* Expose an endpoint for bulk processing of organization auth requests  (#4077)

---------

Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants