/* ==================================================================
* Created [2009-4-27 下午11:32:55] by Jon.King
* ==================================================================
* TSS
* ==================================================================
* mailTo:jinpujun@hotmail.com
* Copyright (c) Jon.King, 2009-2012
* ==================================================================
*/
package com.jinhe.tss.um.dao;
import java.util.List;
import com.jinhe.tss.component.support.persistence.ITreeSupportDao;
import com.jinhe.tss.um.UMConstants;
import com.jinhe.tss.um.entity.Role;
import com.jinhe.tss.um.entity.Strategy;
import com.jinhe.tss.um.permission.filter.PermissionTag;
public interface IRoleDao extends ITreeSupportDao<Role> {
/**
* 如果是组的话删除所有子节点
* 删除其他和 Role 相关的数据信息:roleGroup, roleUser, 转授的。
* @param role
*/
void removeRole(Role role);
/**
* <p>
* 移动角色资源。
* PermissionInterceptor将会拦截本方法。
* 移动改变了父节点,必须改变roleResOpt关系, 来补齐
* </p>
* @param moveItem
* @return
*/
Role moveRole(Role moveItem);
/**
* 根据角色的id获取所在拥有此角色的用户
* 编辑角色的时候用。注:需要过滤掉转授关联起来的RoleUser。
* @param roleId
* @return List
*/
List<?> getUsersByRoleId(Long roleId);
/**
* 根据角色的id获取所在拥有此角色的用户组。
* 编辑角色的时候用。注:需要过滤掉转授关联起来的RoleGroup。
* @param roleId
* @return List
*/
List<?> getGroupsByRoleId(Long roleId);
/**
* <p>
* 获取用户有编辑权限的角色。
* </p>
* @param userId
* @return
*/
@PermissionTag(
operation = UMConstants.ROLE_EDIT_OPERRATION,
resourceType = UMConstants.ROLE_RESOURCE_TYPE_ID
)
List<?> getEditableRoles();
// ===========================================================================================================
// 转授相关的数据库操作
// ===========================================================================================================
/**
* <p>
* 删除实体对象
* </p>
* @param entity
*/
void deleteStrategy(Strategy strategy);
/**
* <p>
* 根据策略的id获取该策略拥有的用户
* </p>
* @param strategyId
* @return List
*/
List<?> getUsersByStrategy(Long strategyId);
/**
* <p>
* 根据策略的id获取该策略拥有的用户组
* </p>
* @param strategyId
* @return List
*/
List<?> getGroupsByStrategy(Long strategyId);
/**
* <p>
* 根据策略id查找该策略被赋予的角色列表
* </p>
* @param strategyId
* @return
*/
List<?> getRolesByStrategy(Long strategyId);
/**
* <p>
* 根据策略id找到其关联的角色用户的信息
* </p>
* @param strategyId
* @return
*/
List<?> getRoleUserByStrategy(Long strategyId);
/**
* <p>
* 根据策略id找到其关联的角色用户组的信息
* </p>
* @param strategyId
* @return
*/
List<?> getRoleGroupByStrategy(Long strategyId);
/**
* <p>
* 返回用户被转授予的角色列表:用户拥有的角色以及用户所在组拥有的角色(供转授使用)<br/>
* 用户只能对自身拥有的角色进行转授,如果是因为转授而获得的角色不能再转授。 <br/>
* 停用的角色虽然可以转授出去,但是使用时会过滤掉的。 <br/>
* </p>
* @param userId
* @return
*/
List<?> getSubAuthorizeableRoles(Long userId);
// ===========================================================================================================
// 用户的授权信息变动时,拦截器需要调用来收回转授权限的方法
// ===========================================================================================================
/**
* 当组不再拥有的某个角色,则收回这个组下用户转授出去的授权信息
* @param groupId
* @param roleId
*/
void deleteGroupSubAuthorizeInfo(Long groupId, Long roleId);
/**
* 当用户不再拥有的某个角色,则收回这个用户转授出去的授权信息
* @param groupId
* @param roleId
*/
void deleteUserSubAuthorizeInfo(Long userId, Long roleId);
}