Commit 88a604edea37c642032058ed0e27ab972a156887
1 parent
838caf49
Exists in
theme-brasil-digital-from-staging
and in
9 other branches
Captcha check for validation server timeout
Showing
2 changed files
with
7 additions
and
4 deletions
Show diff stats
lib/noosfero/api/helpers.rb
@@ -392,7 +392,7 @@ require 'grape' | @@ -392,7 +392,7 @@ require 'grape' | ||
392 | end | 392 | end |
393 | 393 | ||
394 | def verify_serpro_captcha(client_id, token, captcha_text, verify_uri) | 394 | def verify_serpro_captcha(client_id, token, captcha_text, verify_uri) |
395 | - return render_api_error!(_("Error processing token validation"), 500, nil, _("Missing Serpro's Captcha token")) unless token | 395 | + return render_api_error!(_("Error processing token validation"), 500, nil, "Missing Serpro's Captcha token") unless token |
396 | return render_api_error!(_('Captcha text has not been filled'), 403) unless captcha_text | 396 | return render_api_error!(_('Captcha text has not been filled'), 403) unless captcha_text |
397 | uri = URI(verify_uri) | 397 | uri = URI(verify_uri) |
398 | http = Net::HTTP.new(uri.host, uri.port) | 398 | http = Net::HTTP.new(uri.host, uri.port) |
@@ -404,10 +404,13 @@ require 'grape' | @@ -404,10 +404,13 @@ require 'grape' | ||
404 | rescue Exception => e | 404 | rescue Exception => e |
405 | return render_api_error!(_('Internal captcha validation error'), 500, nil, "Serpro captcha error: #{e.message}") | 405 | return render_api_error!(_('Internal captcha validation error'), 500, nil, "Serpro captcha error: #{e.message}") |
406 | end | 406 | end |
407 | + return true if body == '1' | ||
408 | + return render_api_error!(_("Internal captcha validation error"), 500, body, "Unable to reach Serpro's Captcha validation service") if body == "Activity timed out" | ||
407 | return render_api_error!(_("Wrong captcha text, please try again"), 403) if body == 0 | 409 | return render_api_error!(_("Wrong captcha text, please try again"), 403) if body == 0 |
408 | - return render_api_error!(_("Token not found"), 500) if body == 2 | 410 | + return render_api_error!(_("Serpro's captcha token not found"), 500) if body == 2 |
409 | return render_api_error!(_("No data sent to validation server or other serious problem"), 500) if body == -1 | 411 | return render_api_error!(_("No data sent to validation server or other serious problem"), 500) if body == -1 |
410 | - body == '1' ? true : body | 412 | + #Catches all errors at the end |
413 | + return render_api_error!(_("Internal captcha validation error"), 500, nil, "Error validating Serpro's captcha #{body}") | ||
411 | end | 414 | end |
412 | 415 | ||
413 | end | 416 | end |
lib/noosfero/api/session.rb
@@ -40,7 +40,7 @@ module Noosfero | @@ -40,7 +40,7 @@ module Noosfero | ||
40 | attrs = attributes_for_keys [:email, :login, :password, :password_confirmation] + environment.signup_person_fields | 40 | attrs = attributes_for_keys [:email, :login, :password, :password_confirmation] + environment.signup_person_fields |
41 | remote_ip = (request.respond_to?(:remote_ip) && request.remote_ip) || (env && env['REMOTE_ADDR']) | 41 | remote_ip = (request.respond_to?(:remote_ip) && request.remote_ip) || (env && env['REMOTE_ADDR']) |
42 | # test_captcha will render_api_error! and exit in case of some problem | 42 | # test_captcha will render_api_error! and exit in case of some problem |
43 | - # this return is only improve the clarity of the execution path | 43 | + # this return is only improve the clarity of the execution path |
44 | return unless test_captcha(remote_ip, params, environment) | 44 | return unless test_captcha(remote_ip, params, environment) |
45 | user = User.new(attrs) | 45 | user = User.new(attrs) |
46 | if user.save | 46 | if user.save |