hang-S-002增加枚举,修改密码,重置密码,记录日志

Uat_Study
hang 2023-07-05 09:35:38 +08:00
parent 516f0fa1b4
commit 6fc6829bc8
4 changed files with 27 additions and 8 deletions

View File

@ -25,6 +25,8 @@ namespace IRaCIS.Core.Application.ViewModel
///<summary>UserLogQuery 列表查询参数模型</summary> ///<summary>UserLogQuery 列表查询参数模型</summary>
public class UserLogQuery : PageInput public class UserLogQuery : PageInput
{ {
public Guid? TrialId { get; set; }
public UserOptType? OptType { get; set; } public UserOptType? OptType { get; set; }
public string? IP { get; set; } public string? IP { get; set; }

View File

@ -18,21 +18,25 @@ namespace IRaCIS.Core.Application.Service
{ {
private readonly IRepository<UserLog> _userLogRepository; private readonly IRepository<UserLog> _userLogRepository;
private readonly IRepository<TrialUser> _trialUserRepository;
public UserLogService(IRepository<UserLog> userLogRepository) public UserLogService(IRepository<UserLog> userLogRepository, IRepository<TrialUser> trialUserRepository)
{ {
_userLogRepository = userLogRepository; _userLogRepository = userLogRepository;
_trialUserRepository = trialUserRepository;
} }
public async Task<PageOutput<UserLogView>> GetUserLogList(UserLogQuery inQuery) public async Task<PageOutput<UserLogView>> GetUserLogList(UserLogQuery inQuery)
{ {
var userLogQueryable = var userLogQueryable =
_userLogRepository _userLogRepository
.WhereIf(inQuery.TrialId != null, t => t.CreateUser.UserTrials.Any(c => c.TrialId == inQuery.TrialId && c.UserId == t.CreateUserId))
.WhereIf(inQuery.OptType!=null ,t=>t.OptType==inQuery.OptType) .WhereIf(inQuery.OptType!=null ,t=>t.OptType==inQuery.OptType)
.WhereIf(inQuery.BeginDate != null, t => t.CreateTime >= inQuery.BeginDate) .WhereIf(inQuery.BeginDate != null, t => t.CreateTime >= inQuery.BeginDate)
.WhereIf(inQuery.EndDate != null, t => t.CreateTime <= inQuery.EndDate) .WhereIf(inQuery.EndDate != null, t => t.CreateTime <= inQuery.EndDate)
.WhereIf(!string.IsNullOrEmpty(inQuery.LoginName) , t => t.LoginName.Contains(inQuery.LoginName) ) .WhereIf(!string.IsNullOrEmpty(inQuery.LoginName) , t => t.LoginName.Contains(inQuery.LoginName) )
.WhereIf(!string.IsNullOrEmpty(inQuery.IP), t => t.IP.Contains(inQuery.IP)) .WhereIf(!string.IsNullOrEmpty(inQuery.IP), t => t.IP.Contains(inQuery.IP))
.WhereIf(!string.IsNullOrEmpty(inQuery.LoginName), t => t.LoginName.Contains(inQuery.LoginName)) .WhereIf(!string.IsNullOrEmpty(inQuery.LoginName), t => t.LoginName.Contains(inQuery.LoginName))

View File

@ -295,6 +295,8 @@ namespace IRaCIS.Application.Services
IsFirstAdd = true IsFirstAdd = true
}); });
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, CreateUserId = _userInfo.Id, LoginName = _userInfo.UserName, IsSuccess = true, OptType = UserOptType.AdminResetPassword }, true);
return ResponseOutput.Ok(); return ResponseOutput.Ok();
} }
@ -405,6 +407,8 @@ namespace IRaCIS.Application.Services
IsFirstAdd = false IsFirstAdd = false
}); });
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, CreateUserId = _userInfo.Id, LoginName =string.Empty,LoginPassword=newPwd, IsSuccess = true, OptType = UserOptType.ModifyPassword }, true);
return ResponseOutput.Result(success); return ResponseOutput.Result(success);
} }
@ -439,6 +443,7 @@ namespace IRaCIS.Application.Services
IsFirstAdd = false IsFirstAdd = false
}); });
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, CreateUserId = _userInfo.Id, LoginName = _userInfo.UserName, IsSuccess = true, OptType = UserOptType.ModifyPassword }, true);
return ResponseOutput.Result(success); return ResponseOutput.Result(success);
@ -642,7 +647,7 @@ namespace IRaCIS.Application.Services
if (failCount >= maxFailures) if (failCount >= maxFailures)
{ {
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, CreateUserId = Guid.Empty, LoginName = userName, IsSuccess = false, OptType = UserOptType.AccountLocked }, true); await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, CreateUserId = Guid.Empty, LoginName = userName,LoginPassword=password, IsSuccess = false, OptType = UserOptType.AccountLocked }, true);
throw new BusinessValidationFailedException($"密码连续错误{maxFailures}次,当前账号已被限制登录,请等待 {lockoutMinutes} 分钟后再试。"); throw new BusinessValidationFailedException($"密码连续错误{maxFailures}次,当前账号已被限制登录,请等待 {lockoutMinutes} 分钟后再试。");
} }
@ -677,7 +682,7 @@ namespace IRaCIS.Application.Services
failCount++; failCount++;
_cache.Set(cacheKey, failCount, TimeSpan.FromMinutes(lockoutMinutes)); _cache.Set(cacheKey, failCount, TimeSpan.FromMinutes(lockoutMinutes));
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, CreateUserId = Guid.Empty, LoginName = userName, IsSuccess = false, OptType = UserOptType.PasswordError }, true); await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, CreateUserId = Guid.Empty, LoginName = userName, LoginPassword = password, IsSuccess = false, OptType = UserOptType.AccountOrPasswordError }, true);
return ResponseOutput.NotOk(_localizer["User_CheckNameOrPw"], new LoginReturnDTO()); return ResponseOutput.NotOk(_localizer["User_CheckNameOrPw"], new LoginReturnDTO());

View File

@ -38,6 +38,10 @@ namespace IRaCIS.Core.Domain.Models
public bool IsSuccess { get; set; } public bool IsSuccess { get; set; }
[JsonIgnore]
public User CreateUser { get; set; }
} }
/// <summary> /// <summary>
@ -57,14 +61,18 @@ namespace IRaCIS.Core.Domain.Models
LoginOut = 2, LoginOut = 2,
/// <summary> /// <summary>
/// 密码错误 ///账号或者密码错误
/// </summary> /// </summary>
PasswordError = 3, AccountOrPasswordError = 3,
/// <summary> /// <summary>
/// 账号锁定 /// 账号锁定
/// </summary> /// </summary>
AccountLocked = 4 AccountLocked = 4,
ModifyPassword=5,
AdminResetPassword=6
} }
} }