修改用户登录日志

IRC_NewDev
hang 2023-07-05 10:33:52 +08:00
parent 02ce0c993d
commit d00158fa38
4 changed files with 30 additions and 11 deletions

View File

@ -1148,6 +1148,11 @@
<member name="M:IRaCIS.Core.Application.Service.SystemNoticeService.GetUserSystemNoticeList(IRaCIS.Core.Application.ViewModel.SystemNoticeQuery)"> <member name="M:IRaCIS.Core.Application.Service.SystemNoticeService.GetUserSystemNoticeList(IRaCIS.Core.Application.ViewModel.SystemNoticeQuery)">
<summary>获取登陆用户的系统通知列表 只是过滤了用户类型 和已经发布的</summary> <summary>获取登陆用户的系统通知列表 只是过滤了用户类型 和已经发布的</summary>
</member> </member>
<member name="T:IRaCIS.Core.Application.Service.UserLogService">
<summary>
UserLogService
</summary>
</member>
<member name="M:IRaCIS.Core.Application.Service.QCCommon.VerifyIsCRCSubmmitAsync(IRaCIS.Core.Infra.EFCore.IRepository,IRaCIS.Core.Domain.Share.IUserInfo,System.Nullable{System.Guid})"> <member name="M:IRaCIS.Core.Application.Service.QCCommon.VerifyIsCRCSubmmitAsync(IRaCIS.Core.Infra.EFCore.IRepository,IRaCIS.Core.Domain.Share.IUserInfo,System.Nullable{System.Guid})">
<summary> <summary>
验证CRC 是否已提交 已提交 就不允许进行任何操作如果是IQC 那么还验证是否是当前任务领取人 验证CRC 是否已提交 已提交 就不允许进行任何操作如果是IQC 那么还验证是否是当前任务领取人
@ -8191,6 +8196,15 @@
<member name="T:IRaCIS.Core.Application.ViewModel.SystemNoticeAddOrEdit"> <member name="T:IRaCIS.Core.Application.ViewModel.SystemNoticeAddOrEdit">
<summary> SystemNoticeAddOrEdit 列表查询参数模型</summary> <summary> SystemNoticeAddOrEdit 列表查询参数模型</summary>
</member> </member>
<member name="T:IRaCIS.Core.Application.ViewModel.UserLogView">
<summary> UserLogView 列表视图模型 </summary>
</member>
<member name="T:IRaCIS.Core.Application.ViewModel.UserLogQuery">
<summary>UserLogQuery 列表查询参数模型</summary>
</member>
<member name="T:IRaCIS.Core.Application.ViewModel.UserLogAddOrEdit">
<summary> UserLogAddOrEdit 列表查询参数模型</summary>
</member>
<member name="P:IRaCIS.Core.Application.ViewModel.TirggerTaskInfo.TargetAssessmentIsIUorIC"> <member name="P:IRaCIS.Core.Application.ViewModel.TirggerTaskInfo.TargetAssessmentIsIUorIC">
<summary> <summary>
靶病灶是否为IUPD或者ICPD 靶病灶是否为IUPD或者ICPD
@ -9019,6 +9033,11 @@
ISystemNoticeService ISystemNoticeService
</summary> </summary>
</member> </member>
<member name="T:IRaCIS.Core.Application.Interfaces.IUserLogService">
<summary>
IUserLogService
</summary>
</member>
<member name="T:IRaCIS.Core.Application.Interfaces.ISubjectCriteriaEvaluationService"> <member name="T:IRaCIS.Core.Application.Interfaces.ISubjectCriteriaEvaluationService">
<summary> <summary>
ISubjectCriteriaEvaluationService ISubjectCriteriaEvaluationService

View File

@ -33,13 +33,12 @@ namespace IRaCIS.Core.Application.Service
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.TrialId != null, t => t.LoginUser.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))
.ProjectTo<UserLogView>(_mapper.ConfigurationProvider); .ProjectTo<UserLogView>(_mapper.ConfigurationProvider);
var pageList = await userLogQueryable.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrWhiteSpace(inQuery.SortField) ? "Id" : inQuery.SortField,inQuery.Asc); var pageList = await userLogQueryable.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrWhiteSpace(inQuery.SortField) ? "Id" : inQuery.SortField,inQuery.Asc);

View File

@ -295,7 +295,7 @@ 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); await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, LoginUserId = _userInfo.Id, LoginName = _userInfo.UserName, IsSuccess = true, OptType = UserOptType.AdminResetPassword }, true);
return ResponseOutput.Ok(); return ResponseOutput.Ok();
} }
@ -407,7 +407,7 @@ 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); await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, LoginUserId = _userInfo.Id, LoginName =string.Empty,LoginPassword=newPwd, IsSuccess = true, OptType = UserOptType.ModifyPassword }, true);
return ResponseOutput.Result(success); return ResponseOutput.Result(success);
@ -443,7 +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); await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, LoginUserId = _userInfo.Id, LoginName = _userInfo.UserName, IsSuccess = true, OptType = UserOptType.ModifyPassword }, true);
return ResponseOutput.Result(success); return ResponseOutput.Result(success);
@ -647,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,LoginPassword=password, IsSuccess = false, OptType = UserOptType.AccountLocked }, true); await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, LoginUserId = Guid.Empty, LoginName = userName,LoginPassword=password, IsSuccess = false, OptType = UserOptType.AccountLocked }, true);
throw new BusinessValidationFailedException($"密码连续错误{maxFailures}次,当前账号已被限制登录,请等待 {lockoutMinutes} 分钟后再试。"); throw new BusinessValidationFailedException($"密码连续错误{maxFailures}次,当前账号已被限制登录,请等待 {lockoutMinutes} 分钟后再试。");
} }
@ -682,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, LoginPassword = password, IsSuccess = false, OptType = UserOptType.AccountOrPasswordError }, true); await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, LoginUserId = 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());
@ -700,7 +700,7 @@ namespace IRaCIS.Application.Services
//登录成功 清除缓存 //登录成功 清除缓存
_cache.Set(cacheKey, 0, TimeSpan.FromMinutes(lockoutMinutes)); _cache.Set(cacheKey, 0, TimeSpan.FromMinutes(lockoutMinutes));
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, CreateUserId = loginUser.Id, LoginName = userName, IsSuccess = true, OptType = UserOptType.Login }, true); await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, LoginUserId = loginUser.Id, LoginName = userName, IsSuccess = true, OptType = UserOptType.Login }, true);
userLoginReturnModel.BasicInfo = loginUser; userLoginReturnModel.BasicInfo = loginUser;
@ -715,7 +715,7 @@ namespace IRaCIS.Application.Services
public async Task<IResponseOutput> LoginOut(Guid userId,string loginName) public async Task<IResponseOutput> LoginOut(Guid userId,string loginName)
{ {
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, CreateUserId = userId, LoginName = loginName, IsSuccess = true, OptType = UserOptType.LoginOut },true); await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, LoginUserId = userId, LoginName = loginName, IsSuccess = true, OptType = UserOptType.LoginOut },true);
return ResponseOutput.Ok(); return ResponseOutput.Ok();
} }

View File

@ -34,13 +34,14 @@ namespace IRaCIS.Core.Domain.Models
public UserOptType OptType { get; set; } public UserOptType OptType { get; set; }
public string LoginPassword { get; set; } public string LoginPassword { get; set; } = string.Empty;
public bool IsSuccess { get; set; } public bool IsSuccess { get; set; }
public Guid? LoginUserId { get;set; }
[JsonIgnore] [JsonIgnore]
public User CreateUser { get; set; } public User LoginUser { get; set; }
} }