102 lines
3.9 KiB
Groovy
102 lines
3.9 KiB
Groovy
|
def url = parameters.get('url')
|
||
|
|
||
|
def email = inargs['email']
|
||
|
def token = inargs['captcha_response']?: 'MISSING'
|
||
|
|
||
|
def ip = request.getLoginContext()['connection.HttpHeader.X-Real-IP'] ?: 'unknown'
|
||
|
def userAgent = request.getLoginContext()['connection.HttpHeader.user-agent'] ?: request.getLoginContext()['connection.HttpHeader.User-Agent'] ?: 'unknown'
|
||
|
|
||
|
def payload = "{ \"userIp\": \"${ip}\", \"email\": \"${email}\", \"userAgent\": \"${userAgent}\" }"
|
||
|
|
||
|
LOG.debug('Token: ' + token)
|
||
|
LOG.debug('Payload: ' + payload)
|
||
|
|
||
|
try {
|
||
|
|
||
|
def httpClient = HttpClients.create(parameters)
|
||
|
def httpResponse = Http.post()
|
||
|
.url(url)
|
||
|
.header("Accept", "application/json")
|
||
|
.header("X-FriendlyCAPTCHA-Token", token)
|
||
|
.entity(Http.entity()
|
||
|
.content(payload)
|
||
|
.contentType("application/json")
|
||
|
.build())
|
||
|
.build()
|
||
|
.send(httpClient)
|
||
|
|
||
|
LOG.debug('Response Message: ' + httpResponse.reasonPhrase())
|
||
|
LOG.debug('Response Status Code: ' + httpResponse.code())
|
||
|
LOG.debug('Response: ' + httpResponse.bodyAsString())
|
||
|
|
||
|
if (httpResponse.code() == 200) {
|
||
|
if (httpResponse.bodyAsString().contains('SUCCESSFUL')) {
|
||
|
response.setResult('ok')
|
||
|
return
|
||
|
} else {
|
||
|
LOG.warn("Friendly captcha not successful for '{ \"userIp\": \"${ip}\", \"email\": \"${email}\", \"userAgent\": \"${userAgent}\" }'")
|
||
|
response.setResult('exit.1')
|
||
|
return
|
||
|
}
|
||
|
} else {
|
||
|
LOG.error("Friendly captcha failed with statuscode ${httpResponse.code()} for '{ \"userIp\": \"${ip}\", \"email\": \"${email}\", \"userAgent\": \"${userAgent}\" }'")
|
||
|
response.setResult('error')
|
||
|
response.setError(1, 'Unexpected HTTP reponse')
|
||
|
}
|
||
|
} catch (all) {
|
||
|
// Handle exception and set the transition
|
||
|
LOG.error("Friendly captcha failed with a general error '${all}' for '{ \"userIp\": \"${ip}\", \"email\": \"${email}\", \"userAgent\": \"${userAgent}\" }', service-url: ${url}")
|
||
|
response.setResult('error')
|
||
|
response.setError(1, 'Exception during HTTP call')
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
// TODO/haburger/2024-AUG-20: remove if reCaptcha is not needed anymore
|
||
|
// def payload = '{ "email": "' + inargs['email'] + '", "action": "LOGIN", "userIp": "' + session.get('agov.recovery.ip') + '", "userAgent": "' + session.get('agov.recovery.userAgent') + '"}'
|
||
|
//
|
||
|
// LOG.info('Token: ' + inargs['recaptcha_response'])
|
||
|
// LOG.info('Integration: ' + session['agov.recovery.X-ReCAPTCHA-Integration'])
|
||
|
// LOG.info('Payload: ' + payload)
|
||
|
//
|
||
|
// try {
|
||
|
//
|
||
|
// def httpClient = HttpClients.create(parameters)
|
||
|
// def httpResponse = Http.post()
|
||
|
// .url(url)
|
||
|
// .header("Accept", "application/json")
|
||
|
// .header("X-ReCAPTCHA-Token", inargs['recaptcha_response'])
|
||
|
// .header("X-ReCAPTCHA-Integration", session['agov.recovery.X-ReCAPTCHA-Integration'])
|
||
|
// .entity(Http.entity()
|
||
|
// .content(payload)
|
||
|
// .contentType("application/json")
|
||
|
// // .charSet("utf-8")
|
||
|
// .build())
|
||
|
// .build()
|
||
|
// .send(httpClient)
|
||
|
//
|
||
|
// LOG.info('Response Message: ' + httpResponse.reasonPhrase())
|
||
|
// LOG.info('Response Status Code: ' + httpResponse.code())
|
||
|
// LOG.info('Response: ' + httpResponse.bodyAsString())
|
||
|
//
|
||
|
// if (httpResponse.code() == 200) {
|
||
|
// if (httpResponse.bodyAsString().contains('SUCCESSFUL')) {
|
||
|
// response.setResult('ok')
|
||
|
// return
|
||
|
// } else {
|
||
|
//
|
||
|
// response.setSessionAttribute('agov.recovery.X-ReCAPTCHA-Integration', 'VISIBLE')
|
||
|
// response.setResult('exit.1')
|
||
|
// return
|
||
|
// }
|
||
|
// } else {
|
||
|
// LOG.error('Unexcpected HTTP response code: ' + httpResponse.code())
|
||
|
// response.setResult('error')
|
||
|
// response.setError(1, 'Unexpected HTTP reponse')
|
||
|
// }
|
||
|
// } catch (all) {
|
||
|
// // Handle exception and set the transition
|
||
|
// LOG.error('error: ' + all, all)
|
||
|
// response.setResult('error')
|
||
|
// response.setError(1, 'Exception during HTTP call')
|
||
|
// }
|