* Expose access policy discriminators
* Add people policy model and auth handler
* Add unit tests for authz handler
* Add people policies support in repo
* Add new endpoints and request/response models
* Update tests
* Upgraded old 2019 plans to have the same features as 2020 and beyond
* Removed redundant test and moved additional test cases to GetByOrgIdAsync_SmNoneFreePlans_ReturnsNull
* Fixed issue where feature flag wasn't returning correct plans
* Added teams 2010 plan
* Reverted accidental change to StripePaymentService
* Split feature flag logic and added some explanatory comments
* Removed families changes
* Resolved issue where Teams Starter could not sign up for a new org with SM enabled
* Fixed issue with signing up for SM with Teams Starter
* Resolved issue where an active plan could increase their SM seat count to be greater than the base seats in the password manager plan
* Updated unit test to ensure Seats are higher than SmSeats
* Resolved issue where getting plans would return a value that LINQ previously cached when feature flag was in a different state
* Upgraded old 2019 plans to have the same features as 2020 and beyond
* Removed redundant test and moved additional test cases to GetByOrgIdAsync_SmNoneFreePlans_ReturnsNull
* Fixed issue where feature flag wasn't returning correct plans
* Resolved issue where getting plans would return a value that LINQ previously cached when feature flag was in a different state
---------
Co-authored-by: cyprain-okeke <108260115+cyprain-okeke@users.noreply.github.com>
* Add ability to fetch events by service account
* Extract GetDateRange into ApiHelpers util
* Add dapper implementation
* Add EF repo implementation
* Add authz handler case
* unit + integration tests for controller
* swap to read check
* Adding comments
* Fix integration tests from merge
* Enabled SM events controller for self-hosting
* Block MSPs from creating orgs with SM
* Block MSPs from adding SM to a managed org
* Prevent manually adding SM to an MSP-managed org
* Revert "Prevent manually adding SM to an MSP-managed org"
This change is no longer required
This reverts commit 51b086243b.
* Block provider from adding org with SM
* Update error message when adding existing org with SM to provider
* Update check to match client
* Revert "Update check to match client"
This reverts commit f195c1c1f6.
* Upgraded Braintree to 5.19.0
* Force evaluate of nuget packages
---------
Co-authored-by: cyprain-okeke <108260115+cyprain-okeke@users.noreply.github.com>
* Add ProjectLimitQuery
* Add query to DI
* Add unit tests
* Add query to controller
* Add controller unit tests
* add integration tests
* rename query and variables
* More renaming
* Add support CanReadSecret authorization
* Extract base response model for secret
* Add support for SA bulk fetching event logging
* secret repository bug fix
* Add endpoint and request for bulk fetching secrets
* Swap to original reference event
* Add unit tests
* Add integration tests
* Add unit tests for authz handler
* update authz handler tests
---------
* [AC-1423] Add AddonProduct and BitwardenProduct properties to BillingSubscriptionItem (#3037)
* [AC-1423] Add AddonProduct and BitwardenProduct properties to BillingSubscriptionItem
- Add a helper method to determine the appropriate addon type based on the subscription items StripeId
* [AC-1423] Add helper to StaticStore.cs to find a Plan by StripePlanId
* [AC-1423] Use the helper method to set SubscriptionInfo.BitwardenProduct
* Add SecretsManagerBilling feature flag to Constants
* [AC 1409] Secrets Manager Subscription Stripe Integration (#3019)
* Adding the Secret manager to the Plan List
* Adding the unit test for the StaticStoreTests class
* Fix whitespace formatting
* Fix whitespace formatting
* Price update
* Resolving the PR comments
* Resolving PR comments
* Fixing the whitespace
* only password manager plans are return for now
* format whitespace
* Resolve the test issue
* Fixing the failing test
* Refactoring the Plan separation
* add a unit test for SingleOrDefault
* Fix the whitespace format
* Separate the PM and SM plans
* Fixing the whitespace
* Remove unnecessary directive
* Fix imports ordering
* Fix imports ordering
* Resolve imports ordering
* Fixing imports ordering
* Fix response model, add MaxProjects
* Fix filename
* Fix format
* Fix: seat price should match annual/monthly
* Fix service account annual pricing
* Changes for secret manager signup and upgradeplan
* Changes for secrets manager signup and upgrade
* refactoring the code
* Format whitespace
* remove unnecessary using directive
* Resolve the PR comment on Subscription creation
* Resolve PR comment
* Add password manager to the error message
* Add UseSecretsManager to the event log
* Resolve PR comment on plan validation
* Resolving pr comments for service account count
* Resolving pr comments for service account count
* Resolve the pr comments
* Remove the store procedure that is no-longer needed
* Rename a property properly
* Resolving the PR comment
* Resolve PR comments
* Resolving PR comments
* Resolving the Pr comments
* Resolving some PR comments
* Resolving the PR comments
* Resolving the build identity build
* Add additional Validation
* Resolve the Lint issues
* remove unnecessary using directive
* Remove the white spaces
* Adding unit test for the stripe payment
* Remove the incomplete test
* Fixing the failing test
* Fix the failing test
* Fix the fail test on organization service
* Fix the failing unit test
* Fix the whitespace format
* Fix the failing test
* Fix the whitespace format
* resolve pr comments
* Fix the lint message
* Resolve the PR comments
* resolve pr comments
* Resolve pr comments
* Resolve the pr comments
* remove unused code
* Added for sm validation test
* Fix the whitespace format issues
---------
Co-authored-by: Thomas Rittson <trittson@bitwarden.com>
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
* SM-802: Add SecretsManagerBetaColumn SQL migration and Org table update
* SM-802: Run EF Migrations for SecretsManagerBeta
* SM-802: Update the two Org procs and View, and move data migration to a separate file
* SM-802: Add missing comma to Organization_Create
* [AC-1418] Add missing SecretsManagerPlan property to OrganizationResponseModel (#3055)
* SM-802: Remove extra GO statement from data migration script
* [AC 1460] Update Stripe Configuration (#3070)
* change the stripeseat id
* change service accountId to align with new product
* make all the Id name for consistent
* SM-802: Add SecretsManagerBeta to OrganizationResponseModel
* SM-802: Move SecretsManagerBeta from OrganizationResponseModel to OrganizationSubscriptionResponseModel. Use sp_refreshview instead of sp_refreshsqlmodule in the migration script.
* SM-802: Remove OrganizationUserOrganizationDetailsView.sql changes
* [AC 1410] Secrets Manager subscription adjustment back-end changes (#3036)
* Create UpgradeSecretsManagerSubscription command
---------
Co-authored-by: Thomas Rittson <trittson@bitwarden.com>
* SM-802: Remove SecretsManagerBetaColumn migration
* SM-802: Add SecretsManagerBetaColumn migration
* SM-802: Remove OrganizationUserOrganizationDetailsView update
* [AC-1495] Extract UpgradePlanAsync into a command (#3081)
* This is a pure lift & shift with no refactors
* Only register subscription commands in Api
---------
Co-authored-by: cyprain-okeke <cokeke@bitwarden.com>
* [AC-1503] Fix Stripe integration on organization upgrade (#3084)
* Fix SM parameters not being passed to Stripe
* Fix flaky test
* Fix error message
* [AC-1504] Allow SM max autoscale limits to be disabled (#3085)
* [AC-1488] Changed SM Signup and Upgrade paths to set SmServiceAccounts to include the plan BaseServiceAccount (#3086)
* [AC-1510] Enable access to Secrets Manager to Organization owner for new Subscription (#3089)
* Revert changes to ReferenceEvent code (#3091)
* Revert changes to ReferenceEvent code
This will be done in AC-1481
* Revert ReferenceEventType change
* Move NoopServiceAccountRepository to SM and update namespace
* [AC-1462] Add secrets manager service accounts autoscaling commands (#3059)
* Adding the Secret manager to the Plan List
* Adding the unit test for the StaticStoreTests class
* Fix whitespace formatting
* Fix whitespace formatting
* Price update
* Resolving the PR comments
* Resolving PR comments
* Fixing the whitespace
* only password manager plans are return for now
* format whitespace
* Resolve the test issue
* Fixing the failing test
* Refactoring the Plan separation
* add a unit test for SingleOrDefault
* Fix the whitespace format
* Separate the PM and SM plans
* Fixing the whitespace
* Remove unnecessary directive
* Fix imports ordering
* Fix imports ordering
* Resolve imports ordering
* Fixing imports ordering
* Fix response model, add MaxProjects
* Fix filename
* Fix format
* Fix: seat price should match annual/monthly
* Fix service account annual pricing
* Changes for secret manager signup and upgradeplan
* Changes for secrets manager signup and upgrade
* refactoring the code
* Format whitespace
* remove unnecessary using directive
* Changes for subscription Update
* Update the seatAdjustment and update
* Resolve the PR comment on Subscription creation
* Resolve PR comment
* Add password manager to the error message
* Add UseSecretsManager to the event log
* Resolve PR comment on plan validation
* Resolving pr comments for service account count
* Resolving pr comments for service account count
* Resolve the pr comments
* Remove the store procedure that is no-longer needed
* Add a new class for update subscription
* Modify the Update subscription for sm
* Add the missing property
* Rename a property properly
* Resolving the PR comment
* Resolve PR comments
* Resolving PR comments
* Resolving the Pr comments
* Resolving some PR comments
* Resolving the PR comments
* Resolving the build identity build
* Add additional Validation
* Resolve the Lint issues
* remove unnecessary using directive
* Remove the white spaces
* Adding unit test for the stripe payment
* Remove the incomplete test
* Fixing the failing test
* Fix the failing test
* Fix the fail test on organization service
* Fix the failing unit test
* Fix the whitespace format
* Fix the failing test
* Fix the whitespace format
* resolve pr comments
* Fix the lint message
* refactor the code
* Fix the failing Test
* adding a new endpoint
* Remove the unwanted code
* Changes for Command and Queries
* changes for command and queries
* Fix the Lint issues
* Fix imports ordering
* Resolve the PR comments
* resolve pr comments
* Resolve pr comments
* Fix the failing test on adjustSeatscommandtests
* Fix the failing test
* Fix the whitespaces
* resolve failing test
* rename a property
* Resolve the pr comments
* refactoring the existing implementation
* Resolve the whitespaces format issue
* Resolve the pr comments
* [AC-1462] Created IAvailableServiceAccountsQuery along its implementation and with unit tests
* [AC-1462] Renamed ICountNewServiceAccountSlotsRequiredQuery
* [AC-1462] Added IAutoscaleServiceAccountsCommand and implementation
* Add more unit testing
* fix the whitespaces issues
* [AC-1462] Added unit tests for AutoscaleServiceAccountsCommand
* Add more unit test
* Remove unnecessary directive
* Resolve some pr comments
* Adding more unit test
* adding more test
* add more test
* Resolving some pr comments
* Resolving some pr comments
* Resolving some pr comments
* resolve some pr comments
* Resolving pr comments
* remove whitespaces
* remove white spaces
* Resolving pr comments
* resolving pr comments and fixing white spaces
* resolving the lint error
* Run dotnet format
* resolving the pr comments
* Add a missing properties to plan response model
* Add the email sender for sm seat and service acct
* Add the email sender for sm seat and service acct
* Fix the failing test after email sender changes
* Add staticstorewrapper to properly test the plans
* Add more test and validate the existing test
* Fix the white spaces issues
* Remove staticstorewrapper and fix the test
* fix a null issue on autoscaling
* Suggestion: do all seat calculations in update model
* Resolve some pr comments
* resolving some pr comments
* Return value is unnecessary
* Resolve the failing test
* resolve pr comments
* Resolve the pr comments
* Resolving admin api failure and adding more test
* Resolve the issue failing admin project
* Fixing the failed test
* Clarify naming and add comments
* Clarify naming conventions
* Dotnet format
* Fix the failing dependency
* remove similar test
* [AC-1462] Rewrote AutoscaleServiceAccountsCommand to use UpdateSecretsManagerSubscriptionCommand which has the same logic
* [AC-1462] Deleted IAutoscaleServiceAccountsCommand as the logic will be moved to UpdateSecretsManagerSubscriptionCommand
* [AC-1462] Created method AdjustSecretsManagerServiceAccountsAsync
* [AC-1462] Changed SecretsManagerSubscriptionUpdate to only be set by its constructor
* [AC-1462] Added check to CountNewServiceAccountSlotsRequiredQuery and revised unit tests
* [AC-1462] Revised logic for CountNewServiceAccountSlotsRequiredQuery and fixed unit tests
* [AC-1462] Changed SecretsManagerSubscriptionUpdate to receive Organization as a parameter and fixed the unit tests
* [AC-1462] Renamed IUpdateSecretsManagerSubscriptionCommand methods UpdateSubscriptionAsync and AdjustServiceAccountsAsync
* [AC-1462] Rewrote unit test UpdateSubscriptionAsync_ValidInput_Passes
* [AC-1462] Registered CountNewServiceAccountSlotsRequiredQuery for dependency injection
* [AC-1462] Added parameter names to SecretsManagerSubscriptionUpdateRequestModel
* [AC-1462] Updated SecretsManagerSubscriptionUpdate logic to handle null parameters. Revised the unit tests to test null values
---------
Co-authored-by: cyprain-okeke <cokeke@bitwarden.com>
Co-authored-by: Thomas Rittson <trittson@bitwarden.com>
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
* Add UsePasswordManager to sync data (#3114)
* [AC-1522] Fix service account check on upgrading (#3111)
* Resolved the checkmarx issues
* [AC-1521] Address checkmarx security feedback (#3124)
* Reinstate target attribute but add noopener noreferrer
* Update date on migration script
* Remove unused constant
* Revert "Remove unused constant"
This reverts commit 4fcb9da4d6.
This is required to make feature flags work on the client
* [AC-1458] Add Endpoint And Service Logic for secrets manager to existing subscription (#3087)
---------
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
Co-authored-by: Thomas Rittson <trittson@bitwarden.com>
* Remove duplicate migrations from incorrectly resolved merge
* [AC-1468] Modified CountNewServiceAccountSlotsRequiredQuery to return zero if organization has SecretsManagerBeta == true (#3112)
Co-authored-by: Thomas Rittson <trittson@bitwarden.com>
* [Ac 1563] Unable to load billing and subscription related pages for non-enterprise organizations (#3138)
* Resolve the failing family plan
* resolve issues
* Resolve code related pr comments
* Resolve test related comments
* Resolving or comments
* [SM-809] Add service account slot limit check (#3093)
* Add service account slot limit check
* Add query to DI
* [AC-1462] Registered CountNewServiceAccountSlotsRequiredQuery for dependency injection
* remove duplicate DI entry
* Update unit tests
* Remove comment
* Code review updates
---------
Co-authored-by: cyprain-okeke <cokeke@bitwarden.com>
Co-authored-by: Thomas Rittson <trittson@bitwarden.com>
Co-authored-by: Thomas Rittson <31796059+eliykat@users.noreply.github.com>
Co-authored-by: Rui Tome <rtome@bitwarden.com>
* [AC-1461] Secrets manager seat autoscaling (#3121)
* Add autoscaling code to invite user, save user, and bulk enable SM
flows
* Add tests
* Delete command for BulkEnableSecretsManager
* circular dependency between OrganizationService and
UpdateSecretsManagerSubscriptionCommand - fixed by temporarily
duplicating ReplaceAndUpdateCache
* Unresolvable dependencies in other services - fixed by temporarily
registering noop services and moving around some DI code
All should be resolved in PM-1880
* Refactor: improve the update object and use it to adjust values,
remove excess interfaces on the command
* Handle autoscaling-specific errors
---------
Co-authored-by: Rui Tomé <108268980+r-tome@users.noreply.github.com>
* Move bitwarden_license include reference into conditional block
* [AC 1526]Show current SM seat and service account usage in Bitwarden Portal (#3142)
* changes base on the tickets request
* Code refactoring
* Removed the unwanted method
* Add implementation to the new method
* Resolve some pr comments
* resolve lint issue
* resolve pr comments
* add the new noop files
* Add new noop file and resolve some pr comments
* resolve pr comments
* removed unused method
---------
Co-authored-by: Shane Melton <smelton@bitwarden.com>
Co-authored-by: cyprain-okeke <108260115+cyprain-okeke@users.noreply.github.com>
Co-authored-by: Colton Hurst <colton@coltonhurst.com>
Co-authored-by: cyprain-okeke <cokeke@bitwarden.com>
Co-authored-by: Rui Tomé <108268980+r-tome@users.noreply.github.com>
Co-authored-by: Conner Turnbull <cturnbull@bitwarden.com>
Co-authored-by: Rui Tome <rtome@bitwarden.com>
Co-authored-by: Thomas Avery <43214426+Thomas-Avery@users.noreply.github.com>
* Swagger fixes
Co-Authored-By: Oscar Hinton <Hinton@users.noreply.github.com>
* Make Response Models return Guids instead of strings
* Change strings into guids in ScimApplicationFactory
---------
Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com>
* Extract authorization from project delete command
* Support service account write access
---------
Co-authored-by: Matt Bishop <mbishop@bitwarden.com>
* SM-768: Update EFCore and related packages to >= 7.0
* SM-768: Update more packages for the EF 7 upgrade
* SM-768: Update the PostgreSQL package
* SM-768: Run dotnet restore --force-evaluate
* SM-768: Revert package upgrades for 3 projects
* SM-768: Update the dotnet-ef tool
* adding ability for service account to have write access
* Suggested changes
* fixing tests
* dotnet format changes
* Adding RunAsServiceAccountWIthPermission logic to ProjectAuthorizationhandlerTests
* Removing logic that prevents deleting and updating a secret. Adding Service Account logic to tests inside of secretAuthorizationhandlerTests.
* Removing Service Account from CanUpdateSecret_NotSupportedClientTypes_DoesNotSuceed because it is a supported client type now :)
* thomas sugested changes
* using Arg.Any<AccessClientType>() instead of default in tests
* merge conflict changes and code updates to remove service account tests that are outdated
* fixing tests
* removing extra spaces that lint hates
* health check services added
* health check extension added
* added get connection string
* made changes to hrslth check method
* Added database health check
* added identity server health check
* added identity server health check
* Added logger publisher
* latest changes
* removed file
* Added mail server check for dev
* Added authorization to health check url path
* commented
* Added exception to switch
* Removed exclude code coverage
* Added health check for redis
* Added todos
* Added storage queue checks
* Added checks for mail
* Removed unused references and fixed linting issue
* Lint issues
* Moved healthchecks to sharedWeb project and exposed builder as a parameter to configure more health checks based on a project
* Added health check to API project
* dependencies updated
* Removed ef core health check dependencies
* Added checks to only add a health check when the connection string exists, moved health check from startup to extension class
* Merged with master and fixed conflicts
* Fixed lint issues
* Added check for amazon ses
* merged with master
* fixed lint
* Removed Amazon SES health check
* Move to access query for project commands
* Swap to hasAccess method per action
* Swap to authorization handler pattern
* Move ProjectOperationRequirement to Core
* Add default throw + tests
* Extract authorization out of commands
* Unit tests for authorization handler
* Formatting
* Swap to reflection for testing switch
* Swap to check read & reflections in test
* fix wording on exception
* Refactor GetAccessClient into its own query
* Use accessClientQuery in project handler
* Move to access query for project commands
* Swap to hasAccess method per action
* Swap to authorization handler pattern
* Move ProjectOperationRequirement to Core
* Add default throw + tests
* Swap to reflection for testing switch
* SM-695: Block create or update for admins on secrets outside of the org
* SM-695: Update test, org is required on project
* SM-695: Update tests to set matching org id in project
* SM-695: Ensure there is no more than 1 project connected to a secret, plus remove org admin check in the CreateSecretCommand.
* SM-695: Add integration tests for create and update secrets security fixes
* SM-695: Update Create and Update secret tests, a secret can only be in one project at a time
* [EC-1014] Create Organization Status (Pending/Created) (#2610)
* [EC-427] Add columns 'Type' and 'BillingPhone' to Provider table
* [EC-427] Provider table Type and BillingPhone MySql migrations
* [EC-427] Provider table Type and BillingPhone Postgres migrations
* [EC-427] Add mysql migration script
* [EC-427] Add mysql migration script
* [EC-427] Updated Provider sql script to include default column value
* [EC-427] Removed default value from Provider.Type column
* [EC-427] Changed migration script to include a default value constraint instead of updating the null type
* [EC-427] Updated Sql project Provider table script
* [EC-427] Changed migration script to use 'Create OR Alter' for views and sprocs
* [EC-427] Added default values for 'BillingPhone' and 'Type' fields on sprocs [dbo].[Provider_Create] and [dbo].[Provider_Update]
* [EC-427] Adjusting metadata in migration script
* [EC-427] Updated Provider sprocs SQL script files
* [EC-427] Fixed migration script
* [EC-427] Added sqlite migration
* [EC-427] Add missing Provider_Update sproc default value
* [EC-427] Added missing GO action to migration script
* [EC-428] Redirect to Edit after creating Provider
* Revert "[EC-428] Redirect to Edit after creating Provider"
This reverts commit 6347bca1ed.
* [EC-1014] Create OrganizationStatusType and add Status column to Organizations table
* [EC-1014] Added EF migrations
* [EC-1014] dotnet format
* [EC-1014] Changed Organization.Status from SMALLINT to TINYINT
* [EC-1014] Set Organization.Status default value = 1
* [EC-1014] Setting Organization.Status default value as 1
* [EC-459 / EC-428] Admin panel: Add Provider Type to list and creation flow (#2593)
* [EC-427] Add columns 'Type' and 'BillingPhone' to Provider table
* [EC-427] Provider table Type and BillingPhone MySql migrations
* [EC-427] Provider table Type and BillingPhone Postgres migrations
* [EC-427] Add mysql migration script
* [EC-427] Add mysql migration script
* [EC-427] Updated Provider sql script to include default column value
* [EC-427] Removed default value from Provider.Type column
* [EC-427] Changed migration script to include a default value constraint instead of updating the null type
* [EC-427] Updated Sql project Provider table script
* [EC-427] Changed migration script to use 'Create OR Alter' for views and sprocs
* [EC-427] Added default values for 'BillingPhone' and 'Type' fields on sprocs [dbo].[Provider_Create] and [dbo].[Provider_Update]
* [EC-427] Adjusting metadata in migration script
* [EC-427] Updated Provider sprocs SQL script files
* [EC-427] Fixed migration script
* [EC-427] Added sqlite migration
* [EC-427] Add missing Provider_Update sproc default value
* [EC-427] Added missing GO action to migration script
* [EC-459] Added Type column to Providers list
* [EC-428] Added Type, BusinessName and BillingEmail to CreateProviderModel
* [EC-428] Updated Create Provider view to include new fields
* [EC-428] Updated ProviderService to not create a ProviderUser for the type Reseller
* [EC-428] Added custom validation for Provider fields depending on selected Type
* [EC-428] Redirect to Edit after creating Provider
* [EC-428] Setting Provider status as Created for Resellers
* [EC-428] Redirect on Provider creation depending if self host server
* [EC-428] Split ProviderService.CreateAsync into two methods: CreateMspAsync and CreateResellerAsync
* [EC-428] Created ICreateProviderCommand and added service for injection on Admin.Startup
* [EC-428] Modified Provider views to use DisplayName attribute values
* [EC-428] Moved ICreateProviderCommand to Core project
* [EC-428] Adding ICreateProviderCommand injection next to IProviderService
* [EC-428] Moved CreateProviderCommand to Commercial.Core project
* [EC-459] Added Type column to Providers list
* [EC-428] Added Type, BusinessName and BillingEmail to CreateProviderModel
* [EC-428] Updated Create Provider view to include new fields
* [EC-428] Updated ProviderService to not create a ProviderUser for the type Reseller
* [EC-428] Added custom validation for Provider fields depending on selected Type
* [EC-428] Redirect to Edit after creating Provider
* [EC-428] Setting Provider status as Created for Resellers
* [EC-428] Redirect on Provider creation depending if self host server
* [EC-428] Split ProviderService.CreateAsync into two methods: CreateMspAsync and CreateResellerAsync
* [EC-428] Created ICreateProviderCommand and added service for injection on Admin.Startup
* [EC-428] Modified Provider views to use DisplayName attribute values
* [EC-428] Moved ICreateProviderCommand to Core project
* [EC-428] Adding ICreateProviderCommand injection next to IProviderService
* [EC-428] Moved CreateProviderCommand to Commercial.Core project
* [EC-428] Moved CreateProviderCommand to namespace Bit.Commercial.Core.Providers
* [EC-429] Provider details screen updated with Type, BillingPhone and Organization details (#2666)
* [EC-430] Admin portal: Update organization information screen (#2672)
* [EC-430] Added ProviderOrganizationProviderDetailsView to get Provider details for an Organization
* [EC-430] Added Provider information to Organization Edit/View on Admin panel
* [EC-430] Remove "Add to Reseller" button
* [EC-430] Removed unused property OrganizationEditModel.ClientOwnerEmail
* [EC-430] Replaced IProviderOrganizationRepository.GetProviderDetailsByOrganizationAsync with IProviderRepository.GetByOrganizationIdAsync
* [EC-430] Deleted ProviderOrganizationProviderDetails and ProviderOrganizationProviderDetailsReadByOrganizationIdQuery
* [EC-429] Only show Create/Add Existing Organization buttons for Reseller providers (#2723)
* [EC-432] Add existing Organizations to Provider (#2683)
* [EC-432] Added ProviderOrganizationUnassignedOrganizationDetails_Search stored procedure
* [EC-432] Added IProviderOrganizationRepository.SearchAsync
* [EC-432] Created controller ProviderOrganizationsController to assign Organizations to a Provider
* [EC-432] Filter existing organizations by plans Enterprise or Team
* [EC-432] Existing Organization name links to edit page
* [EC-432] EF filtering out existing organizations by plan type enterprise or teams
* [EC-432] Creating multiple ProviderOrganization records
* [EC-432] Added ProviderOrganizationUnassignedOrganizationDetails_Search stored procedure
* [EC-432] Added IProviderOrganizationRepository.SearchAsync
* [EC-432] Created controller ProviderOrganizationsController to assign Organizations to a Provider
* [EC-432] Filter existing organizations by plans Enterprise or Team
* [EC-432] Existing Organization name links to edit page
* [EC-432] EF filtering out existing organizations by plan type enterprise or teams
* [EC-432] Creating multiple ProviderOrganization records
* [EC-432] Renamed migration script and added missing sproc
* [EC-432] Saving multiple events for the created ProviderOrganizations
* [EC-432] Included unit testing for ProviderService.AddOrganizations and EventService.LogProviderOrganizationEventsAsync
* [EC-432] Removed async from NoopEventService.LogProviderOrganizationEventsAsync
* [EC-432] Remove unused dependency setup in ProviderServiceTests.AddOrganizations_Success
* [EC-432] Renamed AddOrganizations to AddOrganizationsToReseller and removed addingUserId and key arguments
* [EC-432] Added DisplayName attributes to ProviderOrganizationViewModel and used them in the view
* [EC-432] Reverted changes to input fields
* [EC-432] Moved unassigned organizations search to Organizations repo
* [EC-432] Moved AddExistingOrganization action to ProvidersController
* [EC-432] dotnet format
* [EC-432] Fixed unit test issues
* [EC-432] Removed unnecessary Html.DisplayNameFor for labels
* [EC-432] Renamed OrganizationSearchViewModel to OrganizationUnassignedToProviderSearchViewModel
* [EC-432] Modified IEventService.LogProviderOrganizationEventsAsync to receive an IEnumerable as parameter
* [EC-432] Updated IProviderOrganizationRepository and replaced CreateWithManyOrganizations method with CreateManyAsync
* [EC-432] Deleted ProviderOrganization_CreateWithManyOrganizations
* [AC-432] Simplified Organization_UnassignedToProviderSearch query
* [AC-432] Removed unnecessary setup
* [EC-432] Checking if stored procedure exists before creating
* [EC-432] Renamed migration file to recent date
* [EC-435] Admin Portal: Add new Organization creation flow UI (#2707)
* [EC-435] Created _OrganizationForm partial view. Added actions for creating an Organization assigned to a provider
* [EC-435] Remove logic for creating an organization
* [EC-435] Created partial view _OrganizationFormScripts
* [EC-435] Remove unused ReferenceEventType
* [EC-435] Added TODO comment on Organization Create
* [EC-435] Checking if Provider type is Reseller on creating new assigned organization
* [EC-435] Setting the Organization plan type as TeamsMonthly by default when adding to a provider
* [EC-435] Removing unused buttons
* [EC-435] Switched hidden fields to form submit route value
* [EC-435] Moved _OrganizationForm and _OrganizationFormScripts to Shared folder
* [EC-435] Moved Create organization actions from OrganizationsController to ProvidersController
* [EC-435] Fixing bug on saving Organization that would have BillingEmail as null
* [EC-435] Added null check to Provider
* [EC-435] Moved trial buttons script logic to Edit view
* [AC-431] Add new organization invite process (#2737)
* [EC-435] Created _OrganizationForm partial view. Added actions for creating an Organization assigned to a provider
* [EC-435] Remove logic for creating an organization
* [EC-435] Created partial view _OrganizationFormScripts
* [EC-435] Remove unused ReferenceEventType
* [EC-435] Added TODO comment on Organization Create
* [EC-435] Checking if Provider type is Reseller on creating new assigned organization
* [EC-435] Setting the Organization plan type as TeamsMonthly by default when adding to a provider
* [EC-435] Removing unused buttons
* [EC-435] Switched hidden fields to form submit route value
* [EC-435] Moved _OrganizationForm and _OrganizationFormScripts to Shared folder
* [EC-435] Moved Create organization actions from OrganizationsController to ProvidersController
* [AC-431] Added new ReferenceEventType OrganizationCreatedByAdmin
* [AC-431] Added method IOrganizationService.CreateOrganization
* [AC-431] Creating new Organization with Pending status and assigning to Provider
* [AC-431] Added method to IMailService to send invitation to initialize org
* [AC-431] Added methods CreatePendingOrganization and InitPendingOrganization to IOrganizationService
* [AC-431] Org invite includes initOrganization parameter
* [AC-431] Modified existing Accept organization user action to initialize org
* [AC-431] Updated ProvidersController method name
* [AC-431] Created OrganizationUserInitInvitedViewModel to link to 'accept-init-organization' url
* [AC-431] Added action AcceptInit to OrganizationUsersController
* [AC-431] Resend owner invite
* [AC-431] dotnet format
* [AC-431] Removed unused parameter 'addingUserId' from IProviderService.AddOrganization
* [AC-431] Removed setting manual values for CreationDate and RevisionDate
* [AC-431] Updated OrganizationService.InitPendingOrganization to throw exceptions when the Organization does not meet the required criteria
* [AC-431] Modified OrganizationUserInitInvitedViewModel to inherit properties from OrganizationUserInvitedViewModel
* [AC-431] Removed unecessary parameter check
* [AC-431] Moved method description to IOrganizationService.InitPendingOrganization
* [AC-431] Moved ApplicationCacheService.UpsertOrganizationAbilityAsync and ReferenceEventService.RaiseEventAsync to OrganizationService
* [AC-431] Creating collection after creating organization
* [EC-435] Fixing bug on saving Organization that would have BillingEmail as null
* [AC-431] Deleted OrganizationUserInitInvitedViewModel and added parameter InitOrganization to OrganizationUserInvitedViewModel.cs
* [AC-431] Checking if the user has any existing SingleOrg policies before initializing an Org
* [AC-431] Remove commented code
* [EC-435] Added null check to Provider
* [EC-435] Moved trial buttons script logic to Edit view
* [AC-431] Added EncryptedString attribute to OrganizationUserAcceptInitRequestModel.CollectionName
* [AC-431] Refactored plan check condition
* [AC-431] Remove duplicate _applicationCacheService.UpsertOrganizationAbilityAsync call
* [AC-431] Removed IMailService.SendOrganizationInitInviteEmailAsync
* [AC-431] Added parameters ClaimsPrincipal and IUserService to IOrganizationService.CreatePendingOrganization
* [AC-434] Hide Billing screen for Reseller clients (#2783)
* [AC-434] Added ProviderType to ProfileOrganizationResponseModel
* [AC-434] Migration script
* [AC-434] Fixed indentation on migration script
* [AC-434] Hiding sensitive subscription data if the user does not have permissions
* [AC-434] Fixed missing dependency in unit test
* [AC-434] Altered BillingSubscription.Amount and BillingSubscriptionUpcomingInvoice.Amount to nullable
* [AC-434] Replaced CurrentContext.ManageBilling with ViewBillingHistory, ViewSubscription, EditSubscription and EditPaymentMethods
* [AC-434] Reverted change on BillingSubscription.Amount and now setting Subscription.Items = null when User does not have permission
* [AC-434] Added ProviderOrganizationProviderDetails_ReadByUserId
* [AC-434] Added IProviderOrganizationRepository.GetManyByUserAsync
* [AC-434] Added CurrentContext.GetOrganizationProviderDetails
* [AC-434] Remove unneeded join Organization table
* [AC-1255] Search Existing Organizations by partial Email (#2830)
* [AC-1255] Added email search field input validation
* [AC-1255] Reverted added email pattern
* [AC-1255] Modified Organization search by Email to search using substring
* [AC-1276] Displaying an Organizations pending owners if the Organization is in a Pending status (#2834)
* [AC-432] Checking that an existing Organization is not assigned to any Provider before being assigned (#2840)
* [AC-432] Checking if any of the selected Organizations is already assigned to a Provider
* [AC-432] Changed ProviderOrganization_ReadByOrganizationIds to only get count
* [AC-432] Replaced IProviderOrganizationRepository.GetCountByOrganizationIdsAsync with call to IProviderOrganizationRepository.GetByOrganizationId
* [AC-432] undo new line
* [AC-432] Fixed unit test
* Revert "[AC-432] Replaced IProviderOrganizationRepository.GetCountByOrganizationIdsAsync with call to IProviderOrganizationRepository.GetByOrganizationId"
This reverts commit ee6e095e88.
# Conflicts:
# util/Migrator/DbScripts/2023-03-22_00_ProviderAddExistingOrganizations.sql
* [AC-432] Created new migration script for ProviderOrganization_ReadCountByOrganizationIds
* SM-561: Update secret revision date on restore
* SM-561: Update secret revision dates when a project is deleted
* SM-561: Fix bug when updating revision dates for secrets when their parent project is deleted
* SM-561: Handle case when there are no secrets in the projects that are being deleted
* SM-561: Rename func to GetManyWithSecretsByIds and move UpdateRevisionDates call from ProjectsController to projects delete command
* SM-561: update secret ids before project deletion
* SM-561: Refactor out command in command call to follow CQRS pattern
* SM-561: Remove null check
* fixing issue with user being able to update a secret if they are assigning it to a project that has read/write permissions. Even though the customer is only allowed to read.
* Add additional check for newly assigned project access and original project access.
* fixing Lint issue
* Fixing tests
* uneeded param removed
* Updating to extract logic into function
* renaming function
* lint fixes
* renaming function
* LaunchDarkly service
* Load file-based flag values, properly support offline only when self-host
* Simplify tests
* Use interface for LD settings
* Remove tests that will provide inconsistent results depending on machine setup and file fallback
* Fall back to offline mode more actively
* Drive fallback file path with setting
* [SM-66] Create Secret Database Table (#2144)
Objective
The purpose of this PR is to create a database table, entity, and repository for the new Secret database table.
The new Secret table will use entity framework for all database providers.
* [SM-67] Get all secrets by org ID (#2163)
Add a controller to fetch secrets associated with an organization ID.
To note, the [SecretsManager] attribute makes this controller only available for local development.
* [SM-68] Add API endpoints for getting, creating, and editing secrets (#2201)
The purpose of this PR is to add API endpoints for getting, creating, and editing secrets for the Secrets Manager project.
* Move interfaces to core (#2211)
* [SM-63] Read UTC DateTimes from databases via EF and order by revision date (#2206)
* Read UTC DateTimes from db and order by revision
* Move orderby to repo layer
* [SM-185] Add EE_Testing_env to server (#2222)
* Sm 104 project Database (#2192)
* Project DB addition and sprocs
* Adding spaces to the end of each file, fixing minor issues
* removing useless comments
* Adding soft delete proc to migration
* Project EF Scaffold
* Additional changes to use EF instead of procedures
* Adding dependency injection
* Fixing lint errors
* Bug fixes
* Adding migration scripts, removing sproc files, and setting up Entity framework code
* Adding back accidentally deleted sproc
* Removing files that shouldn't have been created
* Lint
* Small changes based on Oscar's rec (#2215)
* Migrations for making CreateDate not null
* adding space to end of file
* Making Revision date not null
* dotnet format
* Adding nonclustered indexes to SQL
* SM-104: Update PR with changes Thomas proposed
Co-authored-by: CarleyDiaz-Bitwarden <103955722+CarleyDiaz-Bitwarden@users.noreply.github.com>
Co-authored-by: Thomas Avery <tavery@bitwarden.com>
Co-authored-by: Colton Hurst <colton@coltonhurst.com>
* Removing org ID from create request body (#2243)
* SM-114: Add create & update project endpoints (#2251)
* SM-114: Initial commit with create project endpoint (for SM)
* SM-114: Add Update Project route (for SM)
* SM-114: Fix file encodings
* Fix DI issue for SM Project Create/Update commands
* Fix import ordering for linter
* SM-114: Remove unneeded lines setting DeletedDate, as it should already be null
* SM-114: Only have OrgId in route for CreateProject
* Remove unneeded using
* SM-114: Initial commit with create project endpoint (for SM)
* SM-114: Add Update Project route (for SM)
* SM-114: Fix file encodings
* Fix DI issue for SM Project Create/Update commands
* Fix import ordering for linter
* SM-114: Remove unneeded lines setting DeletedDate, as it should already be null
* SM-114: Only have OrgId in route for CreateProject
* Remove unneeded using
* Fully remove OrgId from ProjectCreateRequestModel
* [SM-64] Soft Delete Secrets (#2253)
* Bulk delete secrets with command unit tests
* Controller unit tests
* Optimize conditionals
* SM-64 bulk delete integration test
* fix test
* SM-64 code review updated
* [SM-65] Fix return empty secrets list (#2281)
* Secrets return empty list
* [SM-246] Use repository in integration test (#2285)
* [SM-190] Add integration tests to Secrets (#2292)
* Adding integration tests for the SecretsController
Co-authored-by: Hinton <hinton@users.noreply.github.com>
* Sm 95 - Adding GetProjects endpoint (#2295)
* SM-114: Initial commit with create project endpoint (for SM)
* SM-114: Add Update Project route (for SM)
* SM-114: Fix file encodings
* Fix DI issue for SM Project Create/Update commands
* Adding GetProjectsByOrg
* fixing merge conflicts
* fix
* Updating to return empty list
* removing null check
Co-authored-by: Colton Hurst <colton@coltonhurst.com>
Co-authored-by: CarleyDiaz-Bitwarden <103955722+CarleyDiaz-Bitwarden@users.noreply.github.com>
* [SM-191] Create ServiceAccount Table (#2301)
* SM-191 Create ServiceAccount Table
* [SM-207] API for listing service accounts by organization (#2307)
* SM-207 list service accounts by org
* SM-96: Add ability to get project by id (#2314)
* SM-96: Small change to allow getting project by id
* Fix whitespace issue
* Add first integration test and fix date bug
* Ensure tests are consistent
* Add more project controller integration tests
* Remove commented delete for now
* [SM-187] Create ServiceAccounts (#2323)
* SM-187 Create & Update ServiceAccounts
* Remove extra new line src/Api/Controllers/ServiceAccountsController.cs
Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com>
* [SM-218] [SM-219] SM Auth flow (#2297)
* SM-282 Delete Projects (#2335)
* SM-282 delete & bulk delete projects
* Have delete commands return tuple with object
* Fix admin project not working after secrets manager changes (#2339)
* [SM-150] proj and secrets mapping (#2286)
* Beggining of changes for Project Secrets mapping
* Beggining of changes for project and secrets mapping
* Inital changes to add Mapping table for Project Secrets
* Resolve migration not working properly
* Indent sql
* Changes to try and return projects in the GetManyByOrganizaationIDAsync on SecretRepository.
* Changes made with Oscar
* Add reversemap
* running lint and removing comments
* Lint fixes
* fixing merge issues
* Trying to fix the DB issue
* DB fixes
* fixes
* removing unused space
* fixing lint issue
* final lint fix I hope
* removing manually added sql.sqlproj
* Lint changes and fixing the sql proj issues
* adding ServiceAccount to sql proj
* Removing ON DELETE CASCADE
* remove On delete cascade
* changes for deleting project and secret inside of the Organization_DeleteById procedure.
* changes for deleting project and secret inside of the Organization_DeleteById procedure.
* migration changes
* Updating constraints
* removing void
* remove spaces
* updating cipherRepo tests to be task instead of void
* fixing
* fixing
* test
* fix
* fix
* changes to remove circular dependency
* fixes
* sending guid and string name of the project over
* Update src/Sql/dbo/Tables/Secret.sql
Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com>
* Update src/Sql/dbo/Tables/Project.sql
Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com>
* removing unused code
* Potential refactor (#2340)
* migrations
* Postgres migraiton
* Update src/Api/SecretManagerFeatures/Models/Response/SecretResponseModel.cs
Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com>
* rename file
* Update util/Migrator/DbScripts/2022-09-19_00_ProjectSecret.sql
Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com>
* Lint fixes
* removing extra semi colon
* removing circular references with projects and secrets
* adding back projects
* Add ProjectFixture
* Update util/Migrator/DbScripts/2022-09-19_00_ProjectSecret.sql
Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com>
* Update util/Migrator/DbScripts/2022-09-19_00_ProjectSecret.sql
Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com>
Co-authored-by: CarleyDiaz-Bitwarden <103955722+CarleyDiaz-Bitwarden@users.noreply.github.com>
Co-authored-by: Hinton <hinton@users.noreply.github.com>
* [SM-300] Access token endpoint (#2377)
* [SM-324] Add Organization to JWT claim (#2379)
* [SM-259] Add create access token endpoint for service accounts (#2411)
* Add create access token for service accounts
* [SM-259] Fix create access token scope initialization (#2418)
* Fix namespace for ServiceAccount command tests
* Remove "this" from SecretsManager requests
* Fix have scope be assigned a JSON list
* SM-99: Individual Project / Secrets Tab (#2399)
Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com>
* [SM-361] Add Support for never expiring ApiKeys (#2450)
* Update database to support never expiring ApiKey
* Update Api to support never expiring ApiKeys
* Fix unit test variable naming
* Remove required from model
* Fix spacing
* Add EF migrations
* Run dotnet format
* Update util/Migrator/DbScripts/2022-11-29_00_ApiKey_Never_Expire.sql
Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com>
Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com>
* [SM-359] Fix project secrets migration (#2443)
* [SM-299] Add UseSecretsManager flag (#2413)
* [SM-193] Access Policy (#2359)
* [SM-371] Fix and re-enable parallel integration tests (#2460)
* Fix and re-enable parallel integration tests
* Fix package lock files
* Move fix to ApiApplicationFactory
* Run dotnet restore --force
* Run dotnet format
* Reset packages.lock.json files
* Add project access checks for listing
* SM-99: Add CreateSecretWithProject Integration Test (#2452)
* Add GetSecretsByProjectAsync endpoint
* Add GetManyByProjectIdAsync endpoint
* Update response model for GetSecretsByProjectAsync
* Include projects when returning secrets by project id
* SM-99: Add ability to specify projectId when creating a secret
* SM-99: Update tests to accomodate for new create secret parameter
* Fix failing test
* SM-99: Handle optional projectId for new secret in ToSecret()
* SM-99: Filter out deleted secrets on GetManyByProjectIdAsync() and small refactorings
* SM-99: make CreateAsync for secret more clear
* Add CreateSecretWithProject integration test
* Fix CreateSecretWithProject integration test for SM-99
* Run dotnet format
* Undo added space
* Refactor test
* Refactor CreateSecretWithProject API Integration test again
* Change to boolean flag
* [SM-379] Add SDK device type (#2486)
* Add support for service accounts
* Improve logic for project repository
* Add remaining client types
* Experiment with separate enum for access control
* Add access checks to update project
* Rework AccessClientType
* Add access checks to fetching project
* Add checks to delete project command (untested)
* Remove some service account stuff
* Add ServiceAccount to AccessClientType
* Change CS8509 to error and 8424 to ignore
* Remove unused utcNow
* Fix delete tests
* SM-73 changes (#2422)
* testing
* test2
* testing
* trying to save the projects associated with the secret
* changes
* more changes
* Fix EF error
* Second attempt
* Replace AddIfNotExists with Add.
* changes
* fixing await issue
* lint
* lint fixes
* suggested changes
* suggested changes
* updating tests
* fixing tests 2
* fixing tests
* fixing test
* fixing test
* fixing tests
* test
* testing
* fixing tests for the millionth time
* fixing tests
* allowing nulls for projectIds, fixing lint
* fixing tests
Co-authored-by: Hinton <hinton@users.noreply.github.com>
* fixing tests
* fixing tests
* [SM-222] [SM-357] Squash Secrets Manager migrations (#2540)
* Fix tables not being cleaned up
* Fix migration
* Squash secrets manager migrations
* Reset EF to pre SM state
* Add EF migrations
* Fix unified docker
* Add missed copy
* Fix all unit tests
* draft changes to add access checks to secrets
* updating code
* more changes
* fixing issues
* updating logic for access checks
* updating secrets controller
* changes
* changes
* merging more
* changes
* updateS
* removing unused comment
* changes requested by Thomas
* more changes suggested by Thomas
* making thomas's suggested changes
* final changes
* Run dotnet format
* fixes
* run dotnet format
* Updating tests
* Suggested changes
* lint fixes
* Test updates
* Changes
* Fixes for tests, and dotnet format
* Fixes
* test fixes
* changes
* fix
* fix
* test fix
* removing duplicate
* Removing dupe
---------
Co-authored-by: Thomas Avery <43214426+Thomas-Avery@users.noreply.github.com>
Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com>
Co-authored-by: CarleyDiaz-Bitwarden <103955722+CarleyDiaz-Bitwarden@users.noreply.github.com>
Co-authored-by: Thomas Avery <tavery@bitwarden.com>
Co-authored-by: Colton Hurst <colton@coltonhurst.com>