示例#1
0
        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));
            }
        }
示例#2
0
        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));
            }
        }
示例#3
0
        public CompleteLoginView(CompleteLoginViewModel initLoginViewModel)
        {
            InitializeComponent();

            DataContext = initLoginViewModel;
        }