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 | 392 | end |
| 393 | 393 | |
| 394 | 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 | 396 | return render_api_error!(_('Captcha text has not been filled'), 403) unless captcha_text |
| 397 | 397 | uri = URI(verify_uri) |
| 398 | 398 | http = Net::HTTP.new(uri.host, uri.port) |
| ... | ... | @@ -404,10 +404,13 @@ require 'grape' |
| 404 | 404 | rescue Exception => e |
| 405 | 405 | return render_api_error!(_('Internal captcha validation error'), 500, nil, "Serpro captcha error: #{e.message}") |
| 406 | 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 | 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 | 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 | 414 | end |
| 412 | 415 | |
| 413 | 416 | end | ... | ... |
lib/noosfero/api/session.rb
| ... | ... | @@ -40,7 +40,7 @@ module Noosfero |
| 40 | 40 | attrs = attributes_for_keys [:email, :login, :password, :password_confirmation] + environment.signup_person_fields |
| 41 | 41 | remote_ip = (request.respond_to?(:remote_ip) && request.remote_ip) || (env && env['REMOTE_ADDR']) |
| 42 | 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 | 44 | return unless test_captcha(remote_ip, params, environment) |
| 45 | 45 | user = User.new(attrs) |
| 46 | 46 | if user.save | ... | ... |