Package com.iisigroup.cap.operation.step

Source Code of com.iisigroup.cap.operation.step.CapCaptchaOpStep

/*
* CapCaptchaOpStep.java
*
* Copyright (c) 2009-2012 International Integrated System, Inc.
* All Rights Reserved.
*
* Licensed Materials - Property of International Integrated System, Inc.
*
* This software is confidential and proprietary information of
* International Integrated System, Inc. ("Confidential Information").
*/

package com.iisigroup.cap.operation.step;

import java.lang.reflect.Method;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.iisigroup.cap.component.IRequest;
import com.iisigroup.cap.exception.CapMessageException;
import com.iisigroup.cap.handler.FormHandler;
import com.iisigroup.cap.handler.IHandler;
import com.iisigroup.cap.operation.OpStepContext;
import com.iisigroup.cap.security.annotation.Captcha;
import com.iisigroup.cap.security.captcha.CapSecurityCaptcha;
import com.iisigroup.cap.security.captcha.CapSecurityCaptcha.CaptchaStatus;
import com.iisigroup.cap.security.captcha.servlet.CapCaptchaServlet;
import com.iisigroup.cap.utils.CapAppContext;
import com.iisigroup.cap.utils.CapString;

/**
* <pre>
* 動態驗証碼判斷
* </pre>
*
* @since 2014/2/12
* @author RodesChen
* @version <ul>
*          <li>2014/2/12,RodesChen,new
*          </ul>
*/
public class CapCaptchaOpStep extends AbstractCustomizeOpStep {

  protected static Log logger = LogFactory.getLog(CapCaptchaOpStep.class);

  @Override
  public OpStepContext execute(OpStepContext ctx, IRequest params,
      IHandler handler) {
    String methodId = params.get(FormHandler.FORM_ACTION, "");
    if (!CapString.isEmpty(methodId)) {
      for (Method method : handler.getClass().getDeclaredMethods()) {
        if (methodId.equals(method.getName())) {
          if (method.isAnnotationPresent(Captcha.class)) {
            String key = method.getAnnotation(Captcha.class)
                .value();
            CapSecurityCaptcha captcha = CapAppContext
                .getBean(CapCaptchaServlet.DEF_RENDERER);
            if (captcha == null
                || !CaptchaStatus.SUCCESS.equals(captcha
                    .valid(params.get(key)))) {
              // 驗証碼無效請重新輸入
              throw new CapMessageException(
                  CapAppContext.getMessage(captcha.getErrorMessage()),
                  getClass());
            }
          }
        }
      }
    }
    return ctx.setGoToStep(NEXT);
  }
}
TOP

Related Classes of com.iisigroup.cap.operation.step.CapCaptchaOpStep

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.