/// <summary> /// Creates DNTCaptcha /// </summary> /// <param name="captchaAttributes">captcha attributes</param> public DNTCaptchaApiResponse CreateDNTCaptcha(DNTCaptchaTagHelperHtmlAttributes captchaAttributes) { if (captchaAttributes == null) { throw new ArgumentNullException(nameof(captchaAttributes)); } if (_httpContextAccessor.HttpContext == null) { throw new InvalidOperationException("`_httpContextAccessor.HttpContext` is null."); } var number = _randomNumberProvider.NextNumber(captchaAttributes.Min, captchaAttributes.Max); var randomText = _captchaTextProvider(captchaAttributes.DisplayMode).GetText(number, captchaAttributes.Language); var encryptedText = _captchaProtectionProvider.Encrypt(randomText); var captchaImageUrl = getCaptchaImageUrl(captchaAttributes, encryptedText); var captchaDivId = Invariant($"{_captchaOptions.CaptchaClass}{Guid.NewGuid():N}{_randomNumberProvider.NextNumber(captchaAttributes.Min, captchaAttributes.Max)}"); var cookieToken = $".{captchaDivId}"; var hiddenInputToken = _captchaProtectionProvider.Encrypt(cookieToken); _captchaStorageProvider.Add(_httpContextAccessor.HttpContext, cookieToken, randomText); return(new DNTCaptchaApiResponse { DntCaptchaImgUrl = captchaImageUrl, DntCaptchaId = captchaDivId, DntCaptchaTextValue = encryptedText, DntCaptchaTokenValue = hiddenInputToken }); }
/// <summary> /// Process the taghelper and generate the output. /// </summary> public void Process(TagHelperContext context, TagHelperOutput output) { context.CheckArgumentNull(nameof(context)); output.CheckArgumentNull(nameof(output)); setUrlHelper(); output.TagName = "div"; output.Attributes.Add("class", "dntCaptcha"); var captchaDivId = $"dntCaptcha{context.UniqueId}{_randomNumberProvider.Next(Min, Max)}"; output.Attributes.Add("id", captchaDivId); output.TagMode = TagMode.StartTagAndEndTag; var number = _randomNumberProvider.Next(Min, Max); var randomText = _humanReadableIntegerProvider.NumberToText(number, Language); var encryptedText = _captchaProtectionProvider.Encrypt(randomText); var captchaImage = getCaptchaImageTagBuilder(encryptedText); output.Content.AppendHtml(captchaImage); var cookieToken = $".{captchaDivId}"; var refreshButton = getRefreshButtonTagBuilder(captchaDivId, cookieToken); output.Content.AppendHtml(refreshButton); var hiddenInput = getHiddenInputTagBuilder(encryptedText); output.Content.AppendHtml(hiddenInput); var textInput = getTextInputTagBuilder(); output.Content.AppendHtml($"{string.Format(TextBoxTemplate, textInput.GetString())}"); var validationMessage = getValidationMessageTagBuilder(); output.Content.AppendHtml(validationMessage); var hiddenInputToken = getHiddenInputTokenTagBuilder(_captchaProtectionProvider.Encrypt(cookieToken)); output.Content.AppendHtml(hiddenInputToken); var dataAjaxBeginScript = getOnRefreshButtonDataAjaxBegin(); output.Content.AppendHtml(dataAjaxBeginScript); _captchaStorageProvider.Add(ViewContext.HttpContext, cookieToken, randomText); }
/// <summary> /// Process the taghelper and generate the output. /// </summary> public void Process(TagHelperContext context, TagHelperOutput output) { context.CheckArgumentNull(nameof(context)); output.CheckArgumentNull(nameof(output)); output.TagName = "div"; output.Attributes.Add("class", "captcha"); var captchaDivId = $"captcha{context.UniqueId}{_randomNumberProvider.Next(Min, Max)}"; output.Attributes.Add("id", captchaDivId); output.TagMode = TagMode.StartTagAndEndTag; var number = _randomNumberProvider.Next(Min, Max); var randomText = ""; randomText = OutputType == OutputType.InDigits ? DNTPersianUtils.Core.PersianNumbersUtils.ToPersianNumbers(number) : _humanReadableIntegerProvider.NumberToText(number, Language); var encryptedText = _captchaProtectionProvider.Encrypt(randomText); var captchaImage = GetCaptchaImageTagBuilder(encryptedText); output.Content.AppendHtml(captchaImage); var cookieToken = $".{captchaDivId}"; var refreshButton = GetRefreshButtonTagBuilder(captchaDivId, cookieToken); output.Content.AppendHtml(refreshButton); var hiddenInput = GetHiddenInputTagBuilder(encryptedText); output.Content.AppendHtml(hiddenInput); if (!ImageOnly) { var textInput = GetTextInputTagBuilder(); output.Content.AppendHtml($"{string.Format(TextBoxTemplate, textInput.GetString())}"); } var validationMessage = GetValidationMessageTagBuilder(); output.Content.AppendHtml(validationMessage); var hiddenInputToken = GetHiddenInputTokenTagBuilder(_captchaProtectionProvider.Encrypt(cookieToken)); output.Content.AppendHtml(hiddenInputToken); _captchaStorageProvider.Add(ViewContext.HttpContext, cookieToken, randomText); }
public byte[] GeneratorCaptcha(string name, int captchaLength, bool hasNumber, bool haslower, bool hasUpper, int imageWidth, int imageHeight, float fontSize) { var text = _captchaCodeGenerator.OutputText(haslower, hasUpper, hasNumber, captchaLength); if (_captchaOptions.Enable) { _captchaStorageProvider.Add(_httpContextAccessor.HttpContext, name, text); } byte[] image = null; try { image = _captchaImageProvider.DrawCaptcha(text, fontSize, imageWidth, imageHeight); } catch (Exception ex) { throw ex; } return(image); }
/// <summary> /// Creates DNTCaptcha /// </summary> /// <param name="captchaAttributes">captcha attributes</param> public DNTCaptchaApiResponse CreateDNTCaptcha(DNTCaptchaTagHelperHtmlAttributes captchaAttributes) { var number = _randomNumberProvider.Next(captchaAttributes.Min, captchaAttributes.Max); var randomText = _captchaTextProvider(captchaAttributes.DisplayMode).GetText(number, captchaAttributes.Language); var encryptedText = _captchaProtectionProvider.Encrypt(randomText); var captchaImageUrl = getCaptchaImageUrl(captchaAttributes, encryptedText); var captchaDivId = $"dntCaptcha{Guid.NewGuid():N}{_randomNumberProvider.Next(captchaAttributes.Min, captchaAttributes.Max)}"; var cookieToken = $".{captchaDivId}"; var hiddenInputToken = _captchaProtectionProvider.Encrypt(cookieToken); _captchaStorageProvider.Add(_httpContextAccessor.HttpContext, cookieToken, randomText); return(new DNTCaptchaApiResponse { DntCaptchaImgUrl = captchaImageUrl, DntCaptchaId = captchaDivId, DntCaptchaTextValue = encryptedText, DntCaptchaTokenValue = hiddenInputToken }); }
public IActionResult CreateDNTCaptcha([FromBody] DNTCaptchaTagHelperHtmlAttributes captchaAttributes) { var number = _randomNumberProvider.Next(captchaAttributes.Min, captchaAttributes.Max); var randomText = _humanReadableIntegerProvider.NumberToText(number, captchaAttributes.Language); var encryptedText = _captchaProtectionProvider.Encrypt(randomText); var captchaImageUrl = getCaptchaImageUrl(captchaAttributes, encryptedText); var captchaDivId = $"dntCaptcha{Guid.NewGuid().ToString("N")}{_randomNumberProvider.Next(captchaAttributes.Min, captchaAttributes.Max)}"; var cookieToken = $".{captchaDivId}"; var hiddenInputToken = _captchaProtectionProvider.Encrypt(cookieToken); _captchaStorageProvider.Add(HttpContext, cookieToken, randomText); return(Json(new { dntCaptchaImgUrl = captchaImageUrl, dntCaptchaId = captchaDivId, dntCaptchaTextValue = encryptedText, dntCaptchaTokenValue = hiddenInputToken })); }
/// <summary> /// Process the taghelper and generate the output. /// </summary> public void Process(TagHelperContext context, TagHelperOutput output) { if (context == null) { throw new ArgumentNullException(nameof(context)); } if (output == null) { throw new ArgumentNullException(nameof(output)); } if (ViewContext == null) { throw new InvalidOperationException("`ViewContext` is null."); } setUrlHelper(ViewContext); output.TagName = "div"; output.Attributes.Add("class", _captchaOptions.CaptchaClass); var captchaDivId = Invariant($"{_captchaOptions.CaptchaClass}{context.UniqueId}{_randomNumberProvider.NextNumber(Min, Max)}"); output.Attributes.Add("id", captchaDivId); output.TagMode = TagMode.StartTagAndEndTag; var number = _randomNumberProvider.NextNumber(Min, Max); var randomText = _captchaTextProvider(DisplayMode).GetText(number, Language); var encryptedText = _captchaProtectionProvider.Encrypt(randomText); var captchaImage = getCaptchaImageTagBuilder(ViewContext, encryptedText); output.Content.AppendHtml(captchaImage); var cookieToken = $".{captchaDivId}"; var refreshButton = getRefreshButtonTagBuilder(ViewContext, captchaDivId, cookieToken); output.Content.AppendHtml(refreshButton); var hiddenInput = getHiddenInputTagBuilder(encryptedText); output.Content.AppendHtml(hiddenInput); var textInput = getTextInputTagBuilder(); output.Content.AppendHtml($"{string.Format(CultureInfo.InvariantCulture, TextBoxTemplate, textInput.GetString())}"); var validationMessage = getValidationMessageTagBuilder(ViewContext); output.Content.AppendHtml(validationMessage); var hiddenInputToken = getHiddenInputTokenTagBuilder(_captchaProtectionProvider.Encrypt(cookieToken)); output.Content.AppendHtml(hiddenInputToken); var dataAjaxBeginScript = getOnRefreshButtonDataAjaxBegin(ViewContext); output.Content.AppendHtml(dataAjaxBeginScript); _captchaStorageProvider.Add(ViewContext.HttpContext, cookieToken, randomText); }