/** * 判断用户是不是拥有某权限,如果有返回ture;否则,返回false。 * * @param companyId * @param loginName * @param departmentName * @return 用户拥有某权限,返回ture;否则,返回false。 */ public static boolean userHaveRole(Long companyId, String loginName, String roleName) { // 获得子系统的id集合 BusinessSystemManager businessSystemManager = (BusinessSystemManager) ContextUtils.getBean("businessSystemManager"); List<Long> subSystemIds = businessSystemManager.getSystemIdsByParentCode(ContextUtils.getSystemCode()); if (ContextUtils.getCompanyId() == null) { ThreadParameters parameters = new ThreadParameters(companyId); ParameterUtils.setParameters(parameters); } Set<Role> roles = ApiFactory.getAcsService().getRolesByUser(loginName); for (Role role : roles) { if (role.getName().equals(roleName)) { boolean result = validateRole(role, subSystemIds); if (result) { return result; } else { continue; } } } return false; }
private static boolean validateRole(Role role, List<Long> subSystemIds) { BusinessSystem system = role.getBusinessSystem(); if (system != null) { if (subSystemIds.contains(system.getId())) { // 但前系统是子系统,且角色所在的系统包含在子系统集合中 return true; } else { if (subSystemIds.size() <= 0) { // 当前系统不是子系统 if (ContextUtils.getSystemId().equals(system.getId())) { return true; } } } } return false; }