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 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 abstract class TenantCreateOrUpdateDtoBase
{ {
public string Name { get; set; } 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)] [Authorize(TenantManagementPermissions.Tenants.Create)]
public virtual async Task<TenantDto> CreateAsync(TenantCreateDto input) 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); var tenant = await TenantManager.CreateAsync(input.Name);
await TenantRepository.InsertAsync(tenant); await TenantRepository.InsertAsync(tenant);
@ -51,8 +56,7 @@ namespace Volo.Abp.TenantManagement
{ {
//TODO: Handle database creation? //TODO: Handle database creation?
//TODO: Set admin email & password..? await DataSeeder.SeedAsync(tenant.Id, input.AdminEmailAddress, input.AdminPassword);
await DataSeeder.SeedAsync(tenant.Id);
} }
return ObjectMapper.Map<Tenant, TenantDto>(tenant); 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:Edit": "Edit",
"Permission:Delete": "Delete", "Permission:Delete": "Delete",
"Permission:ManageConnectionStrings": "Manage connection strings", "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:Edit": "Düzenleme",
"Permission:Delete": "Silme", "Permission:Delete": "Silme",
"Permission:ManageConnectionStrings": "Bağlantı cümlelerini yönet", "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>
<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" 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-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>

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)] [StringLength(TenantConsts.MaxNameLength)]
[Display(Name = "DisplayName:TenantName")] [Display(Name = "DisplayName:TenantName")]
public string Name { get; set; } 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() 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