From a7e76580042970ad5e77e67d24ba907da5b20104 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ahmet=20=C3=87otur?= Date: Fri, 13 Mar 2020 13:14:46 +0300 Subject: [PATCH 1/7] Custom admin&password implementation for new tenant --- .../Volo/Abp/Data/DataSeederExtensions.cs | 8 ++++++-- .../TenantManagement/TenantCreateOrUpdateDtoBase.cs | 4 ++++ .../Volo/Abp/TenantManagement/TenantAppService.cs | 8 ++++++-- .../TenantManagement/Localization/Resources/en.json | 5 ++++- .../TenantManagement/Localization/Resources/tr.json | 5 ++++- .../Pages/TenantManagement/Tenants/CreateModal.cshtml | 6 +++++- .../TenantManagement/Tenants/CreateModal.cshtml.cs | 11 +++++++++++ .../Abp/TenantManagement/TenantAppService_Tests.cs | 4 ++-- 8 files changed, 42 insertions(+), 9 deletions(-) diff --git a/framework/src/Volo.Abp.Data/Volo/Abp/Data/DataSeederExtensions.cs b/framework/src/Volo.Abp.Data/Volo/Abp/Data/DataSeederExtensions.cs index 8208d02d2c0..95ff597b16a 100644 --- a/framework/src/Volo.Abp.Data/Volo/Abp/Data/DataSeederExtensions.cs +++ b/framework/src/Volo.Abp.Data/Volo/Abp/Data/DataSeederExtensions.cs @@ -5,9 +5,13 @@ namespace Volo.Abp.Data { public static class DataSeederExtensions { - public static Task SeedAsync(this IDataSeeder seeder, Guid? tenantId = null) + public static Task SeedAsync(this IDataSeeder seeder, Guid? tenantId, string adminEmailAddress, string adminPassword) { - return seeder.SeedAsync(new DataSeedContext(tenantId)); + var context = new DataSeedContext(tenantId) + .WithProperty("AdminEmail", adminEmailAddress) + .WithProperty("AdminPassword", adminPassword); + + return seeder.SeedAsync(context); } } } \ No newline at end of file diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/TenantCreateOrUpdateDtoBase.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/TenantCreateOrUpdateDtoBase.cs index a5a9b4af3d1..fedaead0024 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/TenantCreateOrUpdateDtoBase.cs +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/TenantCreateOrUpdateDtoBase.cs @@ -3,5 +3,9 @@ public abstract class TenantCreateOrUpdateDtoBase { public string Name { get; set; } + + public string AdminEmailAddress { get; set; } + + public string AdminPassword { get; set; } } } \ No newline at end of file diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Application/Volo/Abp/TenantManagement/TenantAppService.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application/Volo/Abp/TenantManagement/TenantAppService.cs index 3dabc569bd9..ef4da082101 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Application/Volo/Abp/TenantManagement/TenantAppService.cs +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application/Volo/Abp/TenantManagement/TenantAppService.cs @@ -44,6 +44,11 @@ public virtual async Task> GetListAsync(GetTenantsInpu [Authorize(TenantManagementPermissions.Tenants.Create)] public virtual async Task CreateAsync(TenantCreateDto input) { + if (string.IsNullOrWhiteSpace(input.AdminEmailAddress) || string.IsNullOrWhiteSpace(input.AdminPassword)) + { + throw new BusinessException(message: L["InvalidAdminProperties"]); + } + var tenant = await TenantManager.CreateAsync(input.Name); await TenantRepository.InsertAsync(tenant); @@ -51,8 +56,7 @@ public virtual async Task CreateAsync(TenantCreateDto input) { //TODO: Handle database creation? - //TODO: Set admin email & password..? - await DataSeeder.SeedAsync(tenant.Id); + await DataSeeder.SeedAsync(tenant.Id, input.AdminEmailAddress, input.AdminPassword); } return ObjectMapper.Map(tenant); diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/en.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/en.json index fc51f007503..3141f626337 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/en.json +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/en.json @@ -15,6 +15,9 @@ "Permission:Edit": "Edit", "Permission:Delete": "Delete", "Permission:ManageConnectionStrings": "Manage connection strings", - "Permission:ManageFeatures": "Manage features" + "Permission:ManageFeatures": "Manage features", + "DisplayName:AdminEmailAddress": "Admin Email Address", + "DisplayName:AdminPassword": "Admin Password", + "InvalidAdminProperties": "Admin email address or password is invalid." } } \ No newline at end of file diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/tr.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/tr.json index 1b6bdca2c20..ea7d0cf25ef 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/tr.json +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/tr.json @@ -15,6 +15,9 @@ "Permission:Edit": "Düzenleme", "Permission:Delete": "Silme", "Permission:ManageConnectionStrings": "Bağlantı cümlelerini yönet", - "Permission:ManageFeatures": "Özellikleri yönet" + "Permission:ManageFeatures": "Özellikleri yönet", + "DisplayName:AdminEmailAddress": "Yönetici Eposta Adresi", + "DisplayName:AdminPassword": "Yönetici Şifresi", + "InvalidAdminProperties": "Admin eposta adresi veya şifre geçerli değil." } } \ No newline at end of file diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/CreateModal.cshtml b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/CreateModal.cshtml index b3a2c9d5bef..b17c4d94a4b 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/CreateModal.cshtml +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/CreateModal.cshtml @@ -12,7 +12,11 @@ - + + + + + diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/CreateModal.cshtml.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/CreateModal.cshtml.cs index a602b12a658..79b7c036c5b 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/CreateModal.cshtml.cs +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/CreateModal.cshtml.cs @@ -33,6 +33,17 @@ public class TenantInfoModel [StringLength(TenantConsts.MaxNameLength)] [Display(Name = "DisplayName:TenantName")] public string Name { get; set; } + + [Required] + [StringLength(TenantConsts.MaxNameLength)] + [Display(Name = "DisplayName:AdminEmailAddress")] + public string AdminEmailAddress { get; set; } + + [Required] + [StringLength(TenantConsts.MaxNameLength)] + [EmailAddress] + [Display(Name = "DisplayName:AdminPassword")] + public string AdminPassword { get; set; } } } } diff --git a/modules/tenant-management/test/Volo.Abp.TenantManagement.Application.Tests/Volo/Abp/TenantManagement/TenantAppService_Tests.cs b/modules/tenant-management/test/Volo.Abp.TenantManagement.Application.Tests/Volo/Abp/TenantManagement/TenantAppService_Tests.cs index 3e44e7c8ea5..b27ceff6dc9 100644 --- a/modules/tenant-management/test/Volo.Abp.TenantManagement.Application.Tests/Volo/Abp/TenantManagement/TenantAppService_Tests.cs +++ b/modules/tenant-management/test/Volo.Abp.TenantManagement.Application.Tests/Volo/Abp/TenantManagement/TenantAppService_Tests.cs @@ -59,7 +59,7 @@ public async Task GetListAsync_Sorted_Descending_By_Name() public async Task CreateAsync() { var tenancyName = Guid.NewGuid().ToString("N").ToLowerInvariant(); - var tenant = await _tenantAppService.CreateAsync(new TenantCreateDto { Name = tenancyName }); + var tenant = await _tenantAppService.CreateAsync(new TenantCreateDto { Name = tenancyName , AdminEmailAddress = "admin@admin.com", AdminPassword = "123456"}); tenant.Name.ShouldBe(tenancyName); tenant.Id.ShouldNotBe(default(Guid)); } @@ -69,7 +69,7 @@ public async Task CreateAsync_Should_Not_Allow_Duplicate_Names() { await Assert.ThrowsAsync(async () => { - await _tenantAppService.CreateAsync(new TenantCreateDto { Name = "acme" }); + await _tenantAppService.CreateAsync(new TenantCreateDto { Name = "acme", AdminEmailAddress = "admin@admin.com", AdminPassword = "123456" }); }); } From 56c30abdd293bffb68ca6f99ea65105af33a4631 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ahmet=20=C3=87otur?= Date: Fri, 13 Mar 2020 13:22:29 +0300 Subject: [PATCH 2/7] Update DataSeederExtensions.cs --- .../src/Volo.Abp.Data/Volo/Abp/Data/DataSeederExtensions.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/framework/src/Volo.Abp.Data/Volo/Abp/Data/DataSeederExtensions.cs b/framework/src/Volo.Abp.Data/Volo/Abp/Data/DataSeederExtensions.cs index 95ff597b16a..0d0ac7a1fdd 100644 --- a/framework/src/Volo.Abp.Data/Volo/Abp/Data/DataSeederExtensions.cs +++ b/framework/src/Volo.Abp.Data/Volo/Abp/Data/DataSeederExtensions.cs @@ -5,6 +5,11 @@ namespace Volo.Abp.Data { public static class DataSeederExtensions { + public static Task SeedAsync(this IDataSeeder seeder, Guid? tenantId = null) + { + return seeder.SeedAsync(new DataSeedContext(tenantId)); + } + public static Task SeedAsync(this IDataSeeder seeder, Guid? tenantId, string adminEmailAddress, string adminPassword) { var context = new DataSeedContext(tenantId) From e04f21a322f0301586de7a679cfc6e3f20ddecbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ahmet=20=C3=87otur?= Date: Fri, 13 Mar 2020 14:07:25 +0300 Subject: [PATCH 3/7] validation update --- .../Abp/TenantManagement/TenantCreateDto.cs | 31 +++++++++++++++++-- .../TenantCreateOrUpdateDtoBase.cs | 4 --- .../Abp/TenantManagement/TenantAppService.cs | 5 --- .../Volo/Abp/TenantManagement/TenantConsts.cs | 4 +++ .../Abp/TenantManagement/TenantController.cs | 1 + 5 files changed, 34 insertions(+), 11 deletions(-) diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/TenantCreateDto.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/TenantCreateDto.cs index 7561835ee3c..46f3f9ff73a 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/TenantCreateDto.cs +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/TenantCreateDto.cs @@ -1,7 +1,34 @@ -namespace Volo.Abp.TenantManagement +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Text.RegularExpressions; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Localization; +using Volo.Abp.TenantManagement.Localization; + +namespace Volo.Abp.TenantManagement { - public class TenantCreateDto : TenantCreateOrUpdateDtoBase + public class TenantCreateDto : TenantCreateOrUpdateDtoBase, IValidatableObject { + public string AdminEmailAddress { get; set; } + + public string AdminPassword { get; set; } + + public IEnumerable Validate(ValidationContext validationContext) + { + var l = validationContext.GetRequiredService>(); + + var isValidEmail = + Regex.IsMatch(AdminEmailAddress, TenantConsts.EmailRegex, RegexOptions.IgnoreCase); + + if (string.IsNullOrWhiteSpace(AdminEmailAddress) || !isValidEmail) + { + yield return new ValidationResult(l["InvalidAdminProperties"], new[] { nameof(AdminEmailAddress) }); + } + if (string.IsNullOrWhiteSpace(AdminPassword)) + { + yield return new ValidationResult(l["InvalidAdminProperties"], new[] { nameof(AdminPassword) }); + } + } } } \ No newline at end of file diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/TenantCreateOrUpdateDtoBase.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/TenantCreateOrUpdateDtoBase.cs index fedaead0024..a5a9b4af3d1 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/TenantCreateOrUpdateDtoBase.cs +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/TenantCreateOrUpdateDtoBase.cs @@ -3,9 +3,5 @@ public abstract class TenantCreateOrUpdateDtoBase { public string Name { get; set; } - - public string AdminEmailAddress { get; set; } - - public string AdminPassword { get; set; } } } \ No newline at end of file diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Application/Volo/Abp/TenantManagement/TenantAppService.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application/Volo/Abp/TenantManagement/TenantAppService.cs index ef4da082101..4ddba47d3c6 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Application/Volo/Abp/TenantManagement/TenantAppService.cs +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application/Volo/Abp/TenantManagement/TenantAppService.cs @@ -44,11 +44,6 @@ public virtual async Task> GetListAsync(GetTenantsInpu [Authorize(TenantManagementPermissions.Tenants.Create)] public virtual async Task CreateAsync(TenantCreateDto input) { - if (string.IsNullOrWhiteSpace(input.AdminEmailAddress) || string.IsNullOrWhiteSpace(input.AdminPassword)) - { - throw new BusinessException(message: L["InvalidAdminProperties"]); - } - var tenant = await TenantManager.CreateAsync(input.Name); await TenantRepository.InsertAsync(tenant); diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/TenantConsts.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/TenantConsts.cs index 328c422ab95..ecaa873a09e 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/TenantConsts.cs +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/TenantConsts.cs @@ -3,5 +3,9 @@ public static class TenantConsts { public const int MaxNameLength = 64; + + public const string EmailRegex = + @"^(?("")("".+?(?> GetListAsync(GetTenantsInput inpu [HttpPost] public virtual Task CreateAsync(TenantCreateDto input) { + ValidateModel(); return _service.CreateAsync(input); } From 1d53bee97a9b21e0fef3407c62e5603818dbc660 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ahmet=20=C3=87otur?= Date: Sun, 15 Mar 2020 00:36:39 +0300 Subject: [PATCH 4/7] some requested changes resolved --- .../Abp/TenantManagement/TenantCreateDto.cs | 20 +------------------ .../Localization/Resources/en.json | 5 +---- .../Localization/Resources/tr.json | 5 +---- .../Volo/Abp/TenantManagement/TenantConsts.cs | 4 ---- .../Tenants/CreateModal.cshtml | 6 +++--- .../Tenants/CreateModal.cshtml.cs | 5 +---- 6 files changed, 7 insertions(+), 38 deletions(-) diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/TenantCreateDto.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/TenantCreateDto.cs index 46f3f9ff73a..e3c4c3ba49f 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/TenantCreateDto.cs +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/TenantCreateDto.cs @@ -7,28 +7,10 @@ namespace Volo.Abp.TenantManagement { - public class TenantCreateDto : TenantCreateOrUpdateDtoBase, IValidatableObject + public class TenantCreateDto : TenantCreateOrUpdateDtoBase { public string AdminEmailAddress { get; set; } public string AdminPassword { get; set; } - - public IEnumerable Validate(ValidationContext validationContext) - { - var l = validationContext.GetRequiredService>(); - - var isValidEmail = - Regex.IsMatch(AdminEmailAddress, TenantConsts.EmailRegex, RegexOptions.IgnoreCase); - - if (string.IsNullOrWhiteSpace(AdminEmailAddress) || !isValidEmail) - { - yield return new ValidationResult(l["InvalidAdminProperties"], new[] { nameof(AdminEmailAddress) }); - } - - if (string.IsNullOrWhiteSpace(AdminPassword)) - { - yield return new ValidationResult(l["InvalidAdminProperties"], new[] { nameof(AdminPassword) }); - } - } } } \ No newline at end of file diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/en.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/en.json index 3141f626337..fc51f007503 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/en.json +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/en.json @@ -15,9 +15,6 @@ "Permission:Edit": "Edit", "Permission:Delete": "Delete", "Permission:ManageConnectionStrings": "Manage connection strings", - "Permission:ManageFeatures": "Manage features", - "DisplayName:AdminEmailAddress": "Admin Email Address", - "DisplayName:AdminPassword": "Admin Password", - "InvalidAdminProperties": "Admin email address or password is invalid." + "Permission:ManageFeatures": "Manage features" } } \ No newline at end of file diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/tr.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/tr.json index ea7d0cf25ef..1b6bdca2c20 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/tr.json +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/tr.json @@ -15,9 +15,6 @@ "Permission:Edit": "Düzenleme", "Permission:Delete": "Silme", "Permission:ManageConnectionStrings": "Bağlantı cümlelerini yönet", - "Permission:ManageFeatures": "Özellikleri yönet", - "DisplayName:AdminEmailAddress": "Yönetici Eposta Adresi", - "DisplayName:AdminPassword": "Yönetici Şifresi", - "InvalidAdminProperties": "Admin eposta adresi veya şifre geçerli değil." + "Permission:ManageFeatures": "Özellikleri yönet" } } \ No newline at end of file diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/TenantConsts.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/TenantConsts.cs index ecaa873a09e..328c422ab95 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/TenantConsts.cs +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/TenantConsts.cs @@ -3,9 +3,5 @@ public static class TenantConsts { public const int MaxNameLength = 64; - - public const string EmailRegex = - @"^(?("")("".+?(? - + - + - + diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/CreateModal.cshtml.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/CreateModal.cshtml.cs index 79b7c036c5b..aa4c9e92fe0 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/CreateModal.cshtml.cs +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/CreateModal.cshtml.cs @@ -31,18 +31,15 @@ public class TenantInfoModel { [Required] [StringLength(TenantConsts.MaxNameLength)] - [Display(Name = "DisplayName:TenantName")] public string Name { get; set; } [Required] + [EmailAddress] [StringLength(TenantConsts.MaxNameLength)] - [Display(Name = "DisplayName:AdminEmailAddress")] public string AdminEmailAddress { get; set; } [Required] [StringLength(TenantConsts.MaxNameLength)] - [EmailAddress] - [Display(Name = "DisplayName:AdminPassword")] public string AdminPassword { get; set; } } } From 475311810aaf603bbcaf0f836a8eb595c70d2dcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ahmet=20=C3=87otur?= Date: Mon, 16 Mar 2020 09:56:09 +0300 Subject: [PATCH 5/7] requested changes resolved. --- .../Volo/Abp/Data/DataSeederExtensions.cs | 9 --------- .../TenantManagement/DataSeederExtensions.cs | 18 ++++++++++++++++++ .../Abp/TenantManagement/TenantAppService.cs | 2 +- 3 files changed, 19 insertions(+), 10 deletions(-) create mode 100644 modules/tenant-management/src/Volo.Abp.TenantManagement.Application/Volo/Abp/TenantManagement/DataSeederExtensions.cs diff --git a/framework/src/Volo.Abp.Data/Volo/Abp/Data/DataSeederExtensions.cs b/framework/src/Volo.Abp.Data/Volo/Abp/Data/DataSeederExtensions.cs index 0d0ac7a1fdd..8208d02d2c0 100644 --- a/framework/src/Volo.Abp.Data/Volo/Abp/Data/DataSeederExtensions.cs +++ b/framework/src/Volo.Abp.Data/Volo/Abp/Data/DataSeederExtensions.cs @@ -9,14 +9,5 @@ public static Task SeedAsync(this IDataSeeder seeder, Guid? tenantId = null) { return seeder.SeedAsync(new DataSeedContext(tenantId)); } - - public static Task SeedAsync(this IDataSeeder seeder, Guid? tenantId, string adminEmailAddress, string adminPassword) - { - var context = new DataSeedContext(tenantId) - .WithProperty("AdminEmail", adminEmailAddress) - .WithProperty("AdminPassword", adminPassword); - - return seeder.SeedAsync(context); - } } } \ No newline at end of file diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Application/Volo/Abp/TenantManagement/DataSeederExtensions.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application/Volo/Abp/TenantManagement/DataSeederExtensions.cs new file mode 100644 index 00000000000..04bc1cf12ad --- /dev/null +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application/Volo/Abp/TenantManagement/DataSeederExtensions.cs @@ -0,0 +1,18 @@ +using System; +using System.Threading.Tasks; +using Volo.Abp.Data; + +namespace Volo.Abp.TenantManagement +{ + public static class DataSeederExtensions + { + public static Task SeedAsync(this IDataSeeder seeder, Guid? tenantId, TenantCreateDto input) + { + var context = new DataSeedContext(tenantId) + .WithProperty("AdminEmail", input.AdminEmailAddress) + .WithProperty("AdminPassword", input.AdminPassword); + + return seeder.SeedAsync(context); + } + } +} diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Application/Volo/Abp/TenantManagement/TenantAppService.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application/Volo/Abp/TenantManagement/TenantAppService.cs index 4ddba47d3c6..966fb854e6d 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Application/Volo/Abp/TenantManagement/TenantAppService.cs +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application/Volo/Abp/TenantManagement/TenantAppService.cs @@ -51,7 +51,7 @@ public virtual async Task CreateAsync(TenantCreateDto input) { //TODO: Handle database creation? - await DataSeeder.SeedAsync(tenant.Id, input.AdminEmailAddress, input.AdminPassword); + await DataSeeder.SeedAsync(tenant.Id, input); } return ObjectMapper.Map(tenant); From ad371601a83d71f5c8864b5e30702250242c3151 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ahmet=20=C3=87otur?= Date: Mon, 16 Mar 2020 09:59:35 +0300 Subject: [PATCH 6/7] extension removed. --- .../TenantManagement/DataSeederExtensions.cs | 18 ------------------ .../Abp/TenantManagement/TenantAppService.cs | 10 +++++++--- 2 files changed, 7 insertions(+), 21 deletions(-) delete mode 100644 modules/tenant-management/src/Volo.Abp.TenantManagement.Application/Volo/Abp/TenantManagement/DataSeederExtensions.cs diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Application/Volo/Abp/TenantManagement/DataSeederExtensions.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application/Volo/Abp/TenantManagement/DataSeederExtensions.cs deleted file mode 100644 index 04bc1cf12ad..00000000000 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Application/Volo/Abp/TenantManagement/DataSeederExtensions.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System; -using System.Threading.Tasks; -using Volo.Abp.Data; - -namespace Volo.Abp.TenantManagement -{ - public static class DataSeederExtensions - { - public static Task SeedAsync(this IDataSeeder seeder, Guid? tenantId, TenantCreateDto input) - { - var context = new DataSeedContext(tenantId) - .WithProperty("AdminEmail", input.AdminEmailAddress) - .WithProperty("AdminPassword", input.AdminPassword); - - return seeder.SeedAsync(context); - } - } -} diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Application/Volo/Abp/TenantManagement/TenantAppService.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application/Volo/Abp/TenantManagement/TenantAppService.cs index 966fb854e6d..cbe9b67c76d 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Application/Volo/Abp/TenantManagement/TenantAppService.cs +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application/Volo/Abp/TenantManagement/TenantAppService.cs @@ -15,7 +15,7 @@ public class TenantAppService : TenantManagementAppServiceBase, ITenantAppServic protected ITenantManager TenantManager { get; } public TenantAppService( - ITenantRepository tenantRepository, + ITenantRepository tenantRepository, ITenantManager tenantManager, IDataSeeder dataSeeder) { @@ -51,9 +51,13 @@ public virtual async Task CreateAsync(TenantCreateDto input) { //TODO: Handle database creation? - await DataSeeder.SeedAsync(tenant.Id, input); + await DataSeeder.SeedAsync( + new DataSeedContext(tenant.Id) + .WithProperty("AdminEmail", input.AdminEmailAddress) + .WithProperty("AdminPassword", input.AdminPassword) + ); } - + return ObjectMapper.Map(tenant); } From 1bfe6617be605fb587cccaad8dcb6241c67522c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ahmet=20=C3=87otur?= Date: Mon, 16 Mar 2020 10:03:27 +0300 Subject: [PATCH 7/7] Validation upgraded. --- .../Volo/Abp/TenantManagement/TenantCreateDto.cs | 6 ++++++ .../Abp/TenantManagement/TenantCreateOrUpdateDtoBase.cs | 6 +++++- .../Pages/TenantManagement/Tenants/CreateModal.cshtml.cs | 4 ++-- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/TenantCreateDto.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/TenantCreateDto.cs index e3c4c3ba49f..189d7d0f803 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/TenantCreateDto.cs +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/TenantCreateDto.cs @@ -9,8 +9,14 @@ namespace Volo.Abp.TenantManagement { public class TenantCreateDto : TenantCreateOrUpdateDtoBase { + [Required] + [EmailAddress] + [MaxLength(256)] public string AdminEmailAddress { get; set; } + + [Required] + [MaxLength(128)] public string AdminPassword { get; set; } } } \ No newline at end of file diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/TenantCreateOrUpdateDtoBase.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/TenantCreateOrUpdateDtoBase.cs index a5a9b4af3d1..b02da79b794 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/TenantCreateOrUpdateDtoBase.cs +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/TenantCreateOrUpdateDtoBase.cs @@ -1,7 +1,11 @@ -namespace Volo.Abp.TenantManagement +using System.ComponentModel.DataAnnotations; + +namespace Volo.Abp.TenantManagement { public abstract class TenantCreateOrUpdateDtoBase { + [Required] + [StringLength(TenantConsts.MaxNameLength)] public string Name { get; set; } } } \ No newline at end of file diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/CreateModal.cshtml.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/CreateModal.cshtml.cs index aa4c9e92fe0..23c71bba96f 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/CreateModal.cshtml.cs +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/CreateModal.cshtml.cs @@ -35,11 +35,11 @@ public class TenantInfoModel [Required] [EmailAddress] - [StringLength(TenantConsts.MaxNameLength)] + [MaxLength(256)] public string AdminEmailAddress { get; set; } [Required] - [StringLength(TenantConsts.MaxNameLength)] + [MaxLength(128)] public string AdminPassword { get; set; } } }