public RecaptchaService(IOptionsMonitor <RecaptchaSettings> settings,
                         HttpClient httpClient, ILogger <RecaptchaService> logger)
 {
     _settings   = settings.CurrentValue;
     _httpClient = httpClient;
     _logger     = logger;
 }
Пример #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="settings"></param>
        /// <param name="tagHelperComponentManager"></param>
        /// <exception cref="ArgumentNullException"></exception>
        public RecaptchaV3TagHelper(IOptionsMonitor <RecaptchaSettings> settings, ITagHelperComponentManager tagHelperComponentManager)
        {
            _ = settings ?? throw new ArgumentNullException(nameof(settings));
            _ = tagHelperComponentManager ?? throw new ArgumentNullException(nameof(tagHelperComponentManager));

            _settings = settings.CurrentValue;
            _tagHelperComponentManager = tagHelperComponentManager;
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="settings"></param>
        /// <param name="options"></param>
        public RecaptchaTagHelper(IOptionsMonitor <RecaptchaSettings> settings, IOptionsMonitor <RecaptchaOptions> options)
        {
            _ = settings ?? throw new ArgumentNullException(nameof(settings));
            _ = options ?? throw new ArgumentNullException(nameof(options));

            _settings = settings.CurrentValue;
            _options  = options.CurrentValue;

            Theme = _options.Theme;
            Size  = _options.Size;
        }
        public SiteVerifierProxyTests()
        {
            var configurationRoot = new ConfigurationBuilder()
                                    .AddJsonFile("secrets.json")
                                    .Build();
            var recaptchaSettings = new RecaptchaSettings
            {
                SecretKey = configurationRoot["reCAPTCHATestSecretKey"]
            };

            _proxy = new SiteVerifierProxy(() => new HttpClient(), () => recaptchaSettings,
                                           JsonConvert.DeserializeObject);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="settings"></param>
        /// <param name="options"></param>
        /// <param name="tagHelperComponentManager"></param>
        /// <exception cref="ArgumentNullException"></exception>
        public RecaptchaInvisibleTagHelper(IOptionsMonitor <RecaptchaSettings> settings, IOptionsMonitor <RecaptchaOptions> options,
                                           ITagHelperComponentManager tagHelperComponentManager)
        {
            _ = settings ?? throw new ArgumentNullException(nameof(settings));
            _ = options ?? throw new ArgumentNullException(nameof(options));
            _ = tagHelperComponentManager ?? throw new ArgumentNullException(nameof(tagHelperComponentManager));

            _settings = settings.CurrentValue;
            _options  = options.CurrentValue;
            _tagHelperComponentManager = tagHelperComponentManager;

            Badge = _options.Badge;
        }
Пример #6
0
        public EmailService(ILoggerFactory loggerFactory, IOptions <MailingSettings> emailSettings,
                            IOptions <EnvironmentSettings> environmentSettings, IOptions <RecaptchaSettings> recaptchaSettings)
        {
            _logger              = loggerFactory.CreateLogger(GetType().FullName);
            _loggerFactory       = loggerFactory;
            _emailSettings       = emailSettings.Value;
            _environmentSettings = environmentSettings.Value;
            _recaptchaSettings   = recaptchaSettings.Value;
            HttpClientHandler clientHandler = new()
            {
                ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => { return(true); }
            };

            _httpClient = new HttpClient(clientHandler);
        }
Пример #7
0
 public LoginModuleSettings(
     LoginModuleOptions options               = LoginModuleOptions.Default,
     string encryptionChannelName             = null, //uses default encryption channel if name is null
     TimeSpan?passwordExpirationPeriod        = null,
     RecaptchaSettings recaptcha              = null,
     IPasswordStrengthChecker passwordChecker = null,
     IPasswordHasher passwordHasher           = null,
     int bcryptWorkFactor = 10)
 {
     Options = options;
     EncryptionChannelName    = encryptionChannelName;
     PasswordExpirationPeriod = passwordExpirationPeriod;
     Recaptcha       = recaptcha;
     PasswordChecker = passwordChecker; //if null, default will be created in LoginMOdule.Init
     PasswordHasher  = passwordHasher ?? new BCryptPasswordHasher(bcryptWorkFactor);
 }
Пример #8
0
        public ServiceResult Validate(RecaptchaSettings recaptchaSettings, ILogger logger = null)
        {
            var result = new ServiceResult {
                ServiceResultType = ServiceResultType.None
            };
            var client = new HttpClient();

            try
            {
                if (string.IsNullOrEmpty(recaptchaSettings.RecaptchaResponse))
                {
                    result.ServiceResultType = ServiceResultType.Error;
                    result.Message           = "Missing recaptcha response";
                }
                else
                {
                    var responseString = client.GetStringAsync($"https://www.recaptcha.net/recaptcha/api/siteverify?secret={recaptchaSettings.RecaptchaKey}&response={recaptchaSettings.RecaptchaResponse}").GetAwaiter().GetResult();
                    //var response = JsonSerializer.Deserialize<RecaptchaResponse>(responseString);
                    var response = JsonConvert.DeserializeObject <RecaptchaResponse>(responseString);
                    if (response.success)
                    {
                        result.ServiceResultType = ServiceResultType.Success;
                    }
                    else
                    {
                        result.ServiceResultType = ServiceResultType.Error;
                        result.Message           = response.error_codes[0];
                        if (result.Message.EndsWith("secret"))
                        {
                            logger.LogInformation("Recaptcha failed: {0} / {1}", recaptchaSettings.RecaptchaKey?.Substring(0, 10), recaptchaSettings.RecaptchaResponse?.Substring(0, 15));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                result.ServiceResultType = ServiceResultType.Error;
                result.Message           = ex.Message;
                if (logger != null)
                {
                    logger.LogInformation(ex, "RecaptchaService error");
                }
            }

            return(result);
        }
 public GoogleRecaptchaService(IOptions <RecaptchaSettings> recaptchaSettings)
 {
     _recaptchaSettings = recaptchaSettings.Value;
 }
Пример #10
0
 /// <summary>
 /// Initializes a new instance of the <see cref="RecaptchaService" /> class.
 /// </summary>
 /// <param name="httpClientFactory">The HTTP client factory.</param>
 /// <param name="recaptchaSettings">The recaptcha settings.</param>
 public RecaptchaService(IHttpClientFactory httpClientFactory, RecaptchaSettings recaptchaSettings)
 {
     this.httpClientFactory = httpClientFactory;
     this.recaptchaSettings = recaptchaSettings;
 }
Пример #11
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="settings"></param>
        /// <exception cref="ArgumentNullException"></exception>
        public RecaptchaScriptTagHelper(IOptionsMonitor <RecaptchaSettings> settings)
        {
            _ = settings ?? throw new ArgumentNullException(nameof(settings));

            _settings = settings.CurrentValue;
        }