private ActionResult ValidateAndReturnProperView(SignInStatus result, VerifyCodeViewModel model)
 {
     switch (result)
     {
         case SignInStatus.Success:
             return RedirectToLocal(model.ReturnUrl);
         case SignInStatus.LockedOut:
             return View("Lockout");
         case SignInStatus.Failure:
         default:
             ModelState.AddModelError("", "Invalid code.");
             return View(model);
     }
 }
        public async Task<ActionResult> VerifyCode(VerifyCodeViewModel model)
        {
            if (!ModelState.IsValid) return View(model);

            // The following code protects for brute force attacks against the two factor codes. 
            // If a user enters incorrect codes for a specified amount of time then the user account 
            // will be locked out for a specified amount of time. 
            // You can configure the account lockout settings in IdentityConfig
            SignInStatus result = await IdentityRepository.SignInManager.TwoFactorSignInAsync(model.Provider, model.Code, isPersistent: model.RememberMe, rememberBrowser: model.RememberBrowser);

            return ValidateAndReturnProperView(result, model);
        }