public async Task <object> Login(LoginDto dto) { var user = await _accountingRepo.GetLogin(x => x.Login.Equals(dto.Login)); if (user == null) { throw new ArgumentException("Пользователь не найден!"); } var alg = SHA512.Create(); alg.ComputeHash(Encoding.UTF8.GetBytes(dto.Password)); var pwdhash = Convert.ToBase64String(alg.Hash); // Reset password /*var password2 = "Sgs123456#"; * var alg2 = SHA512.Create(); * alg2.ComputeHash(Encoding.UTF8.GetBytes(password2)); * var pwdhash2 = Convert.ToBase64String(alg2.Hash);*/ if (user.Pwdhash != pwdhash) { throw new ArgumentException("Неверный пароль!"); } return(new { AccessToken = _identityLogic.GenerateAccessToken(user.Id), RefreshToken = _identityLogic.GenerateRefreshToken(user.Id), User = $"{user.Login}" }); }
public async Task <object> Login(LoginInDto dto) { var user = await _baseLogic.Of <User>() .GetQueryable(x => x.Login == dto.Login && !x.IsDeleted) .Include(x => x.UserRoles) .ThenInclude(x => x.Role) .FirstOrDefaultAsync(); if (user == default) { throw new ArgumentException("Пользователь не найден"); } if (user.IsBlocked) { throw new ArgumentException("Пользователь заблокирован, обратитесь к администратору"); } var pwdhash = HashPwd(dto.Password); if (user.Password != pwdhash) { user.PasswordTryCount++; if (user.PasswordTryCount >= 5) { user.IsBlocked = true; } await _baseLogic.Of <User>().Update(user); throw new ArgumentException("Вами введен некорректный пароль. Введите пароль еще раз"); } // сброс пароля user.PasswordTryCount = 0; user.LastInviteDate = DateTime.Now; var accessToken = _identityLogic.GenerateAccessToken(user); var refreshToken = _identityLogic.GenerateRefreshToken(user); user.RefreshToken = refreshToken; await _baseLogic.Of <User>().Update(user); return(new { accessToken, refreshToken }); }