Whoops I made a mistake in my example:
How about:
#set($captcha = $captchaservice.getCaptcha("defaultImageCaptcha"))
#set($servletId = $captcha.getServletId($request))
$captcha.isAnswerCorrect($answer)

should be:

$captcha.isAnswerCorrect($servletId, $answer)


Caleb


Caleb James DeLisle wrote:
> 
> Asiri Rathnayake wrote:
>> Hi,
>>
>>
>> Not exactly, I think you are thinking of:
>>> $captchaservice.isAnswerCorrect($sessionId, $answer)
>>>
>> Yes. I believe here sessionId is generated by the captcha service for each
>> captcha displayed? Or is it something else?
>>
>> I'm asking because recaptcha generates a unque captchaId for each captcha it
>> generates. Then you need to handover this captchaId + user's answer to the
>> server to verify the answer.
>>
>>
>>> while captchaName is the hint for getting a component from the component
>>> manager. eg:
>>> $captchaservice.isAnswerCorrect("defaultImageCaptcha", $answer)
>>>
>> Ok, I understand now.
>>
>>
>>> The fact that the last call to the struts based jcaptcha component was from
>>> same session
>>> means that the answer provided will work.
>>>
>>> Perhaps it would be best to offer a way to check the answer with the
>>> sessionId
>>> either A:
>>> $captchaservice.isAnswerCorrect("defaultImageCaptcha", $sessionId, $answer)
>>>
>>> or B:
>>> #set($captcha = $captchaservice.getCaptcha("defaultImageCaptcha"))
>>> $captcha.isAnswerCorrect($sessionId,  $answer)
>>>
>> Both sounds good. Although I like the second form.
> 
> Agreed, I am thinking I can create an implementation of Captcha which wraps
> another implementation but never throws any exceptions so it is velocity 
> friendly.
> 
>>
>>> Also an easy way to get the session id using $request in Velocity?
>>> Something like:
>>>
>>> A:
>>> #set($sessionId = $captchaservice.getSessionId($request))
>>>
>>> or B:
>>> #set($sessionId = $captcha.getSessionId($request))
>>>
>> I don't know whether binding velocity APIs to HTTPRequest is a good idea,
>> but it will surely make things easy. We could even have something like:
>>
>> #set($captcha = $captchaservice.getCaptcha("defaultImageCaptcha"))
>> $captcha.isAnswerCorrect($request)
>>
>> So we leave all the parameter resolution to the captcha component itself.
> 
> As easy as it is, I get nervous thinking about hardcoding the name of the
> parameter in the core, suppose we wanted to use it in a case where that
> parameter was taken? Anyway defining hardcoded strings gives me a bad feeling.
> 
> How about:
> #set($captcha = $captchaservice.getCaptcha("defaultImageCaptcha"))
> #set($servletId = $captcha.getServletId($request))
> $captcha.isAnswerCorrect($answer)
> 
> captcha.getServletId can take an HttpServletRequest object and the 
> XWikiRequest
> (in velocity that is $request) will work because XWikiRequest extends and 
> wraps
> the HttpServletRequest object.
> 
> Thanks,
> 
> Caleb
> 
> 
> 
>> Thanks.
>>
>> - Asiri
>> _______________________________________________
>> devs mailing list
>> [email protected]
>> http://lists.xwiki.org/mailman/listinfo/devs
>>
> 
> _______________________________________________
> devs mailing list
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/devs
> 

_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to