From 34f3b1607ee55591aaa5e5ded49b3ea73a11ed76 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Wed, 31 Jul 2024 10:01:48 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=9A=90=E8=97=8F=E9=82=AE?= =?UTF-8?q?=E7=AE=B1=E7=9A=84=E7=AE=97=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/ExtraController.cs | 21 ++------- .../Helper/EmailMaskHelper.cs | 44 +++++++++++++++++++ .../Service/Management/UserService.cs | 4 +- IRaCIS.Core.Application/TestService.cs | 7 ++- 4 files changed, 55 insertions(+), 21 deletions(-) create mode 100644 IRaCIS.Core.Application/Helper/EmailMaskHelper.cs diff --git a/IRaCIS.Core.API/Controllers/ExtraController.cs b/IRaCIS.Core.API/Controllers/ExtraController.cs index 97804aa3e..95fba4ab5 100644 --- a/IRaCIS.Core.API/Controllers/ExtraController.cs +++ b/IRaCIS.Core.API/Controllers/ExtraController.cs @@ -32,6 +32,7 @@ using IRaCIS.Core.Application.Contracts; using LoginReturnDTO = IRaCIS.Application.Contracts.LoginReturnDTO; using DocumentFormat.OpenXml.Spreadsheet; using AutoMapper.QueryableExtensions; +using NetTopologySuite.Algorithm; namespace IRaCIS.Api.Controllers { @@ -108,7 +109,7 @@ namespace IRaCIS.Api.Controllers { //MFA 邮箱验证 前端传递用户Id 和MFACode - if (loginUser.UserId != null && _verifyConfig.CurrentValue.OpenLoginMFA) + if (loginUser.UserId != null && _verifyConfig.CurrentValue.OpenLoginMFA) { Guid userId = (Guid)loginUser.UserId; @@ -226,23 +227,7 @@ namespace IRaCIS.Api.Controllers var email = returnModel.Data.BasicInfo.EMail; - #region 隐藏Email - // 找到 "@" 符号的位置 - int atIndex = email.IndexOf('@'); - - // 替换 "@" 符号前的中间两位为星号 - string visiblePart = email.Substring(0, atIndex); - - int startIndex = (visiblePart.Length - 2) / 2; - - // 替换中间两位字符为星号 - string hiddenPartBeforeAt = visiblePart.Substring(0, startIndex) + "**" + visiblePart.Substring(startIndex + 2); - - string afterAt = email.Substring(atIndex + 1); - - // 组合隐藏和可见部分 - string hiddenEmail = hiddenPartBeforeAt + "@" + afterAt; - #endregion + var hiddenEmail = EmailMaskHelper.MaskEmail(email); returnModel.Data.BasicInfo.EMail = hiddenEmail; diff --git a/IRaCIS.Core.Application/Helper/EmailMaskHelper.cs b/IRaCIS.Core.Application/Helper/EmailMaskHelper.cs new file mode 100644 index 000000000..027c74523 --- /dev/null +++ b/IRaCIS.Core.Application/Helper/EmailMaskHelper.cs @@ -0,0 +1,44 @@ +using NPOI.SS.Formula.Functions; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace IRaCIS.Core.Application.Helper +{ + public static class EmailMaskHelper + { + + //显示位数:3分之2的位数,向上取整 + //取哪几个个值:最后一位和前面几位 + //其他:3个***。 + //比如:hlj23@126.com + //为:hlj***3@126.com + + //he@126.com + //为:h*** e@126.com + + public static string MaskEmail(string email) + { + + // 找到 "@" 符号的位置 + int atIndex = email.IndexOf('@'); + + string visiblePartBefore = email.Substring(0, atIndex); + + string afterAt = email.Substring(atIndex + 1); + + int visibleLength = (int)Math.Ceiling((double)visiblePartBefore.Length * 2 / 3); + + // 替换中间两位字符为星号 + string hiddenPartBeforeAt = visiblePartBefore.Substring(0, visibleLength - 1) + "***" + visiblePartBefore.Last(); + + + // 组合隐藏和可见部分 + string hiddenEmail = hiddenPartBeforeAt + "@" + afterAt; + + return hiddenEmail; + } + } +} diff --git a/IRaCIS.Core.Application/Service/Management/UserService.cs b/IRaCIS.Core.Application/Service/Management/UserService.cs index 51284fa01..9c455dbf4 100644 --- a/IRaCIS.Core.Application/Service/Management/UserService.cs +++ b/IRaCIS.Core.Application/Service/Management/UserService.cs @@ -18,6 +18,7 @@ using LoginReturnDTO = IRaCIS.Application.Contracts.LoginReturnDTO; using IRaCIS.Core.Application.Auth; using BeetleX.Redis.Commands; using IRaCIS.Core.Domain.Models; +using IRaCIS.Core.Application.Helper; namespace IRaCIS.Application.Services { @@ -667,7 +668,8 @@ namespace IRaCIS.Application.Services await _mailVerificationService.SenMFAVerifyEmail(userId, userInfo.FullName, userInfo.EMail, verificationCode, (UserMFAType)mfaType ); - return ResponseOutput.Ok(); + var hiddenEmail = EmailMaskHelper.MaskEmail(userInfo.EMail); + return ResponseOutput.Ok(hiddenEmail); } /// diff --git a/IRaCIS.Core.Application/TestService.cs b/IRaCIS.Core.Application/TestService.cs index 98cd71e87..2a4c7eb64 100644 --- a/IRaCIS.Core.Application/TestService.cs +++ b/IRaCIS.Core.Application/TestService.cs @@ -258,9 +258,12 @@ namespace IRaCIS.Application.Services [AllowAnonymous] - public async Task testwwwww([FromServices] IWebHostEnvironment env) + public async Task testEmail([FromServices] IWebHostEnvironment env ,string email) { - await Task.CompletedTask; + + var hiddenEmail = EmailMaskHelper.MaskEmail(email); + + return hiddenEmail; }