public async Task <ActionResult> CompletedLogin([FromForm] CompleteLoginViewModel model) { bool isUserRegistered = await _membershipService.IsUserRegistered(model.UserName); if (!isUserRegistered) { // If we got this far, something failed, redisplay form ModelState.AddModelError("", "User has not been registered."); return(View("FinishLogin", model)); } try { if (!await _membershipService.AuthenticateUser(model.UserName, model.DeviceResponse)) { throw new Exception("Device response did not work with user."); } return(RedirectToAction("Index", "Profile")); } catch (Exception e) { _logger.LogError(e.Message); ModelState.AddModelError("", "Error authenticating"); return(View("FinishLogin", model)); } }
public async Task <ActionResult> BeginLogin(StartLoginViewModel model) { bool isUserRegistered = await _membershipService.IsUserRegistered(model.UserName); bool areCredsValid = await _membershipService.IsValidUserNameAndPassword(model.UserName, model.Password); if (string.IsNullOrWhiteSpace(model.Password) || !isUserRegistered) { _logger.LogInformation($"invalid username {model.UserName} or password {model.Password}"); // If we got this far, something failed, redisplay form ModelState.AddModelError("CustomError", "User has not been registered."); return(View("Login", model)); } if (!areCredsValid) { _logger.LogInformation($"invalid username {model.UserName} or password {model.Password}"); ModelState.AddModelError("CustomError", "User/Password is not invalid."); return(View("Login", model)); } try { List <ServerChallenge> deviceChallenges = await _membershipService.GenerateDeviceChallenges(model.UserName); if (deviceChallenges == null || deviceChallenges.Count == 0) { throw new Exception("No server challenges were generated."); } var challenges = JsonConvert.SerializeObject(deviceChallenges); CompleteLoginViewModel loginModel = new CompleteLoginViewModel { AppId = deviceChallenges[0].appId, Version = deviceChallenges[0].version, Challenge = deviceChallenges[0].challenge, Challenges = challenges, UserName = model.UserName.Trim() }; return(View("FinishLogin", loginModel)); } catch (Exception e) { _logger.LogError(e.Message); ModelState.AddModelError("CustomError", e.Message); return(View("Login", model)); } }
public CompleteLoginView(CompleteLoginViewModel initLoginViewModel) { InitializeComponent(); DataContext = initLoginViewModel; }