业务场景:登录门户Portal之后,打开业务单据的列表界面,如果当前用户没有相应权限或者不符合某项业务要求时,不允许打开列表界面。
可在Web扩展开发平台中,插入后台功能。例如在标准产品界面加载PageOnLoad之前插入Handler,进行业务校验。
抛出WafException异常时,会中断操作。
package com.kingdee.eas.custom.test.good.handler;
import com.kingdee.bos.Context;
import com.kingdee.bos.eventbus.event.view.AbstractOnRequestEvent;
import com.kingdee.bos.eventbus.event.view.IPageOnLoadEventHandler;
import com.kingdee.bos.webframework.context.WafContext;
import com.kingdee.bos.webframework.dynamic.handler.AbstractWebEventHandler;
import com.kingdee.bos.webframework.exception.WafException;
import com.kingdee.eas.base.permission.UserInfo;
import com.kingdee.eas.basedata.org.CompanyOrgUnitInfo;
import com.kingdee.eas.custom.test.util.CoreUtil;
import com.kingdee.eas.util.app.ContextUtil;
/**
* 界面加载功能,进行权限校验
* @author 作者
*
*/
public class PageOnLoadHandler extends AbstractWebEventHandler implements IPageOnLoadEventHandler {
/**
* 权限校验不通过时,不允许打开列表界面
*/
@SuppressWarnings("unchecked")
@Override
public void onLoad(AbstractOnRequestEvent event) {
/*
* 当前组织,要根据查看权限的组织属性,可能是财务组织或者成本中心等
* 权限主键,可以从数据库中查询,或者从权限文件中获取
*/
Context ctx = WafContext.getInstance().getContext();
UserInfo user = ContextUtil.getCurrentUserInfo(ctx); //当前用户
CompanyOrgUnitInfo company = ContextUtil.getCurrentFIUnit(ctx); //当前财务组织
boolean flag = CoreUtil.hasPerm(user, company.getId(), "3598b441-0106-1000-e000-0003c0a8128dPERMITEM");
if(!flag){
throw new WafException("当前用户缺少" + company.getName() + "的某某权限!");
}
}
}