亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? aclmanagerimpl.java

?? 尚學堂OA的源碼
?? JAVA
字號:
package com.bjsxt.oa.managers.impl;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import com.bjsxt.oa.managers.AclManager;
import com.bjsxt.oa.model.ACL;
import com.bjsxt.oa.model.Permission;

public class AclManagerImpl extends AbstractManager implements AclManager {

	//授權過程
	public void addOrUpdatePermission(String principalType, int principalSn,
			int resourceSn, int permission, boolean yes) {
		
		//根據主體標識和資源標識查找ACL實例
		ACL acl = findACL(principalType, principalSn, resourceSn);
		
		//如果存在ACL實例,則更新其授權
		if(acl != null){
			acl.setPermission(permission, yes);
			getHibernateTemplate().update(acl);
			return;
		}
		
		//不存在ACL實例,則創建ACL實例
		acl = new ACL();
		acl.setPrincipalType(principalType);
		acl.setPrincipalSn(principalSn);
		acl.setResourceSn(resourceSn);
		acl.setPermission(permission, yes);
		getHibernateTemplate().save(acl);
	}

	//設置用戶某個資源授權的繼承特性
	public void addOrUpdateUserExtends(int userId, int resourceSn, boolean yes) {
		
		//根據主體標識和資源標識查找ACL實例
		ACL acl = findACL(ACL.TYPE_USER, userId, resourceSn); 
		
		//如果存在ACL實例,則更新其授權
		if(acl != null){
			acl.setExtends(yes);
			getHibernateTemplate().update(acl);
			return;
		}
		
		//不存在ACL實例,則創建ACL實例
		acl = new ACL();
		acl.setPrincipalType(ACL.TYPE_USER);
		acl.setPrincipalSn(userId);
		acl.setResourceSn(resourceSn);
		acl.setExtends(yes);
		getHibernateTemplate().save(acl);
	}

	//刪除授權
	public void delPermission(String principalType, int principalSn,
			int resourceSn) {
		getHibernateTemplate().delete(findACL(principalType, principalSn, resourceSn));
	}

	//即時認證
	public boolean hasPermission(int userId, int resourceSn, int permission) {
		
		//查找直接授予用戶的授權
		ACL acl = findACL(ACL.TYPE_USER, userId, resourceSn);
		
		if(acl != null){
			int yesOrNo = acl.getPermission(permission);
			
			//如果是確定的授權
			if(yesOrNo != ACL.ACL_NEUTRAL){
				return yesOrNo == ACL.ACL_YES ? true : false;
			}
		}
		
		//繼續查找用戶的角色授權
		String hql = "select r.id from UsersRoles ur join ur.role r join ur.user u " +
				"where u.id = ? order by ur.orderNo";
		List aclIds = getHibernateTemplate().find(hql, userId);
		
		//依照角色優先級依次查找其授權
		for (Iterator iter = aclIds.iterator(); iter.hasNext();) {
			Integer rid = (Integer) iter.next();
			acl = findACL(ACL.TYPE_ROLE, rid, resourceSn);
			
			//一旦發現授權,即可返回結果
			if(acl != null){
				return acl.getPermission(permission) == ACL.ACL_YES ? true : false;
			}
		}
		
		return false;
	}

	//搜索某個用戶擁有讀取權限的模塊列表(用于登錄,形成導航菜單的時候)
	public List searchModules(int userId) {
		
		//定義臨時變量
		Map temp = new HashMap();
		
		//按優先級從低到高查找用戶擁有的角色
		String hql = "select r.id from UsersRoles ur join ur.role r join ur.user u " +
					"where u.id = ? order by ur.orderNo desc";
		List aclIds = getHibernateTemplate().find(hql, userId);
		
		//依次循環角色
		for (Iterator iter = aclIds.iterator(); iter.hasNext();) {
			Integer rid = (Integer) iter.next();
			
			//根據角色獲得角色擁有的授權列表
			List acls = findRoleACLs(rid);
			
			//把授權放入臨時變量
			for (Iterator iterator = acls.iterator(); iterator.hasNext();) {
				ACL acl = (ACL) iterator.next();
				temp.put(acl.getResourceSn(), acl);
			}
		}
		
		//查找直接授予用戶的授權列表
		List acls = findUserACLs(userId);
		for (Iterator iter = acls.iterator(); iter.hasNext();) {
			ACL acl = (ACL) iter.next();
			temp.put(acl.getResourceSn(), acl);
		}
		
		//現在已獲得用戶擁有的所有授權(包括直接授予用戶自身以及其包含的角色的授權)
		List delResources = new ArrayList();
		Set entries = temp.entrySet();
		for (Iterator iter = entries.iterator(); iter.hasNext();) {
			Map.Entry entry = (Map.Entry) iter.next();
			ACL acl = (ACL)entry.getValue();
			
			//如果沒有讀取權限,則需要在臨時變量中刪除這個授權
			if(acl.getPermission(Permission.READ) == ACL.ACL_NO){
				delResources.add(entry.getKey());
			}
		}
		//在臨時變量中刪除這些需要刪除的授權
		for (Iterator iter = delResources.iterator(); iter.hasNext();) {
			Object key = (Object) iter.next();
			temp.remove(key);
		}
		
		//如果授權列表是空的,則返回0長度的集合
		if(temp.isEmpty()){
			return new ArrayList();
		}
		
		//現在已獲得用戶擁有讀取權限的授權
		String searchModules = "select m from Module m where m.id in (:ids)";
		return getSession().createQuery(searchModules)
				.setParameterList("ids", temp.keySet())
				.list();
	}
	
	//根據主體類型、主體標識和資源標識查找ACL實例
	private ACL findACL(String principalType, int principalSn,
			int resourceSn){
		return (ACL)getSession().createQuery(
				"select acl from ACL acl where acl.principalType = ? " +
				"and acl.principalSn = ? and acl.resourceSn = ?")
				.setParameter(0, principalType)
				.setParameter(1, principalSn)
				.setParameter(2, resourceSn)
				.uniqueResult();
	}
	
	//根據角色查找角色的授權列表,返回列表的元素是:ACL實例
	private List findRoleACLs(int roleId){
		String hql = "select acl from ACL acl where acl.principalType = ? " +
				"and acl.principalSn = ? ";
		return getHibernateTemplate().find(hql,new Object[]{ACL.TYPE_ROLE,roleId}); 
	}
	
	//根據用戶查找直接授予用戶的授權列表(注意:如果直接授予用戶的授權是繼承的話,則不應該包含在這個列表中),返回的列表元素是:ACL實例
	private List findUserACLs(int userId){
		String hql = "select acl from ACL acl where acl.principalType = ? " +
				"and acl.principalSn = ? and acl.aclTriState = 0";		
		return getHibernateTemplate().find(hql, new Object[]{ACL.TYPE_USER,userId});
	}

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
懂色av一区二区三区免费观看 | 欧美一级片在线| 成人av在线观| 成人激情黄色小说| 国产91精品一区二区麻豆亚洲| 久久99久久久欧美国产| 轻轻草成人在线| 美洲天堂一区二卡三卡四卡视频| 青青草原综合久久大伊人精品| 亚洲mv在线观看| 婷婷中文字幕综合| 麻豆高清免费国产一区| 久久er99精品| 不卡视频在线看| 91久久精品日日躁夜夜躁欧美| 欧美午夜精品电影| 88在线观看91蜜桃国自产| 欧美一区二区三区免费观看视频| 日韩欧美亚洲另类制服综合在线| 欧美xfplay| 国产亚洲成av人在线观看导航| 国产日韩欧美激情| 17c精品麻豆一区二区免费| 亚洲综合偷拍欧美一区色| 亚洲mv在线观看| 国产一区二区三区免费看 | 一区二区三区日韩| 亚洲国产日韩精品| 狂野欧美性猛交blacked| 国产成人亚洲综合色影视| 99国产精品久久久| 日韩一区二区三区在线视频| 久久精品男人的天堂| 亚洲男同1069视频| 青青国产91久久久久久| 国产激情视频一区二区三区欧美 | 亚洲国产精品久久不卡毛片| 蜜臀久久久99精品久久久久久| 国产精品69久久久久水密桃| 91在线观看成人| 精品国一区二区三区| 亚洲蜜臀av乱码久久精品蜜桃| 视频一区二区中文字幕| 成人精品国产免费网站| 欧美日韩不卡在线| 欧美国产禁国产网站cc| 午夜精品免费在线观看| 国产91高潮流白浆在线麻豆| 欧美性受xxxx黑人xyx| 国产亚洲婷婷免费| 肉色丝袜一区二区| 色呦呦网站一区| 国产日韩精品一区二区三区在线| 亚洲综合无码一区二区| 国产黄色91视频| 欧美一区二区三区四区在线观看| 亚洲欧洲国产专区| 国产福利精品导航| 欧美不卡激情三级在线观看| 亚洲精品日产精品乱码不卡| 国产精品996| 日韩精品一区二区三区四区| 亚洲二区在线视频| 波多野结衣亚洲一区| 久久一区二区视频| 激情综合色综合久久| 制服丝袜日韩国产| 三级亚洲高清视频| 精品视频一区二区不卡| 亚洲日本欧美天堂| 99免费精品在线| 国产精品久久久久婷婷二区次| 国产一区二区中文字幕| 精品成人一区二区三区| 亚洲国产精品久久人人爱蜜臀 | 亚洲免费观看高清完整| 成人精品gif动图一区| 国产喷白浆一区二区三区| 激情六月婷婷综合| 久久久三级国产网站| 国产九九视频一区二区三区| 久久综合色天天久久综合图片| 毛片av一区二区| 日韩精品一区二区三区视频在线观看 | 欧美日韩中文另类| 五月天久久比比资源色| 欧美三级中文字幕| 亚洲一区二区三区四区在线| 精品视频一区三区九区| 日韩电影在线一区| 欧美一区二区福利视频| 老司机精品视频导航| 国产欧美视频在线观看| 国产精品一级片| 国产精品毛片无遮挡高清| 3d成人h动漫网站入口| 午夜不卡av在线| 日韩你懂的在线观看| 国产成人久久精品77777最新版本| 欧美高清在线精品一区| 91啪亚洲精品| 蜜桃精品视频在线观看| 欧美激情综合网| 欧美日韩亚洲不卡| 九九热在线视频观看这里只有精品| 精品av久久707| 色天天综合色天天久久| 日韩av成人高清| 欧美韩日一区二区三区四区| 91国产成人在线| 久久精品噜噜噜成人88aⅴ| 欧美韩国日本一区| 91精品国产综合久久久久久久| 激情六月婷婷久久| 亚洲一二三四在线观看| 精品国产伦一区二区三区观看方式 | 久久久精品免费免费| 欧美午夜影院一区| 国产一区二区不卡| 亚洲成人自拍一区| 久久女同互慰一区二区三区| 欧美性色黄大片手机版| 国产精品自在在线| 午夜电影久久久| 亚洲天堂网中文字| 精品国产一区二区在线观看| 色婷婷综合久久久久中文一区二区 | 欧美一区欧美二区| 91美女片黄在线观看91美女| 奇米色一区二区三区四区| 亚洲欧洲日产国码二区| 久久久精品黄色| 日韩欧美一区在线| 欧美日韩精品一区二区三区四区 | 日韩精品最新网址| 欧美亚洲禁片免费| 99精品视频免费在线观看| 极品少妇xxxx精品少妇| 日本亚洲欧美天堂免费| 亚洲高清三级视频| 伊人开心综合网| 国产精品久久夜| 国产欧美日韩在线看| 精品粉嫩超白一线天av| 欧美一区二区三区在线观看| 欧美日韩国产123区| 色就色 综合激情| 91捆绑美女网站| 99在线热播精品免费| 欧美日韩国产在线观看| 在线亚洲免费视频| 在线观看视频一区二区 | 色老汉av一区二区三区| av不卡在线观看| 97久久超碰国产精品电影| 成人黄色小视频在线观看| 成人性色生活片| 成人av免费在线| 色综合久久久久久久久| 成人av网站大全| 色婷婷综合久久久中文一区二区| 91麻豆123| 欧美挠脚心视频网站| 日韩一级黄色大片| 久久亚洲精品小早川怜子| 久久网站最新地址| 国产精品久久久久婷婷| 伊人开心综合网| 日av在线不卡| 国产精品2024| 色视频一区二区| 欧美久久久久久久久久| 精品久久免费看| 国产精品免费aⅴ片在线观看| 亚洲日本在线视频观看| 日韩精品亚洲一区二区三区免费| 蜜桃一区二区三区四区| 成人午夜私人影院| 欧洲色大大久久| 精品美女在线观看| 国产精品久久午夜夜伦鲁鲁| 一区二区三区美女| 久久综合综合久久综合| av在线一区二区| 在线成人免费视频| 中文字幕第一区| 亚洲丶国产丶欧美一区二区三区| 蜜桃视频免费观看一区| hitomi一区二区三区精品| 欧美日韩亚洲高清一区二区| 久久久久久久综合色一本| 伊人婷婷欧美激情| 国产裸体歌舞团一区二区| 91久久人澡人人添人人爽欧美| 日韩精品资源二区在线| 亚洲免费av高清| 国产精品综合av一区二区国产馆| 日本高清不卡在线观看| 久久久综合激的五月天| 亚洲国产精品一区二区www|