diff --git a/Back/Controllers/BaseController.cs b/Back/Controllers/BaseController.cs index 611f661..af47021 100644 --- a/Back/Controllers/BaseController.cs +++ b/Back/Controllers/BaseController.cs @@ -42,7 +42,7 @@ namespace Back.Controllers { var resultValidationmodel = await _mobilevalidation.ValidateAsync(model.Mobile); if (!resultValidationmodel.IsValid) - return BadRequest(resultValidationmodel.Errors); + return BadRequest(resultValidationmodel.Errors.Select(s=>s.ErrorMessage ).ToList()); return Ok(await _sBase.CreateCsrAndPrivateKey(model)); } [HttpPost("ReadPublicKeyFromCER")] diff --git a/Back/Services/ServBase.cs b/Back/Services/ServBase.cs index a761274..18bdc75 100644 --- a/Back/Services/ServBase.cs +++ b/Back/Services/ServBase.cs @@ -99,14 +99,12 @@ namespace Back.Services string csr = Encoding.UTF8.GetString(buffer); stream.Flush(); stream.Close(); - taxTools.csr = csr; taxTools.Base64csr = Convert.ToBase64String(buffer); taxTools.typecsr = "Csr"; stream = File.Open($"C:\\OpenSSL\\bin\\{model.cn}.key", FileMode.Open); buffer = new byte[stream.Length]; stream.Read(buffer, 0, (int)stream.Length); string key = Encoding.UTF8.GetString(buffer); - taxTools.key = key; taxTools.Base64key = Convert.ToBase64String(buffer); taxTools.typekey = "key"; stream.Flush(); @@ -193,7 +191,6 @@ namespace Back.Services //}); return new PublicKeyDTO { - PublicKey = PublicKey, PublicKeyBase64 = Convert.ToBase64String(buffer), type = "txt" }; diff --git a/Back/Validations/MobileValidation.cs b/Back/Validations/MobileValidation.cs index 407137d..ea1b4e7 100644 --- a/Back/Validations/MobileValidation.cs +++ b/Back/Validations/MobileValidation.cs @@ -8,6 +8,7 @@ namespace Back.Validations { public MobileValidation() { + CascadeMode = CascadeMode.Stop; RuleFor(m => m) .NotEmpty().WithMessage("موبایل نمی تواند باشد") .NotNull().WithMessage("موبایل نمی تواند باشد") diff --git a/Shared/DTOs/CsrPrivateKeyDto.cs b/Shared/DTOs/CsrPrivateKeyDto.cs index 8aa748a..f5c1cbf 100644 --- a/Shared/DTOs/CsrPrivateKeyDto.cs +++ b/Shared/DTOs/CsrPrivateKeyDto.cs @@ -4,13 +4,15 @@ namespace Shared.DTOs { public class CsrPrivateKeyDto { - [Required] + + [Required(ErrorMessage = "cn نمیتواند خالی باشد")] public string cn { get; set; } - [Required] + [Required(ErrorMessage = "sn نمیتواند خالی باشد")] public string sn { get; set; } - [Required] + [Required(ErrorMessage = "company نمیتواند خالی باشد")] public string company { get; set; } - [Required] + [Required(ErrorMessage = "mobile نمیتواند خالی باشد")] + [Length(11,11,ErrorMessage ="mobile باید 11 کاراکتر باشد")] public string Mobile { get; set; } } } diff --git a/Shared/DTOs/PublicKeyDTO.cs b/Shared/DTOs/PublicKeyDTO.cs index 7271fdb..9595a05 100644 --- a/Shared/DTOs/PublicKeyDTO.cs +++ b/Shared/DTOs/PublicKeyDTO.cs @@ -2,7 +2,6 @@ { public class PublicKeyDTO { - public string PublicKey { get; set; } public string PublicKeyBase64 { get; set; } public string type { get; set; } } diff --git a/Shared/DTOs/TaxToolsDTO.cs b/Shared/DTOs/TaxToolsDTO.cs index ad0cd3c..ab34ba3 100644 --- a/Shared/DTOs/TaxToolsDTO.cs +++ b/Shared/DTOs/TaxToolsDTO.cs @@ -2,10 +2,8 @@ { public class TaxToolsDTO { - public string csr { get; set; } public string Base64csr { get; set; } public string typecsr { get; set; } - public string key { get; set; } public string Base64key { get; set; } public string typekey { get; set; } } diff --git a/TaxPayerFull/Layout/TaxTools.razor b/TaxPayerFull/Layout/TaxTools.razor index 75bb1e8..59ced78 100644 --- a/TaxPayerFull/Layout/TaxTools.razor +++ b/TaxPayerFull/Layout/TaxTools.razor @@ -1,4 +1,7 @@ @using Shared.DTOs +@using System.Text +@inject HttpClient _hc +@inject IJSRuntime JS
+
2)خواندن کلید عمومی
>(); + messageStore?.Add(() => modelTaxTools.Mobile, error); + + } } -} \ No newline at end of file + private async Task ReadPublicKeyFromCER(InputFileChangeEventArgs e) + { + if (e.GetMultipleFiles()[0].Size <= maxFileSize) + { + string Base64Str = ""; + using (MemoryStream stream = new MemoryStream()) + { + await e.GetMultipleFiles()[0].OpenReadStream(maxFileSize).CopyToAsync(stream); + + byte[] Array = stream.ToArray(); + Base64Str = Convert.ToBase64String(Array); + + } + + // if (!string.IsNullOrEmpty(Base64Str)) + // { + // var request = await _hc.PostAsJsonAsync("Base/ReadPublicKeyFromCER", Base64Str); + // if (request.IsSuccessStatusCode) + // { + // var res = await request.Content.ReadFromJsonAsync();
+ // await DownloadFileFromStream(res.PublicKeyBase64, $"{modelTaxTools.cn}.{res.type}");
+ // }
+ // }
+ }
+ else
+ {
+
+ }
+
+
+
+ }
+ private Stream GetFileStream(byte[] bytes)
+ {
+ var fileStream = new MemoryStream(bytes);
+
+ return fileStream;
+ }
+ private async Task DownloadFileFromStream(string Base64, string FileName)
+ {
+ byte[] bytes = System.Convert.FromBase64String(Base64);
+
+ var fileStream = GetFileStream(bytes);
+ // var fileName = "log.bin";
+
+ using var streamRef = new DotNetStreamReference(stream: fileStream);
+
+ await JS.InvokeVoidAsync("downloadFileFromStream", FileName, streamRef);
+ }
+}
+
\ No newline at end of file