1. 程式人生 > >金蝶EAS,驗證使用者在某個組織下有無特定許可權項

金蝶EAS,驗證使用者在某個組織下有無特定許可權項

業務場景,用於查詢某個使用者在某個組織下有無特定的許可權。

例如,開啟選單時進行許可權校驗、點選功能按鈕時進行許可權校驗等。

package com.kingdee.eas.custom.cnodc.util;

import com.kingdee.bos.Context;
import com.kingdee.bos.util.BOSUuid;
import com.kingdee.eas.base.permission.UserInfo;
import com.kingdee.eas.base.permission.UserOrgPermFactory;
import com.kingdee.bos.metadata.entity.FilterInfo;
import com.kingdee.bos.metadata.entity.FilterItemInfo;

/**
 * 許可權校驗相關
 * @author 作者
 *
 */
public class CoreUtil {
	
	/**
	 * 查詢使用者是否具有某個組織下的特定許可權,用於前端
	 * @param userId 使用者主鍵
	 * @param orgId 業務組織
	 * @param permItemId 許可權主鍵
	 * 
	 */
	public static boolean hasPerm(String userId, String orgId, String permItemId) {
		
		boolean flag = false;
		FilterInfo filter = new FilterInfo();
		filter.getFilterItems().add(new FilterItemInfo("owner.id", userId));
		filter.getFilterItems().add(new FilterItemInfo("org.id", orgId));
		filter.getFilterItems().add(new FilterItemInfo("permItem.id", permItemId));
		try {
			flag = UserOrgPermFactory.getRemoteInstance().exists(filter);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return flag;
		
	}
	
	/**
	 * 查詢使用者是否具有某個組織下的特定許可權,用於前端
	 * @param user 使用者
	 * @param orgId 業務組織
	 * @param permItemId 許可權主鍵
	 * 
	 */
	public static boolean hasPerm(UserInfo user, BOSUuid orgId, String permItemId){
		
		boolean flag = false;
		FilterInfo filter = new FilterInfo();
		filter.getFilterItems().add(new FilterItemInfo("owner.id", user.getId()));
		filter.getFilterItems().add(new FilterItemInfo("org.id", orgId));
		filter.getFilterItems().add(new FilterItemInfo("permItem.id", permItemId));
		try {
			flag = UserOrgPermFactory.getRemoteInstance().exists(filter);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return flag;
		
	}
	
	/**
	 * 查詢使用者是否具有某個組織下的特定許可權,用於後臺
	 * @param ctx 上下文
	 * @param userId 使用者主鍵
	 * @param orgId 業務組織
	 * @param permItemId 許可權主鍵
	 * 
	 */
	public static boolean hasPerm(Context ctx, String userId, String orgId, String permItemId){
		
		boolean flag = false;
		FilterInfo filter = new FilterInfo();
		filter.getFilterItems().add(new FilterItemInfo("owner.id", userId));
		filter.getFilterItems().add(new FilterItemInfo("org.id", orgId));
		filter.getFilterItems().add(new FilterItemInfo("permItem.id", permItemId));
		try {
			flag = UserOrgPermFactory.getLocalInstance(ctx).exists(filter);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return flag;
		
	}
	
	/**
	 * 查詢使用者是否具有某個組織下的特定許可權,用於後臺
	 * @param ctx 上下文
	 * @param user 使用者
	 * @param orgId 業務組織
	 * @param permItemId 許可權主鍵
	 * 
	 */
	public static boolean hasPerm(Context ctx, UserInfo user, BOSUuid orgId, String permItemId) {
		
		boolean flag = false;
		FilterInfo filter = new FilterInfo();
		filter.getFilterItems().add(new FilterItemInfo("owner.id", user.getId()));
		filter.getFilterItems().add(new FilterItemInfo("org.id", orgId));
		filter.getFilterItems().add(new FilterItemInfo("permItem.id", permItemId));
		try {
			flag = UserOrgPermFactory.getLocalInstance(ctx).exists(filter);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return flag;
		
	}

}