1
22
23 package com.liferay.portal.captcha;
24
25 import com.liferay.portal.struts.ActionConstants;
26 import com.liferay.portal.struts.PortletAction;
27 import com.liferay.portal.util.PropsFiles;
28 import com.liferay.portal.util.WebKeys;
29 import com.liferay.portlet.ActionResponseImpl;
30 import com.liferay.util.ExtPropertiesLoader;
31
32 import java.util.Properties;
33
34 import javax.portlet.ActionRequest;
35 import javax.portlet.ActionResponse;
36 import javax.portlet.PortletConfig;
37 import javax.portlet.PortletSession;
38
39 import javax.servlet.http.HttpServletResponse;
40
41 import nl.captcha.servlet.CaptchaProducer;
42 import nl.captcha.util.Helper;
43
44 import org.apache.commons.logging.Log;
45 import org.apache.commons.logging.LogFactory;
46 import org.apache.struts.action.ActionForm;
47 import org.apache.struts.action.ActionMapping;
48
49
55 public class CaptchaPortletAction extends PortletAction {
56
57 public CaptchaPortletAction() {
58 Properties props = ExtPropertiesLoader.getInstance(
59 PropsFiles.CAPTCHA).getProperties();
60
61 _producer = (CaptchaProducer)Helper.ThingFactory.loadImpl(
62 Helper.ThingFactory.CPROD, props);
63 }
64
65 public void processAction(
66 ActionMapping mapping, ActionForm form, PortletConfig config,
67 ActionRequest req, ActionResponse res)
68 throws Exception {
69
70 try {
71 PortletSession ses = req.getPortletSession();
72
73 String captchaText = _producer.createText();
74
75 ses.setAttribute(WebKeys.CAPTCHA_TEXT, captchaText);
76
77 HttpServletResponse httpRes =
78 ((ActionResponseImpl)res).getHttpServletResponse();
79
80 _producer.createImage(httpRes.getOutputStream(), captchaText);
81
82 setForward(req, ActionConstants.COMMON_NULL);
83 }
84 catch (Exception e) {
85 _log.error(e);
86 }
87 }
88
89 protected boolean isCheckMethodOnProcessAction() {
90 return _CHECK_METHOD_ON_PROCESS_ACTION;
91 }
92
93 private static final boolean _CHECK_METHOD_ON_PROCESS_ACTION = false;
94
95 private static Log _log = LogFactory.getLog(CaptchaPortletAction.class);
96
97 private CaptchaProducer _producer;
98
99 }