Browse Source

Merge pull request #3107 from abpframework/Cotur-TenantManagement

Custom admin/pass implementation for new tenant
pull/3146/head
Halil İbrahim Kalkan 7 years ago
committed by GitHub
parent
commit
7b26309555
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 17
      modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/TenantCreateDto.cs
  2. 6
      modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/TenantCreateOrUpdateDtoBase.cs
  3. 11
      modules/tenant-management/src/Volo.Abp.TenantManagement.Application/Volo/Abp/TenantManagement/TenantAppService.cs
  4. 1
      modules/tenant-management/src/Volo.Abp.TenantManagement.HttpApi/Volo/Abp/TenantManagement/TenantController.cs
  5. 6
      modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/CreateModal.cshtml
  6. 10
      modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/CreateModal.cshtml.cs
  7. 4
      modules/tenant-management/test/Volo.Abp.TenantManagement.Application.Tests/Volo/Abp/TenantManagement/TenantAppService_Tests.cs

17
modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/TenantCreateDto.cs

@ -1,7 +1,22 @@
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
{ {
[Required]
[EmailAddress]
[MaxLength(256)]
public string AdminEmailAddress { get; set; }
[Required]
[MaxLength(128)]
public string AdminPassword { get; set; }
} }
} }

6
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 public abstract class TenantCreateOrUpdateDtoBase
{ {
[Required]
[StringLength(TenantConsts.MaxNameLength)]
public string Name { get; set; } public string Name { get; set; }
} }
} }

11
modules/tenant-management/src/Volo.Abp.TenantManagement.Application/Volo/Abp/TenantManagement/TenantAppService.cs

@ -15,7 +15,7 @@ namespace Volo.Abp.TenantManagement
protected ITenantManager TenantManager { get; } protected ITenantManager TenantManager { get; }
public TenantAppService( public TenantAppService(
ITenantRepository tenantRepository, ITenantRepository tenantRepository,
ITenantManager tenantManager, ITenantManager tenantManager,
IDataSeeder dataSeeder) IDataSeeder dataSeeder)
{ {
@ -51,10 +51,13 @@ namespace Volo.Abp.TenantManagement
{ {
//TODO: Handle database creation? //TODO: Handle database creation?
//TODO: Set admin email & password..? await DataSeeder.SeedAsync(
await DataSeeder.SeedAsync(tenant.Id); new DataSeedContext(tenant.Id)
.WithProperty("AdminEmail", input.AdminEmailAddress)
.WithProperty("AdminPassword", input.AdminPassword)
);
} }
return ObjectMapper.Map<Tenant, TenantDto>(tenant); return ObjectMapper.Map<Tenant, TenantDto>(tenant);
} }

1
modules/tenant-management/src/Volo.Abp.TenantManagement.HttpApi/Volo/Abp/TenantManagement/TenantController.cs

@ -35,6 +35,7 @@ namespace Volo.Abp.TenantManagement
[HttpPost] [HttpPost]
public virtual Task<TenantDto> CreateAsync(TenantCreateDto input) public virtual Task<TenantDto> CreateAsync(TenantCreateDto input)
{ {
ValidateModel();
return _service.CreateAsync(input); return _service.CreateAsync(input);
} }

6
modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/CreateModal.cshtml

@ -12,7 +12,11 @@
<abp-modal> <abp-modal>
<abp-modal-header title="@L["NewTenant"]"></abp-modal-header> <abp-modal-header title="@L["NewTenant"]"></abp-modal-header>
<abp-modal-body> <abp-modal-body>
<abp-input asp-for="Tenant.Name" label="@L["TenantName"].Value" /> <abp-input asp-for="Tenant.Name" />
<abp-input asp-for="Tenant.AdminEmailAddress" />
<abp-input asp-for="Tenant.AdminPassword" />
</abp-modal-body> </abp-modal-body>
<abp-modal-footer buttons="@(AbpModalButtons.Cancel|AbpModalButtons.Save)"></abp-modal-footer> <abp-modal-footer buttons="@(AbpModalButtons.Cancel|AbpModalButtons.Save)"></abp-modal-footer>
</abp-modal> </abp-modal>

10
modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/CreateModal.cshtml.cs

@ -31,8 +31,16 @@ namespace Volo.Abp.TenantManagement.Web.Pages.TenantManagement.Tenants
{ {
[Required] [Required]
[StringLength(TenantConsts.MaxNameLength)] [StringLength(TenantConsts.MaxNameLength)]
[Display(Name = "DisplayName:TenantName")]
public string Name { get; set; } public string Name { get; set; }
[Required]
[EmailAddress]
[MaxLength(256)]
public string AdminEmailAddress { get; set; }
[Required]
[MaxLength(128)]
public string AdminPassword { get; set; }
} }
} }
} }

4
modules/tenant-management/test/Volo.Abp.TenantManagement.Application.Tests/Volo/Abp/TenantManagement/TenantAppService_Tests.cs

@ -59,7 +59,7 @@ namespace Volo.Abp.TenantManagement
public async Task CreateAsync() public async Task CreateAsync()
{ {
var tenancyName = Guid.NewGuid().ToString("N").ToLowerInvariant(); 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.Name.ShouldBe(tenancyName);
tenant.Id.ShouldNotBe(default(Guid)); tenant.Id.ShouldNotBe(default(Guid));
} }
@ -69,7 +69,7 @@ namespace Volo.Abp.TenantManagement
{ {
await Assert.ThrowsAsync<UserFriendlyException>(async () => await Assert.ThrowsAsync<UserFriendlyException>(async () =>
{ {
await _tenantAppService.CreateAsync(new TenantCreateDto { Name = "acme" }); await _tenantAppService.CreateAsync(new TenantCreateDto { Name = "acme", AdminEmailAddress = "admin@admin.com", AdminPassword = "123456" });
}); });
} }

Loading…
Cancel
Save