/* ================================================================== * Created [2011-11-03 下午11:32:55] by Jon.King * ================================================================== * TSS * ================================================================== * mailTo:jinpujun@hotmail.com * Copyright (c) Jon.King, 2009-2012 * ================================================================== */ package com.jinhe.tss.um.permission.filter; import java.util.List; import com.jinhe.tss.core.exception.BusinessException; import com.jinhe.tss.um.permission.PermissionHelper; /** * 资源移动时候的权限检查: 对自己有删除权限,对移动到的节点有新增权限的可以移动。 * * void move(Long id, Long targetId, ......) * */ public class PermissionFilter4Move implements IPermissionFilter { @Override public void doFilter(Object args[], Object returnValue, PermissionTag tag, PermissionHelper helper) { String application = tag.application(); String resourceType = tag.resourceType(); String[] operation = tag.operation().split(","); String addOperation = operation[0]; String delOperation = operation[1]; Long resourceId = (Long)args[0]; Long parentResourceId = (Long)args[1]; List<Long> permitedResourceIds = helper.getResourceIdsByOperation(application, resourceType, addOperation); if( !permitedResourceIds.contains(parentResourceId) ) { throw new BusinessException("移动失败,您对移动到的【ID为:" + parentResourceId + " 的目标节点】下没有新增资源的权限!"); } permitedResourceIds = helper.getResourceIdsByOperation(application, resourceType, delOperation); if( !permitedResourceIds.contains(resourceId) ) { throw new BusinessException("移动失败,您对移动的【ID为:" + parentResourceId + " 的节点】下没有删除权限!"); } } }