Search in sources :

Example 1 with Rundata

use of com.qlangtech.tis.runtime.module.action.BasicModule.Rundata in project tis by qlangtech.

the class AppDomainSelectedCheckValve method doIntercept.

@Override
protected String doIntercept(ActionInvocation invocation) throws Exception {
    final ActionProxy proxy = invocation.getProxy();
    if ("control".equals(StringUtils.split(proxy.getNamespace(), "#")[1])) {
        return invocation.invoke();
    }
    final Rundata rundata = BasicModule.getRundataInstance();
    AppDomainInfo domain = CheckAppDomainExistValve.getAppDomain(daoContextGetter.get());
    final String actionTarget = getActionTarget(proxy);
    if (!include_urls.containsKey(actionTarget)) {
        // 不在校验范围之内
        return invocation.invoke();
    }
    final String specialTarget = specialForward.get(actionTarget);
    boolean sensitiveRuntime = true;
    try {
        if (StringUtils.isNotBlank(specialTarget)) {
            sensitiveRuntime = "true".equalsIgnoreCase(StringUtils.substringAfter(specialTarget, ","));
        }
    } catch (Throwable e) {
    }
    if (isInvalidDomain((BasicModule) proxy.getAction(), domain, sensitiveRuntime)) {
        if (StringUtils.isNotBlank(specialTarget)) {
            rundata.forwardTo(StringUtils.substringBefore(specialTarget, ","));
        } else {
            rundata.forwardTo("appdomainhasnotselected");
            return Action.NONE;
        }
        // context.breakPipeline(0);
        return invocation.invoke();
    // return;
    }
    Collection<RunEnvironment> runtime = include_urls.get(actionTarget);
    if (runtime.contains(domain.getRunEnvironment())) {
        // 跳转到该应用是不能被使用的,不支持 该环境的应用
        rundata.forwardTo("environmentunuseable");
    }
    return invocation.invoke();
}
Also used : AppDomainInfo(com.qlangtech.tis.manage.common.AppDomainInfo) ActionProxy(com.opensymphony.xwork2.ActionProxy) RunEnvironment(com.qlangtech.tis.pubhook.common.RunEnvironment) Rundata(com.qlangtech.tis.runtime.module.action.BasicModule.Rundata)

Example 2 with Rundata

use of com.qlangtech.tis.runtime.module.action.BasicModule.Rundata in project tis by qlangtech.

the class AuthorityCheckAdvice method doIntercept.

@Override
protected String doIntercept(ActionInvocation invocation) throws Exception {
    BasicModule action = (BasicModule) invocation.getAction();
    ActionProxy proxy = invocation.getProxy();
    String namespace = proxy.getNamespace();
    final Method method = action.getExecuteMethod();
    Func func = method.getAnnotation(Func.class);
    final Rundata rundata = BasicModule.getRundataInstance();
    // }
    final IUser user = UserUtils.getUser(ServletActionContext.getRequest(), daoContextGetter.get());
    if (!user.hasLogin() && !(action instanceof LoginAction || StringUtils.startsWith(namespace, "/config"))) {
        rundata.redirectTo("/runtime/login.htm");
        return Action.NONE;
    }
    action.setAuthtoken(user);
    if (func == null) {
        log.debug("target:" + proxy.getActionName() + ",method:" + method.getName() + " has not set FUNC");
        return invocation.invoke();
    }
    // }
    return invocation.invoke();
}
Also used : ActionProxy(com.opensymphony.xwork2.ActionProxy) BasicModule(com.qlangtech.tis.runtime.module.action.BasicModule) Rundata(com.qlangtech.tis.runtime.module.action.BasicModule.Rundata) IUser(com.qlangtech.tis.manage.common.IUser) Method(java.lang.reflect.Method) LoginAction(com.qlangtech.tis.runtime.module.action.LoginAction)

Aggregations

ActionProxy (com.opensymphony.xwork2.ActionProxy)2 Rundata (com.qlangtech.tis.runtime.module.action.BasicModule.Rundata)2 AppDomainInfo (com.qlangtech.tis.manage.common.AppDomainInfo)1 IUser (com.qlangtech.tis.manage.common.IUser)1 RunEnvironment (com.qlangtech.tis.pubhook.common.RunEnvironment)1 BasicModule (com.qlangtech.tis.runtime.module.action.BasicModule)1 LoginAction (com.qlangtech.tis.runtime.module.action.LoginAction)1 Method (java.lang.reflect.Method)1