From ae280a313c6d9ab32bb75713dd4c309cb806c4d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rui=20Tom=C3=A9?= <108268980+r-tome@users.noreply.github.com> Date: Tue, 6 Dec 2022 09:50:08 +0000 Subject: [PATCH] [EC-343] Gate custom permissions behind enterprise plan (#2352) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [EC-343] Added column 'UseCustomPermissions' to Organization table * [EC-343] Added 'UseCustomPermissions' to Api responses * [EC-343] Added 'UseCustomPermissions' to Admin view * [EC-343] Add constraint to Organization table to have default UseCustomPermissions value * [EC-343] Recreate OrganizationView to include UseCustomPermissions column * [EC-343] Add MySql EF migrations * [EC-343] Add Postgres EF migrations * Revert "[EC-343] Add Postgres EF migrations" This reverts commit 8f1654cb7d4b2d40ef01417bf73490ddd4f54add. * [EC-343] Add Postgres migrations and script * [EC-343] dotnet format * [EC-343] Set 'Custom Permissions' feature as unchecked for teams plan * [EC-343] Add CustomPermissions to plan upgrades * [EC-343] Update CURRENT_LICENSE_FILE_VERSION * [EC-343] Enable 'Custom Permissions' on Enterprise 2019 plan * [EC-343] Updated migration script to include Enterprise 2019 plan * [EC-343] Update CURRENT_LICENSE_FILE_VERSION to 10 * [EC-343] Move logic checking if Organization can use custom permissions to OrganizationService * [EC-343] Add unit tests to validate UseCustomPermissions check * [EC-343] Revert UseCustomPermissionsFlag migration * [EC-343] Fix typo in OrganizationUserOrganizationDetailsViewQuery * [EC-343] Add Postgres migrations without affecting other datetime column * [EC-343] Create ValidateOrganizationCustomPermissionsEnabledAsync. Add more unit tests around CustomPermissions check * [EC-343] Add curly brackets to if condition * [EC-343] Rename unit tests --- src/Admin/Models/OrganizationEditModel.cs | 4 + src/Admin/Views/Organizations/Edit.cshtml | 8 +- .../OrganizationResponseModel.cs | 2 + .../ProfileOrganizationResponseModel.cs | 2 + ...rofileProviderOrganizationResponseModel.cs | 1 + src/Core/Entities/Organization.cs | 1 + .../Models/Business/OrganizationLicense.cs | 13 +- .../Data/Organizations/OrganizationAbility.cs | 2 + .../OrganizationUserOrganizationDetails.cs | 1 + .../ProviderUserOrganizationDetails.cs | 1 + src/Core/Models/StaticStore/Plan.cs | 1 + .../Implementations/OrganizationService.cs | 50 + src/Core/Utilities/StaticStore.cs | 4 + .../Repositories/OrganizationRepository.cs | 1 + ...izationUserOrganizationDetailsViewQuery.cs | 1 + ...roviderUserOrganizationDetailsViewQuery.cs | 1 + .../Stored Procedures/Organization_Create.sql | 9 +- .../Organization_ReadAbilities.sql | 1 + .../Stored Procedures/Organization_Update.sql | 6 +- src/Sql/dbo/Tables/Organization.sql | 1 + ...rganizationUserOrganizationDetailsView.sql | 1 + ...derUserProviderOrganizationDetailsView.sql | 1 + .../Services/OrganizationServiceTests.cs | 178 +- .../EqualityComparers/OrganizationCompare.cs | 1 + ...2022-10-11_00_UseCustomPermissionsFlag.sql | 412 ++++ ...54432_UseCustomPermissionsFlag.Designer.cs | 1675 ++++++++++++++++ ...20221020154432_UseCustomPermissionsFlag.cs | 25 + .../DatabaseContextModelSnapshot.cs | 3 + .../2022-10-11_00_UseCustomPermissions.sql | 8 + ...02326_UseCustomPermissionsFlag.Designer.cs | 1692 +++++++++++++++++ ...20221116102326_UseCustomPermissionsFlag.cs | 25 + .../DatabaseContextModelSnapshot.cs | 7 +- .../2022-10-11_00_UseCustomPermissions.psql | 8 + 33 files changed, 4135 insertions(+), 11 deletions(-) create mode 100644 util/Migrator/DbScripts/2022-10-11_00_UseCustomPermissionsFlag.sql create mode 100644 util/MySqlMigrations/Migrations/20221020154432_UseCustomPermissionsFlag.Designer.cs create mode 100644 util/MySqlMigrations/Migrations/20221020154432_UseCustomPermissionsFlag.cs create mode 100644 util/MySqlMigrations/Scripts/2022-10-11_00_UseCustomPermissions.sql create mode 100644 util/PostgresMigrations/Migrations/20221116102326_UseCustomPermissionsFlag.Designer.cs create mode 100644 util/PostgresMigrations/Migrations/20221116102326_UseCustomPermissionsFlag.cs create mode 100644 util/PostgresMigrations/Scripts/2022-10-11_00_UseCustomPermissions.psql diff --git a/src/Admin/Models/OrganizationEditModel.cs b/src/Admin/Models/OrganizationEditModel.cs index 4a6fdde5ee..ed172d6fd9 100644 --- a/src/Admin/Models/OrganizationEditModel.cs +++ b/src/Admin/Models/OrganizationEditModel.cs @@ -42,6 +42,7 @@ public class OrganizationEditModel : OrganizationViewModel UseResetPassword = org.UseResetPassword; SelfHost = org.SelfHost; UsersGetPremium = org.UsersGetPremium; + UseCustomPermissions = org.UseCustomPermissions; MaxStorageGb = org.MaxStorageGb; Gateway = org.Gateway; GatewayCustomerId = org.GatewayCustomerId; @@ -101,6 +102,8 @@ public class OrganizationEditModel : OrganizationViewModel public bool SelfHost { get; set; } [Display(Name = "Users Get Premium")] public bool UsersGetPremium { get; set; } + [Display(Name = "Custom Permissions")] + public bool UseCustomPermissions { get; set; } [Display(Name = "Max. Storage GB")] public short? MaxStorageGb { get; set; } [Display(Name = "Gateway")] @@ -139,6 +142,7 @@ public class OrganizationEditModel : OrganizationViewModel existingOrganization.UseResetPassword = UseResetPassword; existingOrganization.SelfHost = SelfHost; existingOrganization.UsersGetPremium = UsersGetPremium; + existingOrganization.UseCustomPermissions = UseCustomPermissions; existingOrganization.MaxStorageGb = MaxStorageGb; existingOrganization.Gateway = Gateway; existingOrganization.GatewayCustomerId = GatewayCustomerId; diff --git a/src/Admin/Views/Organizations/Edit.cshtml b/src/Admin/Views/Organizations/Edit.cshtml index 10b42484bd..7c5e1dce27 100644 --- a/src/Admin/Views/Organizations/Edit.cshtml +++ b/src/Admin/Views/Organizations/Edit.cshtml @@ -27,6 +27,7 @@ document.getElementById('@(nameof(Model.UseDirectory))').checked = true; document.getElementById('@(nameof(Model.UseEvents))').checked = true; document.getElementById('@(nameof(Model.UsersGetPremium))').checked = true; + document.getElementById('@(nameof(Model.UseCustomPermissions))').checked = false; document.getElementById('@(nameof(Model.UseTotp))').checked = true; document.getElementById('@(nameof(Model.Use2fa))').checked = true; document.getElementById('@(nameof(Model.UseApi))').checked = true; @@ -61,6 +62,7 @@ document.getElementById('@(nameof(Model.UseDirectory))').checked = true; document.getElementById('@(nameof(Model.UseEvents))').checked = true; document.getElementById('@(nameof(Model.UsersGetPremium))').checked = true; + document.getElementById('@(nameof(Model.UseCustomPermissions))').checked = true; document.getElementById('@(nameof(Model.UseTotp))').checked = true; document.getElementById('@(nameof(Model.Use2fa))').checked = true; document.getElementById('@(nameof(Model.UseApi))').checked = true; @@ -237,10 +239,14 @@ -