//[ValidateAntiForgeryToken] public async Task <IActionResult> SignIn([FromBody] SignInUserInfoDTO model) { if (model == null) { throw new ArgumentNullException(nameof(model)); } var user = await _userManager.FindByEmailAsync(model.Email); var result = await _signInManager.PasswordSignInAsync(user, model.Password, model.RememberMe, lockoutOnFailure : false); if (result.Succeeded) { Logger.LogInformation($"User '{model.Email}' successfully log in."); return(Ok()); } if (result.RequiresTwoFactor) { Logger.LogInformation($"Requires two factor."); return(Ok()); } if (result.IsLockedOut) { Logger.LogWarning("User account locked out."); ModelState.AddModelError(nameof(model.Email), "User account locked out. contact your admin."); return(BadRequest(ModelState)); } Logger.LogError($"Failed to log in user: '******'"); ModelState.AddModelError(nameof(model.Password), "Your password doesn't match"); return(BadRequest(ModelState)); }
public async Task SignIn_ReturnsLoggedUser() { // Arrange var registerModel = new RegisterUserInfoDTO { UserName = "******", Email = "*****@*****.**", NewPassword = "******" }; //await RegisterUserAsync(registerModel); var loginModel = new SignInUserInfoDTO { Email = registerModel.Email, Password = registerModel.NewPassword }; // Act var response = await _client.PostAsJsonAsync("api/account/signin", loginModel); // Assert response.EnsureSuccessStatusCode(); var responseAsString = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject <UserInfoDTO>(responseAsString); Assert.NotNull(result); Assert.False(result.IsAuthenticated); Assert.Empty(result.UserName); }