public async Task LoggingInAsync(string userName, Action <string, string> reportError)
 {
     if (_reCaptchaService.IsThisARobot())
     {
         await _reCaptchaService.ValidateCaptchaAsync(reportError);
     }
 }
예제 #2
0
        public async Task OnResultExecutionAsync(ResultExecutingContext filterContext, ResultExecutionDelegate next)
        {
            if (!(filterContext.Result is ViewResult || filterContext.Result is PageResult) ||
                !String.Equals("OrchardCore.Users", Convert.ToString(filterContext.RouteData.Values["area"]), StringComparison.OrdinalIgnoreCase))
            {
                await next();

                return;
            }

            var settings = (await _siteService.GetSiteSettingsAsync()).As <ReCaptchaSettings>();

            if (!settings.IsValid())
            {
                await next();

                return;
            }

            dynamic layout = await _layoutAccessor.GetLayoutAsync();

            var afterLoginZone = layout.Zones["AfterLogin"];

            if (_reCaptchaService.IsThisARobot())
            {
                afterLoginZone.Add(await _shapeFactory.New.ReCaptcha());
            }

            var afterForgotPassword = layout.Zones["AfterForgotPassword"];

            afterForgotPassword.Add(await _shapeFactory.New.ReCaptcha());

            var afterRegister = layout.Zones["AfterRegister"];

            afterRegister.Add(await _shapeFactory.New.ReCaptcha());

            var afterResetPassword = layout.Zones["AfterResetPassword"];

            afterResetPassword.Add(await _shapeFactory.New.ReCaptcha());

            await next();

            return;
        }