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)); }
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); }
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); }
public Login() { InitializeComponent(); BindingContext = new ViewModel.Login(); }