public virtual async Task <ActionResult> ResetKlant(ResetPasswordViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }
            var user = await UserManager.FindByNameAsync(model.Email);

            if (user == null)
            {
                ModelState.AddModelError("", "De opgegeven klant bestaat niet");
                return(View("ResetKlant"));
            }
            string resetToken = await UserManager.GeneratePasswordResetTokenAsync(user.Id);

            var result = await UserManager.ResetPasswordAsync(user.Id, resetToken, model.NewPassword);

            if (result.Succeeded)
            {
                user.MustChangePassword      = true;
                user.LastPasswordChangedDate = DateTime.Now;
                UserManager.UpdateGebruiker(user);
                if (user.Toegestaan == false)
                {
                    mgr.UnblockKlant(user.GebruikerId);
                }
                return(RedirectToAction("Index", "Manage", new { Message = ManageMessageId.ChangePasswordSuccess }));
            }
            AddErrors(result);
            return(View());
        }
        public virtual async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }
            var user = await UserManager.FindByNameAsync(model.Email);

            if (user != null)
            {
                if (user.LastPasswordChangedDate.AddMonths(6) < DateTime.Now && user.Rol != RolType.Admin)
                {
                    //mgr.BlockKlant(user.GebruikerId);
                    user.MustChangePassword = true;
                    UserManager.UpdateGebruiker(user);
                    mgr.BlockKlant(user.GebruikerId);
                    ModelState.AddModelError("", "Uw passwoord is expired. Contacteer uw admin.");
                    return(View("Login"));
                }
                if (user.LastPasswordChangedDate.AddDays(7) < DateTime.Now && user.Rol != RolType.Admin)
                {
                    //mgr.BlockKlant(user.GebruikerId);
                    ViewBag.Melding = "Passwoord vervalt binnen 7 dagen!";
                    return(View(model));
                }
                if (user.Toegestaan == false)
                {
                    ModelState.AddModelError("", "Uw account is geblokkeerd. Contacteer uw admin.");
                    return(View("Login"));
                }
                var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout : false);

                switch (result)
                {
                case SignInStatus.Success:

                    if (user.Rol == RolType.KlantAccount)
                    {
                        if (user.MustChangePassword == true)
                        {
                            returnUrl = "~/Manage/ChangePassword";
                            return(RedirectToLocal(returnUrl));
                        }
                        else
                        {
                            returnUrl = "~/Home/Index";
                            return(RedirectToLocal(returnUrl));
                        }
                    }
                    if (user.Rol == RolType.Admin)
                    {
                        if (user.MustChangePassword == true)
                        {
                            returnUrl = "~/Manage/ChangePassword";
                            return(RedirectToLocal(returnUrl));
                        }
                        else
                        {
                            returnUrl = "~/Admin/Index";
                            return(RedirectToLocal(returnUrl));
                        }
                    }
                    if (user.MustChangePassword == true)
                    {
                        returnUrl = "~/Manage/ChangePassword";
                        return(RedirectToLocal(returnUrl));
                    }
                    else
                    {
                        returnUrl = "~/Klant/Home";
                        return(RedirectToLocal(returnUrl));
                    }

                case SignInStatus.LockedOut:
                    return(View("Lockout"));

                case SignInStatus.RequiresVerification:
                    return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe }));

                case SignInStatus.Failure:

                default:
                    ModelState.AddModelError("", "Ongeldige Login Gegevens.");
                    return(View(model));
                }
            }
            ModelState.AddModelError("", "Ongeldige inlog gegevens");
            // TempData["Melding"] = "Passwoord vervalt binnen 7 dagen!";
            return(View(model));
        }