public async Task <ActionResult> Login(LoginModel model) { ActionResult response = null; var errors = new List <string>(); if (string.IsNullOrWhiteSpace(model.LoginEmail)) { errors.Add("Login email is invalid"); } if (!Regex.IsMatch(model.LoginEmail, @".*@.*\..*")) { errors.Add("Login email must contains \'@\', \'.\', symbols successively"); } if (model.Password.Length < 1) { errors.Add("Password must be at least 1 symbol"); } if (!await _securityAdapter.UserExists(model.LoginEmail) || !await _securityAdapter.CheckPassword(model.LoginEmail, model.Password)) { errors.Add("Invalid username or password"); } bool loginSuccess = false; if (!errors.Any()) { loginSuccess = await _securityAdapter.Login(model.LoginEmail, model.Password, model.RememberMe); } if (loginSuccess) { response = StatusCode((int)HttpStatusCode.OK, new { model.LoginEmail, model.ReturnUrl }); } else { response = StatusCode((int)HttpStatusCode.BadRequest, errors); } return(response); }