diff --git a/util/Migrator/DbScripts/2025-03-14_00_AddUseAdminInitiatedSponsorship.sql b/util/Migrator/DbScripts/2025-03-14_00_AddUseAdminInitiatedSponsorship.sql index 7fe66c7d27..c9f3d5cf79 100644 --- a/util/Migrator/DbScripts/2025-03-14_00_AddUseAdminInitiatedSponsorship.sql +++ b/util/Migrator/DbScripts/2025-03-14_00_AddUseAdminInitiatedSponsorship.sql @@ -1,204 +1,198 @@ -/* Introduce new column 'UseAdminSponsoredFamilies' not nullable with default of 0 */ ALTER TABLE [dbo].[Organization] ADD [UseAdminSponsoredFamilies] bit NOT NULL CONSTRAINT [DF_Organization_UseAdminSponsoredFamilies] default (0) GO -/* Add UseAdminSponsoredFamilies as a column to Organization_create */ CREATE OR ALTER PROCEDURE [dbo].[Organization_Create] - @Id UNIQUEIDENTIFIER OUTPUT, - @Identifier NVARCHAR(50), - @Name NVARCHAR(50), - @BusinessName NVARCHAR(50), - @BusinessAddress1 NVARCHAR(50), - @BusinessAddress2 NVARCHAR(50), - @BusinessAddress3 NVARCHAR(50), - @BusinessCountry VARCHAR(2), - @BusinessTaxNumber NVARCHAR(30), - @BillingEmail NVARCHAR(256), - @Plan NVARCHAR(50), - @PlanType TINYINT, - @Seats INT, - @MaxCollections SMALLINT, - @UsePolicies BIT, - @UseSso BIT, - @UseGroups BIT, - @UseDirectory BIT, - @UseEvents BIT, - @UseTotp BIT, - @Use2fa BIT, - @UseApi BIT, - @UseResetPassword BIT, - @SelfHost BIT, - @UsersGetPremium BIT, - @Storage BIGINT, - @MaxStorageGb SMALLINT, - @Gateway TINYINT, - @GatewayCustomerId VARCHAR(50), - @GatewaySubscriptionId VARCHAR(50), - @ReferenceData VARCHAR(MAX), - @Enabled BIT, - @LicenseKey VARCHAR(100), - @PublicKey VARCHAR(MAX), - @PrivateKey VARCHAR(MAX), - @TwoFactorProviders NVARCHAR(MAX), - @ExpirationDate DATETIME2(7), - @CreationDate DATETIME2(7), - @RevisionDate DATETIME2(7), - @OwnersNotifiedOfAutoscaling DATETIME2(7), - @MaxAutoscaleSeats INT, - @UseKeyConnector BIT = 0, - @UseScim BIT = 0, - @UseCustomPermissions BIT = 0, - @UseSecretsManager BIT = 0, - @Status TINYINT = 0, - @UsePasswordManager BIT = 1, - @SmSeats INT = null, - @SmServiceAccounts INT = null, - @MaxAutoscaleSmSeats INT= null, - @MaxAutoscaleSmServiceAccounts INT = null, - @SecretsManagerBeta BIT = 0, - @LimitCollectionCreationDeletion BIT = NULL, -- Deprecated https://bitwarden.atlassian.net/browse/PM-10863 - @LimitCollectionCreation BIT = NULL, - @LimitCollectionDeletion BIT = NULL, - @AllowAdminAccessToAllCollectionItems BIT = 0, - @UseRiskInsights BIT = 0, - @UseAdminSponsoredFamilies BIT = 0 - AS + @Id UNIQUEIDENTIFIER OUTPUT, + @Identifier NVARCHAR(50), + @Name NVARCHAR(50), + @BusinessName NVARCHAR(50), + @BusinessAddress1 NVARCHAR(50), + @BusinessAddress2 NVARCHAR(50), + @BusinessAddress3 NVARCHAR(50), + @BusinessCountry VARCHAR(2), + @BusinessTaxNumber NVARCHAR(30), + @BillingEmail NVARCHAR(256), + @Plan NVARCHAR(50), + @PlanType TINYINT, + @Seats INT, + @MaxCollections SMALLINT, + @UsePolicies BIT, + @UseSso BIT, + @UseGroups BIT, + @UseDirectory BIT, + @UseEvents BIT, + @UseTotp BIT, + @Use2fa BIT, + @UseApi BIT, + @UseResetPassword BIT, + @SelfHost BIT, + @UsersGetPremium BIT, + @Storage BIGINT, + @MaxStorageGb SMALLINT, + @Gateway TINYINT, + @GatewayCustomerId VARCHAR(50), + @GatewaySubscriptionId VARCHAR(50), + @ReferenceData VARCHAR(MAX), + @Enabled BIT, + @LicenseKey VARCHAR(100), + @PublicKey VARCHAR(MAX), + @PrivateKey VARCHAR(MAX), + @TwoFactorProviders NVARCHAR(MAX), + @ExpirationDate DATETIME2(7), + @CreationDate DATETIME2(7), + @RevisionDate DATETIME2(7), + @OwnersNotifiedOfAutoscaling DATETIME2(7), + @MaxAutoscaleSeats INT, + @UseKeyConnector BIT = 0, + @UseScim BIT = 0, + @UseCustomPermissions BIT = 0, + @UseSecretsManager BIT = 0, + @Status TINYINT = 0, + @UsePasswordManager BIT = 1, + @SmSeats INT = null, + @SmServiceAccounts INT = null, + @MaxAutoscaleSmSeats INT= null, + @MaxAutoscaleSmServiceAccounts INT = null, + @SecretsManagerBeta BIT = 0, + @LimitCollectionCreation BIT = NULL, + @LimitCollectionDeletion BIT = NULL, + @AllowAdminAccessToAllCollectionItems BIT = 0, + @UseRiskInsights BIT = 0, + @UseAdminSponsoredFamilies BIT = 0, + @LimitItemDeletion BIT = 0 +AS BEGIN - SET NOCOUNT ON + SET NOCOUNT ON - SET @LimitCollectionCreation = COALESCE(@LimitCollectionCreation, @LimitCollectionCreationDeletion, 0); - SET @LimitCollectionDeletion = COALESCE(@LimitCollectionDeletion, @LimitCollectionCreationDeletion, 0); - -INSERT INTO [dbo].[Organization] -( - [Id], - [Identifier], - [Name], - [BusinessName], - [BusinessAddress1], - [BusinessAddress2], - [BusinessAddress3], - [BusinessCountry], - [BusinessTaxNumber], - [BillingEmail], - [Plan], - [PlanType], - [Seats], - [MaxCollections], - [UsePolicies], - [UseSso], - [UseGroups], - [UseDirectory], - [UseEvents], - [UseTotp], - [Use2fa], - [UseApi], - [UseResetPassword], - [SelfHost], - [UsersGetPremium], - [Storage], - [MaxStorageGb], - [Gateway], - [GatewayCustomerId], - [GatewaySubscriptionId], - [ReferenceData], - [Enabled], - [LicenseKey], - [PublicKey], - [PrivateKey], - [TwoFactorProviders], - [ExpirationDate], - [CreationDate], - [RevisionDate], - [OwnersNotifiedOfAutoscaling], - [MaxAutoscaleSeats], - [UseKeyConnector], - [UseScim], - [UseCustomPermissions], - [UseSecretsManager], - [Status], - [UsePasswordManager], - [SmSeats], - [SmServiceAccounts], - [MaxAutoscaleSmSeats], - [MaxAutoscaleSmServiceAccounts], - [SecretsManagerBeta], - [LimitCollectionCreationDeletion], -- Deprecated https://bitwarden.atlassian.net/browse/PM-10863 - [LimitCollectionCreation], - [LimitCollectionDeletion], - [AllowAdminAccessToAllCollectionItems], - [UseRiskInsights], - [UseAdminSponsoredFamilies] -) -VALUES + INSERT INTO [dbo].[Organization] ( - @Id, - @Identifier, - @Name, - @BusinessName, - @BusinessAddress1, - @BusinessAddress2, - @BusinessAddress3, - @BusinessCountry, - @BusinessTaxNumber, - @BillingEmail, - @Plan, - @PlanType, - @Seats, - @MaxCollections, - @UsePolicies, - @UseSso, - @UseGroups, - @UseDirectory, - @UseEvents, - @UseTotp, - @Use2fa, - @UseApi, - @UseResetPassword, - @SelfHost, - @UsersGetPremium, - @Storage, - @MaxStorageGb, - @Gateway, - @GatewayCustomerId, - @GatewaySubscriptionId, - @ReferenceData, - @Enabled, - @LicenseKey, - @PublicKey, - @PrivateKey, - @TwoFactorProviders, - @ExpirationDate, - @CreationDate, - @RevisionDate, - @OwnersNotifiedOfAutoscaling, - @MaxAutoscaleSeats, - @UseKeyConnector, - @UseScim, - @UseCustomPermissions, - @UseSecretsManager, - @Status, - @UsePasswordManager, - @SmSeats, - @SmServiceAccounts, - @MaxAutoscaleSmSeats, - @MaxAutoscaleSmServiceAccounts, - @SecretsManagerBeta, - COALESCE(@LimitCollectionCreation, @LimitCollectionDeletion, 0), -- Deprecated https://bitwarden.atlassian.net/browse/PM-10863) - @LimitCollectionCreation, - @LimitCollectionDeletion, - @AllowAdminAccessToAllCollectionItems, - @UseRiskInsights, - @UseAdminSponsoredFamilies + [Id], + [Identifier], + [Name], + [BusinessName], + [BusinessAddress1], + [BusinessAddress2], + [BusinessAddress3], + [BusinessCountry], + [BusinessTaxNumber], + [BillingEmail], + [Plan], + [PlanType], + [Seats], + [MaxCollections], + [UsePolicies], + [UseSso], + [UseGroups], + [UseDirectory], + [UseEvents], + [UseTotp], + [Use2fa], + [UseApi], + [UseResetPassword], + [SelfHost], + [UsersGetPremium], + [Storage], + [MaxStorageGb], + [Gateway], + [GatewayCustomerId], + [GatewaySubscriptionId], + [ReferenceData], + [Enabled], + [LicenseKey], + [PublicKey], + [PrivateKey], + [TwoFactorProviders], + [ExpirationDate], + [CreationDate], + [RevisionDate], + [OwnersNotifiedOfAutoscaling], + [MaxAutoscaleSeats], + [UseKeyConnector], + [UseScim], + [UseCustomPermissions], + [UseSecretsManager], + [Status], + [UsePasswordManager], + [SmSeats], + [SmServiceAccounts], + [MaxAutoscaleSmSeats], + [MaxAutoscaleSmServiceAccounts], + [SecretsManagerBeta], + [LimitCollectionCreation], + [LimitCollectionDeletion], + [AllowAdminAccessToAllCollectionItems], + [UseRiskInsights], + [UseAdminSponsoredFamilies], + [LimitItemDeletion] + ) + VALUES + ( + @Id, + @Identifier, + @Name, + @BusinessName, + @BusinessAddress1, + @BusinessAddress2, + @BusinessAddress3, + @BusinessCountry, + @BusinessTaxNumber, + @BillingEmail, + @Plan, + @PlanType, + @Seats, + @MaxCollections, + @UsePolicies, + @UseSso, + @UseGroups, + @UseDirectory, + @UseEvents, + @UseTotp, + @Use2fa, + @UseApi, + @UseResetPassword, + @SelfHost, + @UsersGetPremium, + @Storage, + @MaxStorageGb, + @Gateway, + @GatewayCustomerId, + @GatewaySubscriptionId, + @ReferenceData, + @Enabled, + @LicenseKey, + @PublicKey, + @PrivateKey, + @TwoFactorProviders, + @ExpirationDate, + @CreationDate, + @RevisionDate, + @OwnersNotifiedOfAutoscaling, + @MaxAutoscaleSeats, + @UseKeyConnector, + @UseScim, + @UseCustomPermissions, + @UseSecretsManager, + @Status, + @UsePasswordManager, + @SmSeats, + @SmServiceAccounts, + @MaxAutoscaleSmSeats, + @MaxAutoscaleSmServiceAccounts, + @SecretsManagerBeta, + @LimitCollectionCreation, + @LimitCollectionDeletion, + @AllowAdminAccessToAllCollectionItems, + @UseRiskInsights, + @UseAdminSponsoredFamilies, + @LimitItemDeletion ) END GO - /* Add UseRiskInsights to Organization_readAbilities */ - CREATE OR ALTER PROCEDURE [dbo].[Organization_ReadAbilities] - AS +CREATE OR ALTER PROCEDURE [dbo].[Organization_ReadAbilities] +AS BEGIN - SET NOCOUNT ON + SET NOCOUNT ON SELECT [Id], @@ -210,91 +204,87 @@ SELECT ELSE 0 END AS [Using2fa], - [UsersGetPremium], - [UseCustomPermissions], - [UseSso], - [UseKeyConnector], - [UseScim], - [UseResetPassword], - [UsePolicies], - [Enabled], - [LimitCollectionCreationDeletion], -- Deprecated https://bitwarden.atlassian.net/browse/PM-10863 - [LimitCollectionCreation], - [LimitCollectionDeletion], - [AllowAdminAccessToAllCollectionItems], - [UseRiskInsights], - [UseAdminSponsoredFamilies] - FROM - [dbo].[Organization] + [UsersGetPremium], + [UseCustomPermissions], + [UseSso], + [UseKeyConnector], + [UseScim], + [UseResetPassword], + [UsePolicies], + [Enabled], + [LimitCollectionCreation], + [LimitCollectionDeletion], + [AllowAdminAccessToAllCollectionItems], + [UseRiskInsights], + [UseAdminSponsoredFamilies], + [LimitItemDeletion] + FROM + [dbo].[Organization] END GO - /* Add UseRiskInsights to Organization_Update */ - CREATE OR ALTER PROCEDURE [dbo].[Organization_Update] - @Id UNIQUEIDENTIFIER, - @Identifier NVARCHAR(50), - @Name NVARCHAR(50), - @BusinessName NVARCHAR(50), - @BusinessAddress1 NVARCHAR(50), - @BusinessAddress2 NVARCHAR(50), - @BusinessAddress3 NVARCHAR(50), - @BusinessCountry VARCHAR(2), - @BusinessTaxNumber NVARCHAR(30), - @BillingEmail NVARCHAR(256), - @Plan NVARCHAR(50), - @PlanType TINYINT, - @Seats INT, - @MaxCollections SMALLINT, - @UsePolicies BIT, - @UseSso BIT, - @UseGroups BIT, - @UseDirectory BIT, - @UseEvents BIT, - @UseTotp BIT, - @Use2fa BIT, - @UseApi BIT, - @UseResetPassword BIT, - @SelfHost BIT, - @UsersGetPremium BIT, - @Storage BIGINT, - @MaxStorageGb SMALLINT, - @Gateway TINYINT, - @GatewayCustomerId VARCHAR(50), - @GatewaySubscriptionId VARCHAR(50), - @ReferenceData VARCHAR(MAX), - @Enabled BIT, - @LicenseKey VARCHAR(100), - @PublicKey VARCHAR(MAX), - @PrivateKey VARCHAR(MAX), - @TwoFactorProviders NVARCHAR(MAX), - @ExpirationDate DATETIME2(7), - @CreationDate DATETIME2(7), - @RevisionDate DATETIME2(7), - @OwnersNotifiedOfAutoscaling DATETIME2(7), - @MaxAutoscaleSeats INT, - @UseKeyConnector BIT = 0, - @UseScim BIT = 0, - @UseCustomPermissions BIT = 0, - @UseSecretsManager BIT = 0, - @Status TINYINT = 0, - @UsePasswordManager BIT = 1, - @SmSeats INT = null, - @SmServiceAccounts INT = null, - @MaxAutoscaleSmSeats INT = null, - @MaxAutoscaleSmServiceAccounts INT = null, - @SecretsManagerBeta BIT = 0, - @LimitCollectionCreationDeletion BIT = null, -- Deprecated https://bitwarden.atlassian.net/browse/PM-10863 - @LimitCollectionCreation BIT = null, - @LimitCollectionDeletion BIT = null, - @AllowAdminAccessToAllCollectionItems BIT = 0, - @UseRiskInsights BIT = 0, - @UseAdminSponsoredFamilies BIT = 0 - AS +CREATE OR ALTER PROCEDURE [dbo].[Organization_Update] + @Id UNIQUEIDENTIFIER, + @Identifier NVARCHAR(50), + @Name NVARCHAR(50), + @BusinessName NVARCHAR(50), + @BusinessAddress1 NVARCHAR(50), + @BusinessAddress2 NVARCHAR(50), + @BusinessAddress3 NVARCHAR(50), + @BusinessCountry VARCHAR(2), + @BusinessTaxNumber NVARCHAR(30), + @BillingEmail NVARCHAR(256), + @Plan NVARCHAR(50), + @PlanType TINYINT, + @Seats INT, + @MaxCollections SMALLINT, + @UsePolicies BIT, + @UseSso BIT, + @UseGroups BIT, + @UseDirectory BIT, + @UseEvents BIT, + @UseTotp BIT, + @Use2fa BIT, + @UseApi BIT, + @UseResetPassword BIT, + @SelfHost BIT, + @UsersGetPremium BIT, + @Storage BIGINT, + @MaxStorageGb SMALLINT, + @Gateway TINYINT, + @GatewayCustomerId VARCHAR(50), + @GatewaySubscriptionId VARCHAR(50), + @ReferenceData VARCHAR(MAX), + @Enabled BIT, + @LicenseKey VARCHAR(100), + @PublicKey VARCHAR(MAX), + @PrivateKey VARCHAR(MAX), + @TwoFactorProviders NVARCHAR(MAX), + @ExpirationDate DATETIME2(7), + @CreationDate DATETIME2(7), + @RevisionDate DATETIME2(7), + @OwnersNotifiedOfAutoscaling DATETIME2(7), + @MaxAutoscaleSeats INT, + @UseKeyConnector BIT = 0, + @UseScim BIT = 0, + @UseCustomPermissions BIT = 0, + @UseSecretsManager BIT = 0, + @Status TINYINT = 0, + @UsePasswordManager BIT = 1, + @SmSeats INT = null, + @SmServiceAccounts INT = null, + @MaxAutoscaleSmSeats INT = null, + @MaxAutoscaleSmServiceAccounts INT = null, + @SecretsManagerBeta BIT = 0, + @LimitCollectionCreation BIT = null, + @LimitCollectionDeletion BIT = null, + @AllowAdminAccessToAllCollectionItems BIT = 0, + @UseRiskInsights BIT = 0, + @UseAdminSponsoredFamilies BIT = 0, + @LimitItemDeletion BIT = 0 +AS BEGIN - SET NOCOUNT ON - - SET @LimitCollectionCreation = COALESCE(@LimitCollectionCreation, @LimitCollectionCreationDeletion, 0); - SET @LimitCollectionDeletion = COALESCE(@LimitCollectionDeletion, @LimitCollectionCreationDeletion, 0); + SET NOCOUNT ON UPDATE [dbo].[Organization] @@ -350,12 +340,11 @@ SET [MaxAutoscaleSmSeats] = @MaxAutoscaleSmSeats, [MaxAutoscaleSmServiceAccounts] = @MaxAutoscaleSmServiceAccounts, [SecretsManagerBeta] = @SecretsManagerBeta, - [LimitCollectionCreationDeletion] = COALESCE(@LimitCollectionCreation, @LimitCollectionDeletion, 0), [LimitCollectionCreation] = @LimitCollectionCreation, [LimitCollectionDeletion] = @LimitCollectionDeletion, [AllowAdminAccessToAllCollectionItems] = @AllowAdminAccessToAllCollectionItems, [UseRiskInsights] = @UseRiskInsights, - [UseAdminSponsoredFamilies] = @UseAdminSponsoredFamilies + [LimitItemDeletion] = @LimitItemDeletion WHERE [Id] = @Id END diff --git a/util/Migrator/DbScripts/2025-03-14_01_AddUseAdminInitiatedSponsorship_RefreshView.sql b/util/Migrator/DbScripts/2025-03-14_01_AddUseAdminInitiatedSponsorship_RefreshView.sql index 075719accd..0e02308d0d 100644 --- a/util/Migrator/DbScripts/2025-03-14_01_AddUseAdminInitiatedSponsorship_RefreshView.sql +++ b/util/Migrator/DbScripts/2025-03-14_01_AddUseAdminInitiatedSponsorship_RefreshView.sql @@ -1,6 +1,5 @@ -/* Alter view to include UseAdminSponsoredFamilies */ CREATE OR ALTER VIEW [dbo].[OrganizationUserOrganizationDetailsView] - AS +AS SELECT OU.[UserId], OU.[OrganizationId], @@ -47,12 +46,12 @@ SELECT O.[UsePasswordManager], O.[SmSeats], O.[SmServiceAccounts], - O.[LimitCollectionCreationDeletion], -- Deprecated https://bitwarden.atlassian.net/browse/PM-10863 O.[LimitCollectionCreation], O.[LimitCollectionDeletion], O.[AllowAdminAccessToAllCollectionItems], O.[UseRiskInsights], - O.[UseAdminSponsoredFamilies] + O.[UseAdminSponsoredFamilies], + O.[LimitItemDeletion] FROM [dbo].[OrganizationUser] OU LEFT JOIN @@ -67,11 +66,10 @@ FROM [dbo].[SsoConfig] SS ON SS.[OrganizationId] = OU.[OrganizationId] LEFT JOIN [dbo].[OrganizationSponsorship] OS ON OS.[SponsoringOrganizationUserID] = OU.[Id] - GO +GO -/* Alter this view to include UseAdminSponsoredFamilies column to the query */ CREATE OR ALTER VIEW [dbo].[ProviderUserProviderOrganizationDetailsView] - AS +AS SELECT PU.[UserId], PO.[OrganizationId], @@ -104,12 +102,13 @@ SELECT PU.[Id] ProviderUserId, P.[Name] ProviderName, O.[PlanType], - O.[LimitCollectionCreationDeletion], -- Deprecated https://bitwarden.atlassian.net/browse/PM-10863 O.[LimitCollectionCreation], O.[LimitCollectionDeletion], O.[AllowAdminAccessToAllCollectionItems], O.[UseRiskInsights], - O.[UseAdminSponsoredFamilies] + O.[UseAdminSponsoredFamilies], + P.[Type] ProviderType, + O.[LimitItemDeletion] FROM [dbo].[ProviderUser] PU INNER JOIN @@ -118,25 +117,25 @@ FROM [dbo].[Organization] O ON O.[Id] = PO.[OrganizationId] INNER JOIN [dbo].[Provider] P ON P.[Id] = PU.[ProviderId] - GO +GO - --Manually refresh [dbo].[OrganizationUserOrganizationDetailsView] - IF OBJECT_ID('[dbo].[OrganizationUserOrganizationDetailsView]') IS NOT NULL +--Manually refresh [dbo].[OrganizationUserOrganizationDetailsView] +IF OBJECT_ID('[dbo].[OrganizationUserOrganizationDetailsView]') IS NOT NULL BEGIN EXECUTE sp_refreshsqlmodule N'[dbo].[OrganizationUserOrganizationDetailsView]'; END GO - --Manually refresh [dbo].[ProviderUserProviderOrganizationDetailsView] - IF OBJECT_ID('[dbo].[ProviderUserProviderOrganizationDetailsView]') IS NOT NULL +--Manually refresh [dbo].[ProviderUserProviderOrganizationDetailsView] +IF OBJECT_ID('[dbo].[ProviderUserProviderOrganizationDetailsView]') IS NOT NULL BEGIN EXECUTE sp_refreshsqlmodule N'[dbo].[ProviderUserProviderOrganizationDetailsView]'; END GO - --Manually refresh [dbo].[OrganizationView] - IF OBJECT_ID('[dbo].[OrganizationView]') IS NOT NULL +--Manually refresh [dbo].[OrganizationView] +IF OBJECT_ID('[dbo].[OrganizationView]') IS NOT NULL BEGIN EXECUTE sp_refreshsqlmodule N'[dbo].[OrganizationView]'; END