Package org.bigk.invoices.interceptors

Source Code of org.bigk.invoices.interceptors.AuthInterceptor

package org.bigk.invoices.interceptors;

import java.util.Map;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.bigk.invoices.utils.SessionUtils;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.interceptor.Interceptor;

public class AuthInterceptor implements Interceptor {
  /**
   * Logger for this class
   */
  private static final Log logger = LogFactory.getLog(AuthInterceptor.class);

  private static final long serialVersionUID = 0x3bd05f881b3907ddL;

  public AuthInterceptor() {
  }

  public void destroy() {
  }

  public void init() {
  }

  public String intercept(ActionInvocation actionInvocation) throws Exception {
    if (logger.isDebugEnabled()) {
      logger.debug("intercept(ActionInvocation actionInvocation="
          + actionInvocation + ") - start");
    }

    String namespace = actionInvocation.getProxy().getNamespace();
    String actionName = actionInvocation.getProxy().getActionName();
    String method = actionInvocation.getProxy().getMethod();
   
    if (logger.isDebugEnabled()) {
      logger.debug("intercept(ActionInvocation) - namespace=" + namespace + ", actionName=" + actionName + ", method=" + method);
    }
   
    String returnString = null;
   
    // interceptor called before action has been executed
    Map<String, Object> session =
      actionInvocation.getInvocationContext().getSession();

    boolean isAuthenticated = SessionUtils.isLoggedIn(session);
    if (logger.isDebugEnabled()) {
      logger.debug("intercept(ActionInvocation) - wartosc flagi z sesji - isAuthenticated=" + isAuthenticated);
    }

    // if not authenticated, we can allow only access to 'unsecured' namespace
    if (!isAuthenticated) {
      isAuthenticated = StringUtils.equals("/unsecured", namespace);
      if (logger.isDebugEnabled()) {
        logger.debug("intercept(ActionInvocation) - wartosc flagi dla namespace '/unsecured' - isAuthenticated=" + isAuthenticated);
      }
    }

    if (!isAuthenticated) {
      Object action = actionInvocation.getAction();
      if (logger.isDebugEnabled()) {
        logger.debug("intercept(ActionInvocation) - action=" + action);
      }

      if (action != null && (action instanceof ActionSupport)) {
        ActionSupport actionSupport = (ActionSupport) action;
        actionSupport.addActionError(
            actionSupport.getText("errors.sessionExpired"));
      }

      returnString = "login";
    }
   
    if (StringUtils.isEmpty(returnString)) {
      returnString = actionInvocation.invoke();
    }
   
    if (logger.isDebugEnabled()) {
      logger.debug("intercept(ActionInvocation) - end - return value=" + returnString);
    }
    return returnString;
  }
}
TOP

Related Classes of org.bigk.invoices.interceptors.AuthInterceptor

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.