public IActionResult Login(string ReturnUrl = "")
        {
            var model = new ViewModel.Login();

            model.ReturnUrl = ReturnUrl;
            return(View(model));
        }
        public async Task <IActionResult> Login(ViewModel.Login model)
        {
            model.ClearMessages();

            if (ModelState.IsValid)
            {
                try
                {
                    bool loginSuccessful = await _service.LoginUserAsync(model.Email, model.Password);

                    if (loginSuccessful)
                    {
                        if (model.ReturnUrl != null && model.ReturnUrl != "")
                        {
                            return(Redirect(model.ReturnUrl));
                        }

                        return(RedirectToAction("Index", "Home"));
                    }
                    else
                    {
                        _logger.LogInformation($"Failed login attempt for {model.Email} (IP: {HttpContext.Connection.RemoteIpAddress})");
                    }

                    model.ErrorMessage = "Invalid email address or password";
                }
                catch (Exception ex)
                {
                    _logger.LogError(ex, $"Error logging in user: {model.Email}");
                    model.ErrorMessage = "Invalid email address or password";
                }
            }

            return(View(model));
        }
Exemple #3
0
        public async Task AccountController_Login_Successful()
        {
            var mockLogger         = Mock.Of <ILogger <AccountController> >();
            var mockUserProvider   = Mock.Of <IUserProvider>();
            var mockAccountService = new MockAccountService().MockLoginUserAsync(true);

            var accountController = new AccountController(mockUserProvider, mockAccountService.Object, mockLogger);

            var loginViewModel = new ViewModel.Login
            {
                Email     = "*****@*****.**",
                Password  = "******",
                ReturnUrl = null
            };

            var result = (RedirectToActionResult)await accountController.Login(loginViewModel);

            Assert.Equal("Home", result.ControllerName);
            Assert.Equal("Index", result.ActionName);
        }
Exemple #4
0
        public async Task AccountController_Login_Unsuccessful()
        {
            var mockLogger         = Mock.Of <ILogger <AccountController> >();
            var mockUserProvider   = Mock.Of <IUserProvider>();
            var mockAccountService = new MockAccountService().MockLoginUserAsync(false);

            var accountController = new AccountController(mockUserProvider, mockAccountService.Object, mockLogger);

            var loginViewModel = new ViewModel.Login
            {
                Email     = "*****@*****.**",
                Password  = "******",
                ReturnUrl = null
            };

            var result = await accountController.Login(loginViewModel);

            var viewResult = Assert.IsType <ViewResult>(result);
            var model      = Assert.IsType <ViewModel.Login>(viewResult.ViewData.Model);

            Assert.IsType <ViewModel.Login>(model);
            Assert.Equal("Invalid email address or password", model.ErrorMessage);
        }
Exemple #5
0
        public Login()
        {
            InitializeComponent();

            BindingContext = new ViewModel.Login();
        }