Commit c074e3623902edb2c44af47d0dcabd4a528f1d70
1 parent
c062dee3
Exists in
theme-brasil-digital-from-staging
and in
9 other branches
Serpro Captcha code
Showing
1 changed file
with
18 additions
and
1 deletions
Show diff stats
lib/noosfero/api/helpers.rb
... | ... | @@ -209,6 +209,7 @@ |
209 | 209 | ########################################## |
210 | 210 | |
211 | 211 | def test_captcha(remote_ip, params, _environment = nil) |
212 | + binding.pry | |
212 | 213 | environment ||= _environment |
213 | 214 | d = environment.api_captcha_settings |
214 | 215 | return true unless d[:enabled] == true |
... | ... | @@ -226,8 +227,10 @@ |
226 | 227 | end |
227 | 228 | |
228 | 229 | if d[:provider] == 'serpro' |
229 | - #TODO ADD SERPRO's CAPTCHA | |
230 | + return verify_serpro_captcha(d[:serpro_client_id], params[:txtToken_captcha_serpro_gov_br], params[:captcha_text]) | |
230 | 231 | end |
232 | + | |
233 | + raise ArgumentError, "Environment api_captcha_settings provider not defined" | |
231 | 234 | end |
232 | 235 | |
233 | 236 | def verify_recaptcha_v1(remote_ip, private_key, api_recaptcha_verify_uri, recaptcha_challenge_field, recaptcha_response_field) |
... | ... | @@ -270,6 +273,20 @@ |
270 | 273 | captcha_result["success"] ? true : captcha_result |
271 | 274 | end |
272 | 275 | |
276 | + def verify_serpro_captcha(client_id, token, captcha_text) | |
277 | + verify_uri = 'http://homcaptcha.servicoscorporativos.serpro.gov.br/captchavalidar/1.0.0/validar' | |
278 | + if token == nil || captcha_text == nil | |
279 | + return _('Missing captcha data') | |
280 | + end | |
281 | + uri = URI(verify_uri) | |
282 | + https = Net::HTTP.new(uri.host, uri.port) | |
283 | + request = Net::HTTP::Post.new(uri.path) | |
284 | + verify_string = "#{client_id}&#{token}&#{captcha_text}" | |
285 | + request.body = verify_string | |
286 | + body = https.request(request).body | |
287 | + body == '1' ? true : body | |
288 | + end | |
289 | + | |
273 | 290 | end |
274 | 291 | end |
275 | 292 | end | ... | ... |