Browse Source

Custom admin&password implementation for new tenant

pull/3107/head
Ahmet Çotur 7 years ago
parent
commit
a7e7658004
  1. 8
      framework/src/Volo.Abp.Data/Volo/Abp/Data/DataSeederExtensions.cs
  2. 4
      modules/tenant-management/src/Volo.Abp.TenantManagement.Application.Contracts/Volo/Abp/TenantManagement/TenantCreateOrUpdateDtoBase.cs
  3. 8
      modules/tenant-management/src/Volo.Abp.TenantManagement.Application/Volo/Abp/TenantManagement/TenantAppService.cs
  4. 5
      modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/en.json
  5. 5
      modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/tr.json
  6. 6
      modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/CreateModal.cshtml
  7. 11
      modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/CreateModal.cshtml.cs
  8. 4
      modules/tenant-management/test/Volo.Abp.TenantManagement.Application.Tests/Volo/Abp/TenantManagement/TenantAppService_Tests.cs

8
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);
}
}
}

4
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; }
}
}

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

@ -44,6 +44,11 @@ namespace Volo.Abp.TenantManagement
[Authorize(TenantManagementPermissions.Tenants.Create)]
public virtual async Task<TenantDto> 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 @@ namespace Volo.Abp.TenantManagement
{
//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, TenantDto>(tenant);

5
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."
}
}

5
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."
}
}

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

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

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

@ -33,6 +33,17 @@ namespace Volo.Abp.TenantManagement.Web.Pages.TenantManagement.Tenants
[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; }
}
}
}

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()
{
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 @@ namespace Volo.Abp.TenantManagement
{
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