AuthUtil.java 4.3 KB
package com.cy.report.utils;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.cy.report.action.InitListener;
import com.cy.report.pojo.AppInfo;
import com.cy.report.pojo.User;
import com.cy.report.service.ServiceFactory;

public class AuthUtil {
	
	
	public static boolean isManageReport(String metric) {
		if (InitListener.manage_report.contains(metric)) {
			return true;
		}
		return false;
	}
	/**
	 * 母账号查看的appkey,如果不是自己创建的,无权限.
	 * 
	 * @param appkey
	 * @param user
	 * @return
	 */
	public static boolean verificationAuth(String appkey, User user) {
		int dev_id = user.getId();
		List<AppInfo> appList = ServiceFactory.getAppInfoService().getAppInfoByAppKey(appkey);
		for (AppInfo info : appList) {
			if (info.getDev_id().equals(String.valueOf(dev_id))) {
				return true;
			}
		}
//		AppInfo app = ServiceFactory.getAppInfoService().getAppInfoByAppKey(
//				appkey);
//		if (app.getDev_id().equals(String.valueOf(dev_id))) {
//			return true;
//		}
		return false;
	}
	public static boolean verificationAuth(String appkey, int dev_id) {
//		AppInfo app = ServiceFactory.getAppInfoService().getAppInfoByAppKey(
//				appkey);
//		if (app.getDev_id().equals(String.valueOf(dev_id))) {
//			return true;
//		}
		List<AppInfo> appList = ServiceFactory.getAppInfoService().getAppInfoByAppKey(appkey);
		for (AppInfo info : appList) {
			if (info.getDev_id().equals(String.valueOf(dev_id))) {
				return true;
			}
		}
		return false;
	}
	/**
	 * 子账户用户权限列表中如果不包含这个游戏key,无权限.
	 * @param appkey
	 * @param user
	 * @return
	 */
	public static boolean verificationAuthSubAccount(String appkey, User user) {
		Map<String, String> map = user.getAuthmap();
		if (map == null) {
			map = new HashMap<String, String>();
		}
		boolean auth = true;
		if (map.containsKey(appkey)) {
			auth = true;
		} else {
			auth = false;
		}
		return auth;
	}

	/**
	 * 检测该子账户用户是否具有该游戏、改功能的权限.功能包含报表和管理.
	 * 
	 * @param appkey
	 * @param reportname
	 * @param user
	 * @return
	 */
	public static boolean verificationAuth(String appkey, String reportname,
			User user) {
		Map<String, String> map = user.getAuthmap();
		if (map == null) {
			map = new HashMap<String, String>();
		}
		boolean auth = true;
		
		if (map.containsKey(appkey)) {
			String channel_report = map.get(appkey);
			String[] rs = reportname.split(",");
			for (String r : rs) {

				String check = r +"_r"+ ",";
				if (channel_report.indexOf(check) == -1) {
					auth = false;
					break;
				}
			}
		} else {
			auth = false;
		}
		if(reportname.equals("getAppDownloadUrl") || reportname.equals("logtool")) {
			auth = true;
		}
		return auth;
	}

	/**
	 * 检测该子账户用户是否具有该游戏、改渠道、改功能报表的权限.
	 * 
	 * @param appkey
	 * @param channelname
	 * @param reportname
	 * @param user
	 * @return
	 */
	public static boolean verificationAuth(String appkey, String channelname,
			String reportname, User user) {
		Map<String, String> map = user.getAuthmap();
		if (map == null) {
			map = new HashMap<String, String>();
		}
		boolean auth = true;
		if (map.containsKey(appkey)) {
			String channel_report = map.get(appkey);
			if (channel_report.indexOf("reyun_allchannel_-3_c,") == -1) {
				
				if (!channelname.equals("")) {
					String[] cns = channelname.split(",");
					for (String cn : cns) {
						
						String check = cn + "_c" + ",";
						if (channel_report.indexOf(check) == -1) {
							auth = false;
							break;
						}
					}
				}
			}
			String[] rs = reportname.split(",");
			for (String r : rs) {

				String check = r + "_r" + ",";
				if (channel_report.indexOf(check) == -1) {
					auth = false;
					break;
				}
			}
		} else {
			auth = false;
		}
		return auth;
	}
	/**
	 * 判断用户是否是母账户.
	 * @param user
	 * @return
	 */
	public static boolean isOriginalUser(User user) {
		if (!StringUtil.isEmpty(user.getIsoriginaluser()) && user.getIsoriginaluser().equals("1")) {
			return true;
		}
		return false;
	}
	/**
	 * 判断用户是否是管理员账户.
	 * @param user
	 * @return
	 */
	public static boolean isManagerUser(User user) {
		if (!StringUtil.isEmpty(user.getIsmanager()) && user.getIsmanager().equals("1")) {
			return true;
		}
		return false;
	}
}