* PM-3833 - API - AccountsController.cs && AccountsController.cs - remove prelogin and register endpoints.
* PM-3833 - Move Request and Response models that were used for Prelogin and PostRegister from API to Identity.
* PM-3833 - FIX LINT
* PM-3833 - Fix issues after merge conflict fixes.
* PM-3833 - Another test fix
* PM-5092 - Add new EnableEmailVerification global setting.
* PM-5092 - WIP - AccountsController.cs - create stub for new PostRegisterSendEmailVerification
* PM-5092 - RegisterSendEmailVerificationRequestModel
* PM-5092 - Create EmailVerificationTokenable.cs and get started on tests (still WIP).
* PM-5092 - EmailVerificationTokenable.cs finished + tests working.
* PM-5092 - Add token data factory for new EmailVerificationTokenable factory.
* PM-5092 - EmailVerificationTokenable.cs - set expiration to match existing verify email.
* PM-5092 - Get SendVerificationEmailForRegistrationCommand command mostly written + register as scoped.
* PM-5092 - Rename tokenable to be more clear and differentiate it from the existing email verification token.
* PM-5092 - Add new registration verify email method on mail service.
* PM-5092 - Refactor SendVerificationEmailForRegistrationCommand and add call to mail service to send email.
* PM-5092 - NoopMailService.cs needs to implement all interface methods.
* PM-5092 - AccountsController.cs - get PostRegisterSendEmailVerification logic in place.
* PM-5092 - AccountsControllerTests.cs - Add some unit tests - WIP
* PM-5092 - SendVerificationEmailForRegistrationCommandTests
* PM-5092 - Add integration tests for new acct controller method
* PM-5092 - Cleanup unit tests
* PM-5092 - AccountsController.cs - PostRegisterSendEmailVerification - remove modelState invalid check as .NET literally executes this validation pre-method execution.
* PM-5092 - Rename to read better - send verification email > send email verification
* PM-5092 - Revert primary constructor approach so DI works.
* PM-5092 - (1) Cleanup new but now not needed global setting (2) Add custom email for registration verify email.
* PM-5092 - Fix email text
* PM-5092 - (1) Modify ReferenceEvent.cs to allow nullable values for the 2 params which should have been nullable based on the constructor logic (2) Add new ReferenceEventType.cs for email verification register submit (3) Update AccountsController.cs to log new reference event (4) Update tests
* PM-5092 - RegistrationEmailVerificationTokenable - update prefix, purpose, and token id to include registration to differentiate it from the existing email verification token.
* PM-5092 - Per PR feedback, cleanup used dict.
* PM-5092 - formatting pass (manual + dotnet format)
* PM-5092 - Per PR feedback, log reference event after core business logic executes
* PM-5092 - Per PR feedback, add validation + added nullable flag to name as it is optional.
* PM-5092 - Per PR feedback, add constructor validation for required tokenable data
* PM-5092 - RegisterVerifyEmail url now contains email as that is required in client side registration step to create a master key.
* PM-5092 - Add fromEmail flag + some docs
* PM-5092 - ReferenceEvent.cs - Per PR feedback, make SignupInitiationPath and PlanUpgradePath nullable
* PM-5092 - ReferenceEvent.cs - remove nullability per PR feedback
* PM-5092 - Per PR feedback, use default constructor and manually create reference event.
* PM-5092 - Per PR feedback, add more docs!
* [PM-8027] Adding feature flag to allow us to fallback to the basic approach to field qualification for the inline menu
* [PM-8027] Adding feature flag to allow us to fallback to the basic approach to field qualification for the inline menu
* [PM-8027] Reverting flag from a fallback flag to an enhancement feature flag
* Renamed ProductType to ProductTierType
* Renamed Product properties to ProductTier
* Moved ProductTierType to Bit.Core.Billing.Enums namespace from Bit.Core.Enums
* Moved PlanType enum to Bit.Core.Billing.Enums
* Moved StaticStore to Bit.Core.Billing.Models.StaticStore namespace
* Added ProductType enum
* dotnet format
* Show a more detailed error message if duplicate GUIDS are passed ot get by Ids
* Update test/Api.IntegrationTest/SecretsManager/Controllers/SecretsControllerTests.cs
Co-authored-by: Thomas Avery <43214426+Thomas-Avery@users.noreply.github.com>
* Update src/Api/SecretsManager/Models/Request/GetSecretsRequestModel.cs
Co-authored-by: Thomas Avery <43214426+Thomas-Avery@users.noreply.github.com>
* Update src/Api/SecretsManager/Models/Request/GetSecretsRequestModel.cs
Co-authored-by: Thomas Avery <43214426+Thomas-Avery@users.noreply.github.com>
* Making requested changes to tests
* lint fix
* fixing whitespace
---------
Co-authored-by: Thomas Avery <43214426+Thomas-Avery@users.noreply.github.com>
* Moved AccountsBilling controller to be owned by Billing
* Added org billing history endpoint
* Updated GetBillingInvoicesAsync to only retrieve paid, open, and uncollectible invoices, and added option to limit results
* Removed invoices and transactions from GetBillingAsync
* Limiting the number of invoices and transactions returned
* Moved Billing models to Billing namespace
* Split billing info and billing history objects
* Removed billing method GetBillingBalanceAndSourceAsync
* Removed unused using
* Cleaned up BillingInfo a bit
* Update migration scripts to use `CREATE OR ALTER` instead of checking for the `OBJECT_ID`
* Applying limit to aggregated invoices after they return from Stripe
* Add authz handling for secret access policy reads
* Add the ability to fetch secret access polices from the repository
* refactor response models
* Add new endpoint
* inital changes
* add provider GatewayType migrations
* db provider migrations
* removed duo migrations added v2 metadata to duo response
* removed helper scripts
* remove signature from org duo
* added backward compatibility for Duo v2
* added tests for duo request + response models
* refactors to TwoFactorController
* updated test methods to be compartmentalized by usage
* fix organization add duo
* Assert.Empty() fix for validator
* Removed prorationDate as it wasn't used, and wasn't needed
* Fixed logic to detect if a subscription was sponsored
* Moved OrganizationSponsorshipsController.cs to Billing folder
* Refactored GET provider subscription
Refactoring this endpoint and its associated tests in preparation for the addition of more endpoints that share similar patterns
* Replaced StripePaymentService call in AccountsController, OrganizationsController
This was made in error during a previous PR. Since this is not related to Consolidated Billing, we want to try not to include it in these changes.
* Removing GetPaymentInformation call from ProviderBillingService
This method is a good call for the SubscriberService as we'll want to extend the functionality to all subscriber types
* Refactored GetTaxInformation to use Billing owned DTO
* Add UpdateTaxInformation to SubscriberService
* Added GetTaxInformation and UpdateTaxInformation endpoints to ProviderBillingController
* Added controller to manage creation of Stripe SetupIntents
With the deprecation of the Sources API, we need to move the bank account creation process to using SetupIntents. This controller brings both the creation of "card" and "us_bank_account" SetupIntents
under billing management.
* Added UpdatePaymentMethod method to SubscriberService
This method utilizes the SetupIntents created by the StripeController from the previous commit when a customer adds a card or us_bank_account payment method (Stripe). We need to cache the most recent SetupIntent for the subscriber so that we know which PaymentMethod is their most recent even when it hasn't been confirmed yet.
* Refactored GetPaymentMethod to use billing owned DTO and check setup intents
* Added GetPaymentMethod and UpdatePaymentMethod endpoints to ProviderBillingController
* Re-added GetPaymentInformation endpoint to consolidate API calls on the payment method page
* Added VerifyBankAccount endpoint to ProviderBillingController in order to finalize bank account payment methods
* Updated BitPayInvoiceRequestModel to support providers
* run dotnet format
* Conner's feedback
* Run dotnet format'
* block legacy users from authN
* undo change to GetDeviceFromRequest
* lint
* add feature flag
* format
* add web vault url to error message
* fix test
* format
* Add check to verify the vault state for rotation is not obviously desynced (empty)
* Add unit test for key rotation guardrail
* Move de-synced vault detection to validators
* Add tests
* Resolve the issue of not updating the db
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
* Resolve the failing test
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
---------
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
* 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>
* Add new stored procedure for reading reset password details for multiple organization user IDs
* Add method IOrganizationUserRepository.GetManyResetPasswordDetailsByOrganizationUserAsync
* Add new API endpoint for getting reset password details for multiple organization users
* Add unit tests for bulk OrganizationUsersController.GetResetPasswordDetails
* Add alias to sql query result column
* Add constructor for automatic mapping
* Fix http method type for endpoint
* dotnet format
* Simplify the constructor in the OrganizationUserResetPasswordDetails
* Refactor stored procedure and repository method names for retrieving account recovery details
* Add integration tests for GetManyAccountRecoveryDetailsByOrganizationUserAsync
* Lock endpoint behind BulkDeviceApproval feature flag
* Update feature flag key value
* Add the providerId to the transaction object
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
* Refactor to check if providerId hasValue before return
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
---------
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
* Replace SubscriberQueries with SubscriberService
* Replace OrganizationBillingQueries with OrganizationBillingService
* Replace ProviderBillingQueries with ProviderBillingService, move to Commercial
* Replace AssignSeatsToClientOrganizationCommand with ProviderBillingService, move to commercial
* Replace ScaleSeatsCommand with ProviderBillingService and move to Commercial
* Replace CancelSubscriptionCommand with SubscriberService
* Replace CreateCustomerCommand with ProviderBillingService and move to Commercial
* Replace StartSubscriptionCommand with ProviderBillingService and moved to Commercial
* Replaced RemovePaymentMethodCommand with SubscriberService
* Formatting
* Used dotnet format this time
* Changing ProviderBillingService to scoped
* Found circular dependency'
* One more time with feeling
* Formatting
* Fix error in remove org from provider
* Missed test fix in conflit
* [AC-1937] Server: Implement endpoint to retrieve provider payment information (#4107)
* Move the gettax and paymentmethod from stripepayment class
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
* Add the method to retrieve the tax and payment details
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
* Add unit tests for the paymentInformation method
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
* Add the endpoint to retrieve paymentinformation
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
* Add unit tests to the SubscriberService
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
* Remove the getTaxInfoAsync update reference
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
---------
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
---------
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
Co-authored-by: cyprain-okeke <108260115+cyprain-okeke@users.noreply.github.com>
* Remove FlexibleCollectionsSignUp feature flag
* Always set Organization.FlexibleCollections to true
* Remove explicit assignment of LimitCollectionCreationDeletion so it defaults to false
* Declare a new repository interface method
To facilitate a new bulk device login request approval workflow in the
admin console we need to update `IAuthRequestRepisitory` (owned by Auth
team) to include an`UpdateManyAsync()` method. It should accept a list
of `AuthRequest` table objects, and implementations will do a very
simple 1:1 update of the passed in data.
This commit adds an `UpdateManyAsync()` method to the
`AuthRequestRepository` interface.
* Stub out method implementations to enable unit testing
This commit stubs out implementations of
`IAuthRequestRepository.UpdateManyAsync()` so the method signature can
be called in unit tests. At this stage the methods are not implemented.
* Assert a happy path integration test
* Establish a user defined SQL type for Auth Requests
To facilitate a bulk update operation for auth requests a new user
defined type will need to be written that can be used as a table input
to the stored procedure. This will follow a similar pattern to how the
`OragnizationSponsorshipType` works and is used by the stored procedure
`OrganizationSponsorship_UpdateMany`.
* Establish a new stored procedure
To facilitate the bulk updating of auth request table objects this
commit adds a new stored procedure to update a collection of entities
on `AuthRequest` table by their primary key. It updates all properties,
for convention, but the endpoint created later will only change the
`Approved`, `ResponseDate`, `Key`, `MasterPasswordHash`, and
`AuthenticationDate` properties.
* Apply a SQL server migration script
This commit simply applies a migration script containing the new user
defined type and stored procedure comitted previously.
* Enable converting an `IEnumerable<AuthRequest>` to a `DataTable`
The current pattern in place for bulk update stored procedures is to
pass a `DataTable` through Dapper as an input for the update stored
procedure being run. In order to facilitate the new bulk update
procedure for the`AuthRequest` type we need a function added that can
convert an `IEnumerable<AuthRequest>` to a `DataTable`. This is commit
follows the convention of having a static class with a conversion method
in a `Helpers` folder: `AuthRequestHelpers.ToDataTable()`.
* Implement `Dapper/../AuthRequestRepository.UpdateMany()`
This commit implements `AuthRequestRepository.UpdateMany()` for the
Dapper implementation of `AuthRequestRepository`. It connects the stored
procedure, `DataTable` converter, and Dapper-focused unit test commits
written previously into one exposed method that can be referenced by
service callers.
* Implement `EntityFramework/../AuthRequestRepository.UpdateMany()`
This commit implements the new
`IAuthRequestRepository.UpdateManyAsync()`method in the Entity Framework
skew of the repository layer. It checks to make sure the passed in list
has auth requests, converts them all to an Entity Framework entity, and
then uses `UpdateRange` to apply the whole thing over in the database
context.
* Assert that `UpdateManyAsync` can not create any new auth requests
* Use a json object as stored procedure input
* Fix the build
* Continuing to troubleshoot the build
* Move `AuthRequest_UpdateMany` to the Auth folder
* Remove extra comment
* Delete type that never got used
* intentionally break a test
* Unbreak it
* fix: align policy checks for excluded types, update tests, create fixture, refs AC-240
* fix: update final policy check against other orgs (not including the current), refs AC-240
* For SM Trial orgs, now scaling PM seat count with SM seat count adjustments
* Split Billing related organization endpoints into billing owned controller
* Updated billing organizations controller to use a primary constructor to reduce boilerplate
* Fixed error where ID couldn't be mapped to subscription endpoint guid param
* Updated billing OrganizationController endpoints to not manually create the GUID from the string ID
* Banished magic string back to the pit from whence it came
* Resolved errors in unit tests
* Prevent calls to Stripe when unlinking client org has no Stripe objects
* Thomas' feedback
* Check for stripe when org unlinked from org page
---------
Co-authored-by: Conner Turnbull <cturnbull@bitwarden.com>
* [AC-2274] Introduce CanEditAnyCiphersAsAdminAsync helper to replace EditAnyCollection usage
* [AC-2274] Add unit tests for CanEditAnyCiphersAsAdmin helper
* [AC-2274] Add Jira ticket
* [AC-1707] Add feature flag
* [AC-1707] Update CanEditAnyCiphersAsAdmin to fail for providers when the feature flag is enabled
* [AC-2274] Undo change to purge endpoint
* [AC-2274] Update admin checks to account for unassigned ciphers
* [AC-1707] Fix provider auth checks after merge with main
* [AC-1707] Fix tests after merge
* [AC-1707] Adjust CanEditCipherAsAdmin method to properly account for admin user types
- Fix associated unit tests
* [AC-1707] Formatting
* Add new models
* Update repositories
* Add new authz handler
* Add new query
* Add new command
* Add authz, command, and query to DI
* Add new endpoint to controller
* Add query unit tests
* Add api unit tests
* Add api integration tests
* Add the ability to get multi projects access
* Add access policy helper + tests
* Add new data/request models
* Add access policy operations to repo
* Add authz handler for new operations
* Add new controller endpoints
* add updating service account revision
* Fix issue where ManageUsers custom permission could not
grant access to collections
* Split ModifyAccess operation to ModifyUserAccess and
ModifyGroupAccess to reflect more granular operations
* [deps] Auth: Update Duende.IdentityServer to v7
* Fixes for upgrade incompatibility
* Update configuration file used in a test
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Matt Bishop <mbishop@bitwarden.com>
Co-authored-by: Ike <137194738+ike-kottlowski@users.noreply.github.com>
* update OrganizationUsersController PUT and POST
* enforces new collection access checks when updating members
* refactor BulkCollectionAuthorizationHandler to avoid repeated db calls
* [AC-1682] Added MySql migration and script
(cherry picked from commit d367f6de6b)
* [AC-1682] Added Postgres migration and script
(cherry picked from commit 9bde1604da)
* [AC-1682] Added Sqlite migration and script
(cherry picked from commit 262887f9c3)
* [AC-1682] dotnet format
(cherry picked from commit 00eea0621c)
* [AC-1682] Fixed Sqlite query
(cherry picked from commit 26f5bf8afd)
* [AC-1682] Drop temp tables if they exist when starting the scripts
(cherry picked from commit c20912f95c)
* [AC-1682] Removed MySql transaction from script because EF migration already wraps it under its own transaction
(cherry picked from commit 7b54d78d67)
* [AC-1682] Setting FlexibleCollections = 1 only for Orgs that had data migrated in previous steps
(cherry picked from commit 28bba94d81)
* [AC-1682] Updated queries to check for OrganizationId
(cherry picked from commit a957530d5e)
* [AC-1682] Fixed MySql script
(cherry picked from commit deee483ab7)
* [AC-1682] Fixed Postgres query
(cherry picked from commit c3ca9ec3c8)
* [AC-1682] Fix Sqlite query
(cherry picked from commit fada0a81bf)
* [AC-1682] Reverted scripts back to enabling Flexible Collections to all existing Orgs
(cherry picked from commit bd3b21b969)
* [AC-1682] Removed dropping temporary table from scripts
(cherry picked from commit eb7794d592)
* [AC-1682] Removed other temp table drops
(cherry picked from commit 26768b7bf8)
* [AC-1978] Fix issue that allows the web app to have the user type Manager available
(cherry picked from commit 2890f78870)
* [AC-1682] Bump dates on migration scripts
---------
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
* [AC-2323] Added script to migrate all sql organizations to use flexible collections
* [AC-2323] Overriding FlexibleCollectionsSignup to true for local usage
* [AC-2323] Fix script comment
* [AC-2323] Fixed typo
* [AC-2323] Bump up date on migration script
* [AC-2323] Bump migration script date
---------
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
* fcmv1 update
* try without nested data obj
* type must be a string
* fcmv1 migration flag
* lint fixes
* fix tests
---------
Co-authored-by: Matt Bishop <mbishop@bitwarden.com>
* Refactored the charge succeeded handler a bit
* If refund charge is received, and we don't have a parent transaction stored already, attempt to create one
* Converted else if structure to switch-case
* Moved logic for invoice.upcoming to a private method
* Moved logic for charge.succeeded to a private method
* Moved logic for charge.refunded to a private method
* Moved logic for invoice.payment_succeeded to a private method
* Updated invoice.payment_failed to match the rest
* Updated invoice.created to match the rest with some light refactors
* Added method comment to HandlePaymentMethodAttachedAsync
* Moved logic for customer.updated to a private method
* Updated logger in default case
* Separated customer.subscription.deleted and customer.subscription.updated to be in their own blocks
* Moved logic for customer.subscription.deleted to a private method
* Moved logic for customer.subscription.updated to a private method
* Merged customer sub updated or deleted to switch
* No longer checking if the user has premium before disabling it since the service already checks
* Moved webhook secret parsing logic to private method
* Moved casting of event to specific object down to handler
* Reduced nesting throughout
* When removing secrets manager, now deleting 100% off password manager discount for SM trials
* Added method comment and reduced nesting in RemovePasswordManagerCouponIfRemovingSecretsManagerTrialAsync
* Updated GetIdsByMetadata to support providerId
* Refactored the charge succeeded handler a bit
* If refund charge is received, and we don't have a parent transaction stored already, attempt to create one
* Converted else if structure to switch-case
* Moved logic for invoice.upcoming to a private method
* Moved logic for charge.succeeded to a private method
* Moved logic for charge.refunded to a private method
* Moved logic for invoice.payment_succeeded to a private method
* Updated invoice.payment_failed to match the rest
* Updated invoice.created to match the rest with some light refactors
* Added method comment to HandlePaymentMethodAttachedAsync
* Moved logic for customer.updated to a private method
* Updated logger in default case
* Separated customer.subscription.deleted and customer.subscription.updated to be in their own blocks
* Moved logic for customer.subscription.deleted to a private method
* Moved logic for customer.subscription.updated to a private method
* Merged customer sub updated or deleted to switch
* No longer checking if the user has premium before disabling it since the service already checks
* Moved webhook secret parsing logic to private method
* Moved casting of event to specific object down to handler
* Reduced nesting throughout
* When removing secrets manager, now deleting 100% off password manager discount for SM trials
* Added method comment and reduced nesting in RemovePasswordManagerCouponIfRemovingSecretsManagerTrialAsync
* [PM-3176] Extract IOrganizationService.SaveUserAsync to a command
* [PM-3176] Enabled nullable on command
* [PM-3176] Removed check that was not working
* add new classes
* initial commit
* revert the changes on this files
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
* revert unnecessary changes
* Add a model
* add the delete token endpoint
* add a unit test for delete provider
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
* add the delete provider method
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
* resolve the failing test
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
* resolve the delete request redirect issue
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
* changes to correct the json issue
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
* resolve errors
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
* resolve pr comment
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
* move ProviderDeleteTokenable to the adminConsole
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
* Add feature flag
* resolve pr comments
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
* add some unit test
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
* resolve the failing test
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
* resolve test
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
* add the remove feature flag
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
* [AC-2378] Added `ProviderId` to PayPal transaction model (#3995)
* Added ProviderId to PayPal transaction model
* Fixed issue with parsing provider id
* [AC-1923] Add endpoint to create client organization (#3977)
* Add new endpoint for creating client organizations in consolidated billing
* Create empty org and then assign seats for code re-use
* Fixes made from debugging client side
* few more small fixes
* Vincent's feedback
* Bumped version to 2024.4.1 (#3997)
* [AC-1923] Add endpoint to create client organization (#3977)
* Add new endpoint for creating client organizations in consolidated billing
* Create empty org and then assign seats for code re-use
* Fixes made from debugging client side
* few more small fixes
* Vincent's feedback
* [AC-1923] Add endpoint to create client organization (#3977)
* Add new endpoint for creating client organizations in consolidated billing
* Create empty org and then assign seats for code re-use
* Fixes made from debugging client side
* few more small fixes
* Vincent's feedback
* add changes after merge conflict
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
---------
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
Co-authored-by: Conner Turnbull <133619638+cturnbull-bitwarden@users.noreply.github.com>
Co-authored-by: Alex Morask <144709477+amorask-bitwarden@users.noreply.github.com>
Co-authored-by: Bitwarden DevOps <106330231+bitwarden-devops-bot@users.noreply.github.com>
* Add new endpoint for creating client organizations in consolidated billing
* Create empty org and then assign seats for code re-use
* Fixes made from debugging client side
* few more small fixes
* Vincent's feedback
* Move to Azure.Data.Tables
* Reorder usings
* Add new package to Renovate
* Add manual serialization and deserialization due to enums
* Properly retrieve just the next page
* Centralize database migration logic
* Clean up unused usings
* Prizatize
* Remove verbose flag from Docker invocation
* Allow certain database operations to be skipped
* Readonly
* [PM-2383] Add bulk add/remove collection cipher repository methods
* [PM-2383] Add additional authorization helpers for CiphersControlle
* [PM-2383] Add /bulk-collections endpoint to CiphersController.cs
* [PM-2383] Add EF implementation for new CollectionCipherRepository methods
* [PM-2383] Ensure V1 logic only applies when the flag is enabled for new bulk functionality
* Restrict admins from adding themselves to groups
Updated OrganizationUsersController only, GroupsController to be updated
separately
* Delete unused api method
* [PM-6934] Prevent enabling two step login policy if any Org member has no master password and no 2FA set up
* [PM-6934] PR feedback
* [PM-6934] Updated policy check to only check users that will be deleted
* [PM-6934] Removed unnecessary code
* [PM-6934] Fixed unit tests and policy update logic
* [PM-6934] Updated error message
* remove the unwanted test
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
* Fix the double email issue
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
* Resolve the bug issue
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
* change the category name
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
* move private down the class
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
* move the private method down the class file
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
* Add the RegisterUser Test
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
* modify the test
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
* remove the failing test
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
* revert the test
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
* add the email method
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
* revert changes on the UserServiceTests.cs
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
---------
Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
* Ensuring customer has address before enabling automatic tax
* StripeController fixes
* Refactored automatic tax logic to use customer's automatic tax values
* Downgraded refund error in paypal controller to be a warning
* Resolved broken test after downgrading error to warning
* Resolved broken paypal unit tests on windows machines
---------
Co-authored-by: Lotus Scott <148992878+lscottbw@users.noreply.github.com>
* [AC-1637] Added HtmlEncodingStringConverter to encode/decode special chars on JSON serialization/deserialization
* [AC-1637] Added unit tests for HtmlEncodingStringConverter
* [AC-1637] Moved expected values on unit tests to the arrange phase
* [AC-1637] Added HtmlEncodingStringConverter to properties that are for input/output of Org Name and Business name
* [AC-1637] Modified views in Admin project to decode values to display
* [AC-1637] Replaced Html.Raw with HttpUtility.HtmlDecode
* [AC-1637] Added JsonConverter to Provider DTOs
* [AC-1637] Modified HandlebarsMailService to decode organization name before sending emails
* Revert "[AC-1637] Added JsonConverter to Provider DTOs"
This reverts commit 94d507cf93.
* [AC-1637] Fixed Admin panel organization search
* [AC-1637] Sanitizing Organization name and business name on creation in Admin panel
* [AC-1637] Sanitizing organization name and business name on creation by a provider
* [AC-1637] Sanitizing provider name on creation and on viewing in admin panel
* [AC-1637] Added sanitization to more places where Org name is used
* [AC-1637] Swapped using HttpUtility for WebUtility since the later is part of the dotnet framework
* [AC-1637] Updated error messages
* [AC-1637] Decoding on Admin panel add existing organization
* [AC-1637] Fix HTML decoding issues
* [AC-1637] Refactor HTML decoding in View and Model classes on Admin panel
* [AC-1637] Refactor provider name and business name usages to use methods that output decoded values
* [AC-1637] Fixed typo
* [AC-1637] Renamed Provider methods to retrieve Decoded Name and BusinessName
* [AC-1637] Renamed Organization methods to retrieve Decoded Name and BusinessName
* [AC-1637] Update the display name method in the `ProviderOrganizationOrganizationDetails` class to `DisplayName()`
* [deps] Vault: Update aspnet-health-checks monorepo
* [PM-5249] Add updated Azure Storage Queues health check package that was split from the original Azure Storage health check package
* [PM-5249] Remove Azure Queue Storage health checks and dependencies
* [PM-5249] Remove unused Redis, Service Bus, and SendGrid health checks
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Shane Melton <smelton@bitwarden.com>
* [AC-2195] Ensure Custom users with EditAnyCollection can always access all ciphers
* [AC-2195] Ensure FC V1 logic is not used for non-migrated organizations
* mssql add column and migration
* Add secret access policies to EF models and config
* Clear new access policies on service account delete
* Add SM cleanup code on delete
* Fix EF org user bulk delete
* Run EF migrations
* modify grant_save sql script to migration and Auth SQL scripts to not use merge
* Update formatting for sql files
* Fix formatting for sql files
* Format using Prettier
* Rename 2024-01-03_00_FixGrantSave.sql to 2024-02-12_00_FixGrantSave.sql
---------
Co-authored-by: Matt Bishop <mbishop@bitwarden.com>
* Fix assigning Manage access to default collection
The previous implementation did not work when creating an org as a
provider because the ownerId is null in OrganizationService.SignUp.
Added a null check and handled assigning access in ProviderService
instead.
* Tweaks
* [AC-2154] Logging organization data before migrating for flexible collections
* [AC-2154] Refactored logging command to perform the data migration
* [AC-2154] Moved validation inside the command
* [AC-2154] PR feedback
* [AC-2154] Changed logging level to warning
* [AC-2154] Fixed unit test
* [AC-2154] Removed logging unnecessary data
* [AC-2154] Removed primary constructor
* [AC-2154] Added comments
* [AC-2114] Downgrade Custom roles to User if flexible collections are enabled and only active permissions are 'Edit/Delete assigned collections'
* [AC-2114] Undo changes to OrganizationsController
* [AC-2114] Updated public API MembersController responses to have downgraded Custom user types for flexible collections
* Added offboarding survey response to cancellation when FF is on.
* Removed service methods to prevent unnecessary upstream registrations
* Forgot to actually remove the injected command in the services
* Rui's feedback
* Add missing summary
* Missed [FromBody]
* [PM-3571] Update HandlebarsMailService for Passwordless login email URL, using AbsoluteUri which has html encoding
* [PM-3571] Switched from AbsoluteUri to OriginalString
---------
Co-authored-by: bnagawiecki <107435978+bnagawiecki@users.noreply.github.com>
Improves code generation of enums for the server bindings in the sdk. Bindings will now use the appropiate variable name from the server.
Works by adding a filter which appends x-enum-varnames to enums with the name from c#.
* [AC-1124] Add GetManyUnassignedOrganizationDetailsByOrganizationIdAsync to the CipherRepository
* [AC-1124] Introduce IOrganizationCiphersQuery.cs to replace some CipherService queries
* [AC-1124] Add additional CipherDetails model that includes CollectionIds
* [AC-1124] Update CiphersController and response models
- Add new endpoint for assigned ciphers
- Update existing endpoint to only return all ciphers when feature flag is enabled the user has access
* [AC-1124] Add migration script
* [AC-1124] Add follow up ticket for Todos
* [AC-1124] Fix feature service usage after merge with main
* [AC-1124] Optimize unassigned ciphers query
* [AC-1124] Update migration script date
* [AC-1124] Update migration script date
* [AC-1124] Formatting
* clean the return url of any whitespace
* ReplaceWhiteSpace helper
* tests for ReplaceWhiteSpace helper
---------
Co-authored-by: Matt Bishop <mbishop@bitwarden.com>
* [deps] Tools: Update Microsoft.Extensions.Configuration to v8
* Bump missing updates on integration tests
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
* SM-1012: Phase 2, removing SM Beta from the server (but not db)
* SM-1012: Add migration for RemoveSMBetaFromOrganization
* SM-1012: Dotnet format
* SM-1012: Undo RemoveSMBetaFromOrganization EF migration
* SM-1012: Redo RemoveSMBetaFromOrganization EF migration
* SM-1012: Ran dotnet format
* Upgrade to .NET 8
* Linting
* Clean up old JSON deserialization code
* More .NET 8-oriented linting
* Light feedback
* Get rid of old test we don't know the root issue for
* Fix a new test
* Remove now-unnecessary Renovate constraint
* Use Any()
* Somehow a 6.0 tooling config we don't need snuck back in
* Space out properties that always change per release
* Bump a few core packages since the last update
* Added feature flag constant
* Wrapped Automatic Tax logic behind feature flag
* Only getting customer if feature is anabled.
* Enabled feature flag in unit tests
* Made IPaymentService scoped
* Added missing StripeFacade calls
* Upgrade Stripe.net
* Don't process mismatched version webhooks
* Manually handle API mismatch in Stripe webhook
* Pivot webhook secret off webhook version
* [AC-2068] Allow any member of an org to read all users for that organization with flexible collections
* [AC-2068] Allow any member of an org to read all groups for that organization with flexible collections
* [AC-2068] Formatting
* Added appliesTo to customer discount. Added productId to subscription item
* Added IsFromSecretsManagerTrial flag to add discount for SM trials
* Fixed broken tests
---------
Co-authored-by: Alex Morask <amorask@bitwarden.com>
* Removed TaxRate logic when creating or updating a Stripe subscription and replaced it with AutomaticTax enabled flag
* Updated Stripe webhook to update subscription to automatically calculate tax
* Removed TaxRate unit tests since Stripe now handles tax
* Removed test proration logic
* Including taxInfo when updating payment method
* Adding the address to the upgrade free org flow if it doesn't exist
* Fixed failing tests and added a new test to validate that the customer is updated
* Changed Import permissions validation to check if the user CanCreate a Collection
* Corrected authorized to import validation allowing import without collections when the user is admin
* Added validation to check if user can import ciphers into existing collections
* swapped feature flag flexible collections with org property
* Removed unused feature service from ImportCiphersController
* Improved code readability
* added null protection against empty org when checking for FlexibleCollections flag
* [AC-1682] Data migrations for OrgUsers or Groups with AccessAll enabled
* [AC-1682] Added script to update [dbo].[CollectionUser] with [Manage] = 1 for all users with Manager role or 'EditAssignedCollections' permission
* [AC-1682] Updated sql data migration procedures with performance recommendations
* [AC-1682] Moved data migration scripts to DbScripts_transition folder
* Apply suggestions from code review: Remove Manage permission from Collection assignments
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
* [AC-1682] Removed unnecessary Collection table join on ManagersEditAssignedCollectionUsers sql script
* [AC-1682] Change JOIN to INNER JOIN in SQL scripts
* [AC-1682] Renamed sql script to recent date and added correct order to file name
* [AC-1682] Add new rows to CollectionUser for Managers and users with EditAssignedCollections permission assigned to groups with collection access
* [AC-1682] Update FC data migration scripts to clear AccessAll flags and set all Managers to Users
* [AC-1682] Updated data migration scripts to bump the account revision date
* [AC-1682] Created Organization_EnableCollectionEnhancements to migrate organization data for flexible collections
* [AC-1682] Added script to migrate all organization data for flexible collections
* [AC-1682] Deleted old data migration scripts
* Revert "[AC-1682] Deleted old data migration scripts"
This reverts commit 54cc6fab8f.
* [AC-1682] Modified AccessAllCollectionUsers script to bump revision date by each OrgUser
* [AC-1682] Update data migration script to only enable collection enhancements for organizations that have not yet migrated
* [AC-1682] Updated AccessAllCollectionGroups migration script to use User_BumpAccountRevisionDateByCollectionId
* [AC-1682] Bumped up the date on data migration scripts
* [AC-1682] Added back batching system to AccessAllCollectionUsers data migration script
* [AC-1682] Added data migration script to set FlexibleCollections = 1 for all orgs
* [AC-1682] Modified data migration script to contain multiple transactions
* [AC-1682] Deleted old data migration scripts
* [AC-1682] Placed temp tables outside transactions
* [AC-1682] Removed batching from AllOrgsEnableCollectionEnhancements script
* [AC-1682] Removed bulk data migration script
* [AC-1682] Refactor stored procedure to enable collection enhancements
* [AC-1682] Added missing where clause
* [AC-1682] Modified data migration script to have just one big transaction
* [AC-1682] Combining all updated OrganizationUserIds to bump all revision dates at the same time
* Update src/Sql/dbo/Stored Procedures/Organization_EnableCollectionEnhancements.sql
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
* [AC-1682] Renamed aliases
* [AC-1682] Simplified inner queries
* [AC-1682] Bumping each modified groups RevisionDate
* [AC-1682] Removed updating CollectionUser existing records with [ReadOnly] = 0 and [HidePasswords] = 0
* [AC-1682] Updating OrganizationUser RevisionDate
* [AC-1682] Updated the stored procedure file
* [AC-1682] Selecting distinct values to insert into CollectionUser table
* Revert "[AC-1682] Removed updating CollectionUser existing records with [ReadOnly] = 0 and [HidePasswords] = 0"
This reverts commit 086c88f3c6.
* [AC-1682] Bumped up the date on the migration script
* [AC-1682] Updating OrganizationUser RevisionDate
---------
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
* Add checksum to Login Uri models
* Revert "Revert "Add checksum to Login Uri models (#3318)" (#3417)"
This reverts commit b44887d125.
* PM-4810 Bumped up minimum version
---------
Co-authored-by: Carlos Gonçalves <cgoncalves@bitwarden.com>
Co-authored-by: bnagawiecki <107435978+bnagawiecki@users.noreply.github.com>
Co-authored-by: Carlos Gonçalves <carlosmaccam@gmail.com>
* [Ac-1890] Return CollectionDetailsResponseModel for collection PUT/POST endpoints when a userId is available in the current context
* [AC-1890] Fix broken tests
* [AC-1890] Update to use Organization FC column
* Add missing hide-passwords permission to api models
* Update src/Api/Auth/Models/Public/AssociationWithPermissionsBaseModel.cs
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
* Rename ToSelectionReadOnly to ToCollectionAccessSelection
* Remove Required attribute which would break backwards compatability
* Update src/Api/Auth/Models/Public/Request/AssociationWithPermissionsRequestModel.cs
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
* feat: add Manage property to collection permissions associations, refs AC-1880
* feat: throw if not allowed to send manage property, refs AC-1880
* fix: format, refs AC-1880
* feat: replace ambiguous call for all organizations in cache with specific orgId, refs AC-1880
* feat: move all property assignements back into CollectionAccessSelection init, refs AC-1880
* feat: align bad request messaging, refs AC-1880
---------
Co-authored-by: Daniel James Smith <djsmith@web.de>
Co-authored-by: Daniel James Smith <2670567+djsmith85@users.noreply.github.com>
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
* Update optionality to use org.FlexibleCollections
Also break old feature flag key to ensure it's never enabled
* Add logic to set defaults for collection management setting
* Update optionality logic to use org property
* Add comments
* Add helper method for getting individual orgAbility
* Fix validate user update permissions interface
* Fix tests
* dotnet format
* Fix more tests
* Simplify self-hosted update logic
* Fix mapping
* Use new getOrganizationAbility method
* Refactor invite and save orgUser methods
Pass in whole organization object instead of using OrganizationAbility
* fix CipherService tests
* dotnet format
* Remove manager check to simplify this set of changes
* Misc cleanup before review
* Fix undefined variable
* Refactor bulk-access endpoint to avoid early repo call
* Restore manager check
* Add tests for UpdateOrganizationLicenseCommand
* Add nullable regions
* Delete unused dependency
* dotnet format
* Fix test
* Tweak EF settings for grant auto-increment
* Go back to zero generated default as that doesn't matter
* Explicit value generation callout
* Go with custom SQL for direct automatic increment
* Proper column creation
* Lint
* Added null check on policy query.
* PM-5659 - OrganizationServiceTests.cs - Add test for scenario in which an org has never turned on the RequireSSO policy and it will be null
* dotnet format
---------
Co-authored-by: Jared Snider <116684653+JaredSnider-Bitwarden@users.noreply.github.com>
Co-authored-by: Thomas Rittson <trittson@bitwarden.com>
* Remove TDE feature flag.
* Removed references to feature service from decryption options builder.
* Removed redundant references.
* Removed test that is no longer valid, as it was testing the feature flag.
* Removed remainder of TDE feature check.
* table storage grants
* simple shard on storage accounts
* use is not
* cosmos grant repo
* remove single storage connection string
* some fixes to dapper grant repo
* pattern matching
* add fallback to base PersistedGrantStore
* service collection extension cleanup
* cleanup
* remove unused Id
* empty string rowkey
* fix sharding method logic
* ttl for cosmos
* make ttl an int
* fixes to cosmos implementation
* fix partition key values
* catch notfound exceptions
* indenting
* update grantitem with custom serialization
* use new transform helpers
* grantloader perf test tool
* ref
* remove grant loader project
* remove table storage implementation
* remove table storage stuff
* all redis fallback to build to null
* revert sln file change
* EOF new line
* remove trailing comma
* lint fixes
* add grant to names
* move cosmos serilaizer to utils
* add some .net 8 keyed service comments
* EnableContentResponseOnWrite
* Fix type in EF grant repository
* Add missing hide-passwords permission to api models
* Update src/Api/Auth/Models/Public/AssociationWithPermissionsBaseModel.cs
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
* Rename ToSelectionReadOnly to ToCollectionAccessSelection
* Remove Required attribute which would break backwards compatability
* Update src/Api/Auth/Models/Public/Request/AssociationWithPermissionsRequestModel.cs
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
---------
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
* move this error behind the Flexible Collections v1 flag instead of MVP
* only enforce this requirement if organization.allowAdminAccessToAllCollectionItems is false
---------
Co-authored-by: Thomas Rittson <trittson@bitwarden.com>
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
* [deps]: Update Duende.IdentityServer to v6.3.6
* Fix test
* Grant table changes
* Reassert view
* EF migrations
* Restore non-null key and simpler index
* Master SQL sync
* Lint
* Fix ID setting since the property isn't exposed
* Bump to .7
* Point to new Duende package
* Drop unused indexes first
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Matt Bishop <mbishop@bitwarden.com>
Co-authored-by: Chukwuma Akunyili <56761791+ChukwumaA@users.noreply.github.com>
Co-authored-by: Daniel James Smith <2670567+djsmith85@users.noreply.github.com>
* update Organization_DeleteById SPROC
* Add migration for user delete
* Updated delete methods for EF support
* added WITH RECOMPILE
* updating sprocs in sql project
* Add recompile
* Added null check on header-based knowndevice call to match query-string implementation.
* Updated to use model binding instead of individual inputs.
* Linting.