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] 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 7561835ee3..46f3f9ff73 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 fedaead002..a5a9b4af3d 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 ef4da08210..4ddba47d3c 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 @@ namespace Volo.Abp.TenantManagement [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 328c422ab9..ecaa873a09 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 = + @"^(?("")("".+?(? CreateAsync(TenantCreateDto input) { + ValidateModel(); return _service.CreateAsync(input); }