public async Task Login_InValidPassword_BadRequest()
        {
            // Arrange
            var user = new User
            {
                Email     = "",
                FirstName = "",
                LastName  = "",
                Id        = Guid.NewGuid(),
                City      = "",
                Birthday  = DateTime.Now,
                Gender    = "",
                IsExpert  = false
            };

            var dtoLoginUser = new DTOLoginUser
            {
                Email    = It.IsAny <string>(),
                Password = It.IsAny <string>()
            };

            _userManagerMock.Setup(x => x.FindByEmailAsync(It.IsAny <string>())).Returns(Task.FromResult(user));
            _signInManagerMock.Setup(x => x.CheckPasswordSignInAsync(It.IsAny <User>(), It.IsAny <string>(), false))
            .Returns(Task.FromResult(SignInResult.Failed));

            _uut = new AccountController(_factoryMock.Object, _userManagerMock.Object, _signInManagerMock.Object, _configurationMock.Object);

            // Act
            var result = await _uut.Login(dtoLoginUser);

            // Assert
            Assert.IsInstanceOfType(result, typeof(BadRequestObjectResult));
        }
        public async Task <IActionResult> Profile()
        {
            var          email        = HttpContext.User.Identity.Name;
            var          user         = _userRepo.GetUserByEmail(email);
            DTOLoginUser userToReturn = new DTOLoginUser();

            userToReturn.Name     = user.Name;
            userToReturn.Email    = user.Email;
            userToReturn.UserName = user.UserName;
            userToReturn.Address  = user.Address;
            userToReturn.Gender   = user.Gender;
            userToReturn.Note     = user.Note;
            userToReturn.NbNotes  = user.NbNotes;

            var transactionList = new List <DTOArticle>();

            var userTransactions = await _transactionRepo.GetTransactionByUserId(user.Id);

            foreach (var transaction in userTransactions)
            {
                var toInsert = new DTOArticle();
                var article  = await _articleRepo.GetById(transaction.ArticleId);

                toInsert.Name  = article.Name;
                toInsert.State = article.State;
                toInsert.Id    = article.Id;

                if (toInsert.Transaction == null)
                {
                    toInsert.Transaction = new DTOTransaction();
                    toInsert.Transaction.TransactionState = transaction.TransactionState;
                }


                var sellerFromDb = await _userRepo.GetById(article.SellerId);

                var sellerToInsert = new DTOUserPublic();
                sellerToInsert.Name     = sellerFromDb.Name;
                sellerToInsert.UserName = sellerFromDb.UserName;
                toInsert.User           = sellerToInsert;
                transactionList.Add(toInsert);
            }


            ViewData["transactionlist"] = transactionList;
            return(View(userToReturn));
        }
Example #3
0
        public async Task <IActionResult> Login([FromBody] DTOLoginUser dtoUser)
        {
            var user = await _userManager.FindByEmailAsync(dtoUser.Email);

            if (user == null)
            {
                ModelState.AddModelError(string.Empty, "Invalid login");
                return(BadRequest(ModelState));
            }
            var passwordSignInResult = await _signInManager.CheckPasswordSignInAsync(user, dtoUser.Password, false);

            if (passwordSignInResult.Succeeded)
            {
                return(Ok(GenerateToken(user)));
            }
            return(BadRequest("Invalid login"));
        }
        public async Task <ActionResult> SecondLogin(DTOLoginUser userModel)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    if (_userRepo.GetUserByEmail(userModel.Email) == null)
                    {
                        throw new Exception();
                    }
                    string typedPassword = userModel.Password;
                    var    user          = _userRepo.GetUserByEmail(userModel.Email);
                    if (HashPassword(typedPassword) == user.Password)
                    {
                        var claims = new List <Claim>
                        {
                            new Claim(ClaimTypes.Name, userModel.Email)
                        };
                        var claimsIdentity = new ClaimsIdentity(claims, "Login");

                        await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, new ClaimsPrincipal(claimsIdentity));

                        return(Redirect("/User/EditProfile"));
                    }
                    else
                    {
                        throw new Exception();
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.LogError("CONTROLLER USER -- Login() -- Error : ", ex);
            }
            return(View("Error", new ErrorViewModel()));
        }