Author: michiel
Date: 2010-02-09 15:06:51 +0100 (Tue, 09 Feb 2010)
New Revision: 40935
Modified:
mmbase/trunk/applications/resources/src/main/java/org/mmbase/datatypes/CaptchaDataType.java
Log:
make sure the key in session is cleared an reused at the right moments
Modified:
mmbase/trunk/applications/resources/src/main/java/org/mmbase/datatypes/CaptchaDataType.java
===================================================================
---
mmbase/trunk/applications/resources/src/main/java/org/mmbase/datatypes/CaptchaDataType.java
2010-02-09 14:06:13 UTC (rev 40934)
+++
mmbase/trunk/applications/resources/src/main/java/org/mmbase/datatypes/CaptchaDataType.java
2010-02-09 14:06:51 UTC (rev 40935)
@@ -32,6 +32,8 @@
public static final String KEY = CaptchaDataType.class.getName() + ".KEY";
+ public static final String CLEAR = CaptchaDataType.class.getName() +
".CLEAR";
+
public static final String BASE = "temporary_images";
protected CaptchaRestriction captchaRestriction = new
CaptchaRestriction();
@@ -174,6 +176,9 @@
return false;
}
LOG.debug("Found " + KEY + " is " + value + " (user provided
'" + v + "')");
+ if (cloud.getProperty(Node.CLOUD_COMMITNODE_KEY) ==
Integer.valueOf(node.getNumber())) {
+ session.removeAttribute(KEY);
+ }
return mustbe.equalsIgnoreCase(Casting.toString(v));
}
}
@@ -204,20 +209,37 @@
}
@Override
+ protected void setValue(Request request, Node node, String fieldName,
Object value) {
+ super.setValue(request, node, fieldName, value);
+ if (request.isPost()) {
+ HttpServletRequest req = (HttpServletRequest)
request.getCloud().getProperty(Cloud.PROP_REQUEST);
+ HttpSession session = req.getSession(true);
+ session.removeAttribute(CaptchaDataType.KEY);
+ LOG.debug("Set value now cleaning from session");
+ }
+ }
+
+ @Override
public String input(Request request, Node node, Field field, boolean
search) {
if (search) {
return super.input(request, node, field, search);
} else {
HttpServletRequest req = (HttpServletRequest)
request.getCloud().getProperty(Cloud.PROP_REQUEST);
HttpSession session = req.getSession(true);
- CaptchaImage image = new
CaptchaDataType.CaptchaImage(createString(length));
+ String t = (String) session.getAttribute(CaptchaDataType.KEY);
+ if (t == null || request.getCloud().getProperty(CLEAR) !=
null) {
+ t = createString(length);
+ session.setAttribute(CaptchaDataType.KEY, t);
+ LOG.debug("Created key now setting in session");
+
+ }
+ CaptchaImage image = new CaptchaDataType.CaptchaImage(t);
image.swirl = swirl;
image.background = background;
image.font = font;
StringBuilder show = new StringBuilder();
try {
CaptchaDataType.createCaptchaImage(null, image);
- session.setAttribute(CaptchaDataType.KEY, image.text);
show.append("<img src='");
show.append(req.getContextPath());
show.append(image.getPath());
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs