|
|
|
@@ -1,9 +1,11 @@
|
|
|
|
|
using DocumentFormat.OpenXml.Wordprocessing;
|
|
|
|
|
using DocumentFormat.OpenXml.Spreadsheet;
|
|
|
|
|
using DocumentFormat.OpenXml.Wordprocessing;
|
|
|
|
|
using IP2Region.Net.Abstractions;
|
|
|
|
|
using IRaCIS.Application.Contracts;
|
|
|
|
|
using IRaCIS.Core.Application.Auth;
|
|
|
|
|
using IRaCIS.Core.Application.Contracts;
|
|
|
|
|
using IRaCIS.Core.Application.Helper;
|
|
|
|
|
using IRaCIS.Core.Application.Service.OAuth;
|
|
|
|
|
using IRaCIS.Core.Application.ViewModel;
|
|
|
|
|
using IRaCIS.Core.Domain.Share;
|
|
|
|
|
using IRaCIS.Core.Infrastructure;
|
|
|
|
@@ -202,7 +204,8 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
//删除验证码历史记录
|
|
|
|
|
await _verificationCodeRepository.BatchDeleteNoTrackingAsync(t => t.UserId == _userInfo.UserRoleId && t.CodeType == 0);
|
|
|
|
|
|
|
|
|
|
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, LoginUserId = _userInfo.UserRoleId, OptUserId = _userInfo.UserRoleId, OptType = UserOptType.UpdateUser }, true);
|
|
|
|
|
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, ActionIdentityUserId = _userInfo.IdentityUserId, ActionUserName = _userInfo.UserName, TargetIdentityUserId = _userInfo.IdentityUserId, OptType = UserOptType.UpdateUser }, true);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return ResponseOutput.Ok();
|
|
|
|
|
|
|
|
|
@@ -222,7 +225,8 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
Phone = newPhone
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, LoginUserId = _userInfo.UserRoleId, OptUserId = _userInfo.UserRoleId, OptType = UserOptType.UpdateUser }, true);
|
|
|
|
|
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, ActionIdentityUserId = _userInfo.IdentityUserId, ActionUserName = _userInfo.UserName, TargetIdentityUserId = _userInfo.IdentityUserId, OptType = UserOptType.UpdateUser }, true);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return ResponseOutput.Ok();
|
|
|
|
|
}
|
|
|
|
@@ -239,7 +243,8 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
UserName = newUserName
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, LoginUserId = _userInfo.UserRoleId, OptUserId = _userInfo.UserRoleId, OptType = UserOptType.UpdateUser }, true);
|
|
|
|
|
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, ActionIdentityUserId = _userInfo.IdentityUserId, ActionUserName = _userInfo.UserName, TargetIdentityUserId = _userInfo.IdentityUserId, OptType = UserOptType.UpdateUser }, true);
|
|
|
|
|
|
|
|
|
|
return ResponseOutput.Ok();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -267,7 +272,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
|
|
|
|
|
}, true);
|
|
|
|
|
|
|
|
|
|
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, LoginUserId = _userInfo.UserRoleId, OptUserId = _userInfo.UserRoleId, OptType = UserOptType.UpdateUser }, true);
|
|
|
|
|
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, ActionIdentityUserId = _userInfo.IdentityUserId, ActionUserName = _userInfo.UserName, TargetIdentityUserId = _userInfo.IdentityUserId, OptType = UserOptType.UpdateUser }, true);
|
|
|
|
|
|
|
|
|
|
return ResponseOutput.Ok();
|
|
|
|
|
}
|
|
|
|
@@ -298,7 +303,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
|
|
|
|
|
await _fusionCache.RemoveAsync(CacheKeys.UserLoginError(userName));
|
|
|
|
|
|
|
|
|
|
//await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, LoginUserId = _userInfo.Id, OptUserId = userId, OptType = UserOptType.ResetPassword }, true);
|
|
|
|
|
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, ActionIdentityUserId = _userInfo.IdentityUserId, ActionUserName = _userInfo.UserName, TargetIdentityUserId = _userInfo.IdentityUserId, OptType = UserOptType.ResetPassword }, true);
|
|
|
|
|
|
|
|
|
|
return ResponseOutput.Ok();
|
|
|
|
|
}
|
|
|
|
@@ -408,7 +413,8 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
IsFirstAdd = false
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
//await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, LoginUserId = userId, OptUserId = userId, LoginPassword = newPwd, OptType = UserOptType.UnloginModifyPasswoed }, true);
|
|
|
|
|
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, ActionIdentityUserId = identityUserId, ActionUserName = _userInfo.UserName, TargetIdentityUserId = identityUserId, OptType = UserOptType.LoginModifyPassword }, true);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return ResponseOutput.Result(success);
|
|
|
|
|
|
|
|
|
@@ -444,7 +450,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
IsFirstAdd = false
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, LoginUserId = _userInfo.UserRoleId, OptUserId = _userInfo.UserRoleId, OptType = UserOptType.LoginModifyPassword }, true);
|
|
|
|
|
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, ActionIdentityUserId = _userInfo.IdentityUserId, ActionUserName = _userInfo.UserName, TargetIdentityUserId = _userInfo.IdentityUserId, OptType = UserOptType.LoginModifyPassword }, true);
|
|
|
|
|
|
|
|
|
|
return ResponseOutput.Result(success);
|
|
|
|
|
|
|
|
|
@@ -561,9 +567,11 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
var success = await _identityUserRepository.SaveChangesAsync();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
await _mailVerificationService.AddUserSendEmailAsync(saveItem.Id, userAddModel.BaseUrl, userAddModel.RouteUrl);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return ResponseOutput.Ok(new UserAddedReturnDTO { Id = saveItem.Id, UserCode = saveItem.UserCode });
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
@@ -591,7 +599,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
|
|
|
|
|
if (user.Status != model.Status)
|
|
|
|
|
{
|
|
|
|
|
//await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, LoginUserId = _userInfo.Id, OptUserId = model.Id, OptType = model.Status == UserStateEnum.Enable ? UserOptType.AccountEnable : UserOptType.AccountLocked }, true);
|
|
|
|
|
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, ActionIdentityUserId = _userInfo.IdentityUserId, ActionUserName = _userInfo.UserName, OptType = model.Status == UserStateEnum.Enable ? UserOptType.AccountEnable : UserOptType.AccountLocked }, true);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -631,6 +639,9 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
|
|
|
|
|
var success = await _userRoleRepository.SaveChangesAsync();
|
|
|
|
|
|
|
|
|
|
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, ActionIdentityUserId = _userInfo.IdentityUserId, ActionUserName = _userInfo.UserName, TargetIdentityUserId = model.Id, OptType = UserOptType.UpdateUser }, true);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return ResponseOutput.Ok(success);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
@@ -643,13 +654,12 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
var user = await _identityUserRepository.Where(t => t.Id == command.Id, true).FirstOrDefaultAsync();
|
|
|
|
|
|
|
|
|
|
if (user == null) return Null404NotFound(user);
|
|
|
|
|
|
|
|
|
|
_mapper.Map(command, user);
|
|
|
|
|
|
|
|
|
|
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, ActionIdentityUserId = _userInfo.IdentityUserId, ActionUserName = _userInfo.UserName, TargetIdentityUserId = command.Id, OptType = UserOptType.UpdateUser }, true);
|
|
|
|
|
|
|
|
|
|
await _identityUserRepository.SaveChangesAsync();
|
|
|
|
|
|
|
|
|
|
return ResponseOutput.Ok();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[HttpPut]
|
|
|
|
@@ -682,6 +692,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var success = await _userRoleRepository.SaveChangesAsync();
|
|
|
|
|
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, ActionIdentityUserId = _userInfo.IdentityUserId, ActionUserName = _userInfo.UserName, TargetIdentityUserId = command.Id, OptType = UserOptType.UpdateUserRole }, true);
|
|
|
|
|
|
|
|
|
|
return ResponseOutput.Ok();
|
|
|
|
|
}
|
|
|
|
@@ -895,17 +906,17 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
|
|
|
|
|
var userLogQueryable =
|
|
|
|
|
_userLogRepository.AsQueryable().IgnoreQueryFilters()
|
|
|
|
|
.WhereIf(inQuery.TrialId != null, t => t.LoginUser.UserRoleTrials.Any(c => c.TrialId == inQuery.TrialId && (c.UserId == t.LoginUserId || c.UserId == t.OptUserId)))
|
|
|
|
|
.WhereIf(inQuery.TrialId != null, t => t.CreateUserRole.UserRoleTrials.Any(c => c.TrialId == inQuery.TrialId && (c.UserId == t.LoginUserId || c.UserId == t.OptUserId)))
|
|
|
|
|
.WhereIf(trialCreateTime != null, t => t.CreateTime >= trialCreateTime)
|
|
|
|
|
.WhereIf(inQuery.OptType != null, t => t.OptType == inQuery.OptType)
|
|
|
|
|
.WhereIf(inQuery.UserId != null, t => t.LoginUserId == inQuery.UserId)
|
|
|
|
|
.WhereIf(inQuery.BeginDate != null, t => t.CreateTime >= inQuery.BeginDate)
|
|
|
|
|
.WhereIf(inQuery.EndDate != null, t => t.CreateTime <= inQuery.EndDate)
|
|
|
|
|
.WhereIf(!string.IsNullOrEmpty(inQuery.LoginUserName), t => t.LoginUser.UserName.Contains(inQuery.LoginUserName!))
|
|
|
|
|
.WhereIf(!string.IsNullOrEmpty(inQuery.LoginUserName), t => t.CreateUserRole.UserName.Contains(inQuery.LoginUserName!))
|
|
|
|
|
.WhereIf(!string.IsNullOrEmpty(inQuery.LoginFaildName), t => t.LoginFaildName.Contains(inQuery.LoginFaildName!))
|
|
|
|
|
.WhereIf(!string.IsNullOrEmpty(inQuery.IP), t => t.IP.Contains(inQuery.IP!))
|
|
|
|
|
.WhereIf(inQuery.LoginUserTypeEnum != null, t => t.LoginUser.UserTypeEnum == inQuery.LoginUserTypeEnum)
|
|
|
|
|
.WhereIf(inQuery.UserTypeId != null, t => t.LoginUser.UserTypeId == inQuery.UserTypeId)
|
|
|
|
|
.WhereIf(inQuery.LoginUserTypeEnum != null, t => t.CreateUserRole.UserTypeEnum == inQuery.LoginUserTypeEnum)
|
|
|
|
|
.WhereIf(inQuery.UserTypeId != null, t => t.CreateUserRole.UserTypeId == inQuery.UserTypeId)
|
|
|
|
|
|
|
|
|
|
.ProjectTo<UserLogView>(_mapper.ConfigurationProvider);
|
|
|
|
|
|
|
|
|
@@ -916,10 +927,14 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
|
|
|
|
|
[AllowAnonymous]
|
|
|
|
|
[HttpGet]
|
|
|
|
|
public async Task<IResponseOutput> LoginOut(Guid identityUserId)
|
|
|
|
|
public async Task<IResponseOutput> LoginOut(Guid identityUserId, Guid userRoleId)
|
|
|
|
|
{
|
|
|
|
|
await _fusionCache.RemoveAsync(CacheKeys.UserToken(identityUserId));
|
|
|
|
|
|
|
|
|
|
var userName = await _userRoleRepository.Where(t => t.Id == userRoleId).Select(t => t.IdentityUser.UserName).FirstOrDefaultAsync();
|
|
|
|
|
|
|
|
|
|
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, ActionIdentityUserId = identityUserId, ActionUserName = userName, OptType = UserOptType.LoginOut }, true);
|
|
|
|
|
|
|
|
|
|
return ResponseOutput.Ok();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -966,7 +981,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
|
|
|
|
|
if (failCount >= maxFailures)
|
|
|
|
|
{
|
|
|
|
|
//await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, LoginUserId = Guid.Empty, OptUserId = Guid.Empty, LoginFaildName = userName, LoginPassword = password, OptType = UserOptType.AccountLocked }, true);
|
|
|
|
|
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, LoginFaildName = userName, LoginPassword = password, OptType = UserOptType.AccountLocked }, true);
|
|
|
|
|
|
|
|
|
|
//$"密码连续错误{maxFailures}次,当前账号已被限制登录,请等待 {lockoutMinutes} 分钟后再试。"
|
|
|
|
|
throw new BusinessValidationFailedException(_localizer["User_ErrorLimit", maxFailures, lockoutMinutes]);
|
|
|
|
@@ -986,7 +1001,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
|
|
|
|
|
var errorPwdUserId = await _identityUserRepository.Where(u => u.UserName == userName).Select(t => t.Id).FirstOrDefaultAsync();
|
|
|
|
|
|
|
|
|
|
//await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, LoginUserId = errorPwdUserId, OptUserId = errorPwdUserId, LoginFaildName = userName, LoginPassword = password, OptType = UserOptType.AccountOrPasswordError }, true);
|
|
|
|
|
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, ActionUserName = userName, LoginFaildName = userName, LoginPassword = password, OptType = UserOptType.AccountOrPasswordError }, true);
|
|
|
|
|
|
|
|
|
|
return ResponseOutput.NotOk(_localizer["User_CheckNameOrPw"], new IRCLoginReturnDTO());
|
|
|
|
|
|
|
|
|
@@ -994,7 +1009,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
|
|
|
|
|
if (loginUser.Status == 0)
|
|
|
|
|
{
|
|
|
|
|
//await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, LoginUserId = loginUser.Id, OptUserId = loginUser.Id, LoginFaildName = userName, OptType = UserOptType.LoginLockedAccount }, true);
|
|
|
|
|
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, ActionIdentityUserId = loginUser.IdentityUserId, LoginFaildName = userName, OptType = UserOptType.LoginLockedAccount }, true);
|
|
|
|
|
|
|
|
|
|
//---该用户已经被禁用。
|
|
|
|
|
return ResponseOutput.NotOk(_localizer["User_Disabled"], new IRCLoginReturnDTO());
|
|
|
|
@@ -1021,7 +1036,7 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
loginUser.LoginState = 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, LoginUserId = loginUser.Id, OptUserId = loginUser.Id, OptType = UserOptType.Login }, true);
|
|
|
|
|
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, ActionIdentityUserId = loginUser.IdentityUserId, OptType = UserOptType.Login }, true);
|
|
|
|
|
|
|
|
|
|
userLoginReturnModel.BasicInfo = loginUser;
|
|
|
|
|
|
|
|
|
@@ -1116,9 +1131,10 @@ namespace IRaCIS.Core.Application.Service
|
|
|
|
|
PermissionStr = t.UserTypeRole.PermissionStr,
|
|
|
|
|
UserName = t.UserName,
|
|
|
|
|
UserTypeShortName = t.UserTypeRole.UserTypeShortName,
|
|
|
|
|
|
|
|
|
|
}).FirstOrDefaultAsync();
|
|
|
|
|
|
|
|
|
|
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, ActionIdentityUserId = userTokenInfo.IdentityUserId, ActionUserName = userTokenInfo.UserName, OptType = UserOptType.LoginSelectRole }, true);
|
|
|
|
|
|
|
|
|
|
if (userTokenInfo != null)
|
|
|
|
|
{
|
|
|
|
|
var jwt = _tokenService.GetToken(userTokenInfo);
|
|
|
|
|