Пример #1
0
        //[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));
        }
Пример #2
0
        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);
        }