From 4c7ff73f5b2d7f234688fc58c381e41a493551cc Mon Sep 17 00:00:00 2001 From: Ahmet Date: Fri, 25 Sep 2020 14:50:58 +0300 Subject: [PATCH] Added manage connection strings modal to tenant management blazor --- .../TenantManagement/TenantManagement.razor | 45 +++++++++++++- .../TenantManagement.razor.cs | 62 ++++++++++++++++++- 2 files changed, 104 insertions(+), 3 deletions(-) diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor/Pages/TenantManagement/TenantManagement.razor b/modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor/Pages/TenantManagement/TenantManagement.razor index d43488e280..6b3320eb9f 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor/Pages/TenantManagement/TenantManagement.razor +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor/Pages/TenantManagement/TenantManagement.razor @@ -42,6 +42,14 @@ { @L["Edit"] } + @if (HasManageConnectionStringsPermission) + { + @L["ConnectionStrings"] + } + @if (HasManageFeaturesPermission) + { + @L["Features"] + } @if (HasDeletePermission) { @@ -78,11 +86,11 @@ @L["DisplayName:AdminEmailAddress"] - + @L["DisplayName:AdminPassword"] - + @@ -118,4 +126,37 @@ +} + +@* ************************* EDIT CONNECTION STRING MODAL ************************* *@ +@if (HasUpdatePermission) +{ + + + + + @L["ConnectionStrings"] + + + + + + @L["DisplayName:DefaultConnectionString"] + + + @if (!TenantInfo.UseSharedDatabase) + { + + @L["DisplayName:DefaultConnectionString"] + + + } + + + + + + + + } \ No newline at end of file diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor/Pages/TenantManagement/TenantManagement.razor.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor/Pages/TenantManagement/TenantManagement.razor.cs index 5cdb622398..5db7bc35ad 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor/Pages/TenantManagement/TenantManagement.razor.cs +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor/Pages/TenantManagement/TenantManagement.razor.cs @@ -1,5 +1,7 @@ using System; using System.Threading.Tasks; +using Blazorise; +using Microsoft.AspNetCore.Authorization; using Volo.Abp.BlazoriseUI; namespace Volo.Abp.TenantManagement.Blazor.Pages.TenantManagement @@ -8,6 +10,12 @@ namespace Volo.Abp.TenantManagement.Blazor.Pages.TenantManagement : AbpCrudPageBase { protected bool ShouldShowEntityActions; + protected bool HasManageConnectionStringsPermission; + protected bool HasManageFeaturesPermission; + + protected Modal ManageConnectionStringModal; + + protected TenantInfoModel TenantInfo; public TenantManagementBase() { @@ -16,14 +24,66 @@ namespace Volo.Abp.TenantManagement.Blazor.Pages.TenantManagement CreatePolicyName = TenantManagementPermissions.Tenants.Create; UpdatePolicyName = TenantManagementPermissions.Tenants.Update; DeletePolicyName = TenantManagementPermissions.Tenants.Delete; + + TenantInfo = new TenantInfoModel(); } protected override async Task SetPermissionsAsync() { await base.SetPermissionsAsync(); + HasManageConnectionStringsPermission = await AuthorizationService.IsGrantedAsync(TenantManagementPermissions.Tenants.ManageConnectionStrings); + HasManageFeaturesPermission = await AuthorizationService.IsGrantedAsync(TenantManagementPermissions.Tenants.ManageFeatures); + ShouldShowEntityActions = HasUpdatePermission || - HasDeletePermission; + HasDeletePermission || + HasManageConnectionStringsPermission || + HasManageFeaturesPermission; + } + + protected virtual async Task OpenEditConnectionStringModalAsync(Guid id) + { + var tenantConnectionString = await AppService.GetDefaultConnectionStringAsync(id); + + TenantInfo = new TenantInfoModel + { + Id = id, + DefaultConnectionString = tenantConnectionString, + UseSharedDatabase = tenantConnectionString.IsNullOrWhiteSpace() + }; + + ManageConnectionStringModal.Show(); } + + protected virtual Task CloseEditConnectionStringModal() + { + ManageConnectionStringModal.Hide(); + return Task.CompletedTask; + } + + protected virtual async Task UpdateConnectionStringAsync() + { + await CheckPolicyAsync(TenantManagementPermissions.Tenants.ManageConnectionStrings); + + if (TenantInfo.UseSharedDatabase || TenantInfo.DefaultConnectionString.IsNullOrWhiteSpace()) + { + await AppService.DeleteDefaultConnectionStringAsync(TenantInfo.Id); + } + else + { + await AppService.UpdateDefaultConnectionStringAsync(TenantInfo.Id, TenantInfo.DefaultConnectionString); + } + + ManageConnectionStringModal.Hide(); + } + } + + public class TenantInfoModel + { + public Guid Id { get; set; } + + public bool UseSharedDatabase { get; set; } + + public string DefaultConnectionString { get; set; } } } \ No newline at end of file