source: products/quintagroup.captcha.core/trunk/quintagroup/captcha/core/skins/captcha_core/dynamic/captcha_validator.vpy @ 3618

Last change on this file since 3618 was 3618, checked in by kroman0, 11 years ago

Fixed errors on validation

File size: 1.1 KB
Line 
1from quintagroup.captcha.core import ProductMessageFactory as _
2from quintagroup.captcha.core.utils import decrypt, parseKey, \
3    encrypt1, getWord
4from DateTime import DateTime
5from Products.CMFCore.utils import getToolByName
6
7def set_error():
8    message = _(u"Please re-enter validation code.")
9    context.plone_utils.addPortalMessage(message, 'error')
10    state.setError('key', message, 'key_required')
11    return state.set(status="failure")
12
13if state.getStatus()=='failure':
14    return  state
15request = context.REQUEST
16
17test_key = request.get('key', '')
18hashkey = request.get('hashkey', '')
19try:
20    decrypted_key = decrypt(context.captcha_key, hashkey)
21except:
22    return set_error()
23parsed_key = parseKey(decrypted_key)
24
25index = parsed_key['key']
26date = parsed_key['date']
27
28enc = test_key
29try:
30    solution = getWord(int(index))
31except AttributeError:
32    return set_error()
33captcha_tool = getToolByName(context, 'portal_captchas')
34if (enc != solution) or (captcha_tool.has_key(decrypted_key)) \
35    or (DateTime().timeTime() - float(date)>3600):
36    return set_error()
37else:
38    captcha_tool.addExpiredKey(decrypted_key)
39    return state.set(status="success")
Note: See TracBrowser for help on using the repository browser.