public static JArray GetCountries(this ILaenderSetting laenderSetting, string language)
        {
            if (language == null)
            {
                throw new ArgumentNullException(nameof(language));
            }

            language = language.ToLowerInvariant();
            if (!WebHelper.SupportedLanguages.Contains(language))
            {
                language = WebHelper.DefaultLanguage;
            }

            var countries    = new JArray();
            var allCountries = (JObject)JsonConvert.DeserializeObject(laenderSetting.Laender);

            // ReSharper disable once PossibleInvalidCastExceptionInForeachLoop
            foreach (JProperty prop in allCountries.Children())
            {
                var translated                 = JsonHelper.FindTokenValue <string>(prop.Value, language);
                var canOnboardWithPassport     = JsonHelper.FindTokenValue <bool>(prop.Value, "canOnboardWithPassport");
                var canOnboardWithIdentityCard = JsonHelper.FindTokenValue <bool>(prop.Value, "canOnboardWithIdentityCard");
                if (string.IsNullOrEmpty(translated))
                {
                    translated = prop.Name;
                }

                countries.Add(new JObject
                {
                    { "code", prop.Name },
                    { "name", translated },
                    { "canOnboardWithPassport", canOnboardWithPassport },
                    { "canOnboardWithIdentityCard", canOnboardWithIdentityCard }
                });
            }

            return(countries);
        }
Beispiel #2
0
        public static JObject VerifyCaptcha(CaptchaVerificationData data, JObject settings)
        {
            Log.Debug("SecurityHelper:VerifyCaptcha: {data}", JsonConvert.SerializeObject(data, Formatting.Indented));
            var result = new JObject();

            try
            {
                var captcha      = JsonHelper.FindTokenValue <JObject>(settings, "captcha");
                var verifyUrl    = JsonHelper.GetByPath <string>(captcha, "server.verifyUrl");
                var secret       = JsonHelper.GetByPath <string>(captcha, "server.secret");
                var verifyParams = $"secret={secret}&response={data.Token}";
                if (!string.IsNullOrEmpty(data.Ip))
                {
                    verifyParams += $"&remoteip={data.Ip}";
                }

                using (var client = new WebClient())
                {
                    client.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
                    var response = client.UploadString(verifyUrl, verifyParams);
                    if (!string.IsNullOrEmpty(response) && response.Contains("{"))
                    {
                        result.Add("verify", JsonConvert.DeserializeObject <JToken>(response));
                    }
                    else
                    {
                        result.Add("verify", response);
                    }
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex, "Could not verify captcha");
            }

            return(result);
        }