public IActionResult Index(string returnUrl = null)
        {
            ViewData["Title"] = "Login";
            ViewData["ReturnUrl"] = returnUrl;

            var model = new LoginViewModel();

            if (!string.IsNullOrEmpty(signinManager.AuthSettings.RecaptchaPublicKey))
            {
                model.RecaptchaSiteKey = signinManager.AuthSettings.RecaptchaPublicKey;
            }
            
            return View(model);
        }
        public async Task<IActionResult> Index(LoginViewModel model, string returnUrl = null)
        {
            ViewData["Title"] = "Log in";
            ViewData["ReturnUrl"] = returnUrl;
            
            if (!string.IsNullOrEmpty(signinManager.AuthSettings.RecaptchaPublicKey))
            {
                model.RecaptchaSiteKey = signinManager.AuthSettings.RecaptchaPublicKey;
            }

            if (!ModelState.IsValid)
            {
                return View(model);
            }

            if (!string.IsNullOrEmpty(signinManager.AuthSettings.RecaptchaPublicKey))
            {
                var recpatchaSecretKey = signinManager.AuthSettings.RecaptchaPrivateKey;
                var captchaResponse = await ValidateRecaptcha(Request, recpatchaSecretKey);

                if (!captchaResponse.Success)
                {
                    ModelState.AddModelError("recaptchaerror", "reCAPTCHA Error occured. Please try again");
                    return View(model);
                }

            }

            var authUser = signinManager.GetUser(model.UserName);

            if(authUser == null)
            {
                ModelState.AddModelError(string.Empty, "Invalid login attempt.");
                return View(model);
            }

            var isValid = signinManager.ValidatePassword(authUser,  model.Password);

            if(!isValid)
            {
                ModelState.AddModelError(string.Empty, "Invalid login attempt.");
                return View(model);

            }
            
            var authProperties = new AuthenticationProperties();
            authProperties.IsPersistent = model.RememberMe;

            var claimsPrincipal = signinManager.GetClaimsPrincipal(
                authUser);
            
            await HttpContext.Authentication.SignInAsync(
                signinManager.AuthSettings.AuthenticationScheme, 
                claimsPrincipal, 
                authProperties);

            if(!string.IsNullOrEmpty(returnUrl))
            {
                return LocalRedirect(returnUrl);
            }
            
            return LocalRedirect("/");
        }