@Override public void addPermissionFields(long companyId, Document document) { try { long groupId = GetterUtil.getLong(document.get(Field.GROUP_ID)); String className = document.get(Field.ENTRY_CLASS_NAME); boolean relatedEntry = GetterUtil.getBoolean(document.get(Field.RELATED_ENTRY)); if (relatedEntry) { long classNameId = GetterUtil.getLong(document.get(Field.CLASS_NAME_ID)); className = PortalUtil.getClassName(classNameId); } if (Validator.isNull(className)) { return; } String classPK = document.get(Field.ROOT_ENTRY_CLASS_PK); if (Validator.isNull(classPK)) { classPK = document.get(Field.ENTRY_CLASS_PK); } if (relatedEntry) { classPK = document.get(Field.CLASS_PK); } if (Validator.isNull(classPK)) { return; } Indexer indexer = IndexerRegistryUtil.getIndexer(className); if (!indexer.isPermissionAware()) { return; } doAddPermissionFields_6(companyId, groupId, className, classPK, document); } catch (NoSuchResourceException nsre) { } catch (Exception e) { _log.error(e, e); } }
protected Query doGetPermissionQuery( long companyId, long[] groupIds, long userId, String className, Query query, SearchContext searchContext) throws Exception { Indexer indexer = IndexerRegistryUtil.getIndexer(className); if (!indexer.isPermissionAware()) { return query; } PermissionChecker permissionChecker = PermissionThreadLocal.getPermissionChecker(); AdvancedPermissionChecker advancedPermissionChecker = null; if ((permissionChecker != null) && (permissionChecker instanceof AdvancedPermissionChecker)) { advancedPermissionChecker = (AdvancedPermissionChecker) permissionChecker; } if (advancedPermissionChecker == null) { return query; } PermissionCheckerBag permissionCheckerBag = getPermissionCheckerBag(advancedPermissionChecker, userId); if (permissionCheckerBag == null) { return query; } List<Group> groups = new UniqueList<Group>(); List<Role> roles = new UniqueList<Role>(); List<UserGroupRole> userGroupRoles = new UniqueList<UserGroupRole>(); Map<Long, List<Role>> groupIdsToRoles = new HashMap<Long, List<Role>>(); roles.addAll(permissionCheckerBag.getRoles()); if (ArrayUtil.isEmpty(groupIds)) { groups.addAll(GroupLocalServiceUtil.getUserGroups(userId, true)); groups.addAll(permissionCheckerBag.getGroups()); userGroupRoles = UserGroupRoleLocalServiceUtil.getUserGroupRoles(userId); } else { groups.addAll(permissionCheckerBag.getGroups()); for (long groupId : groupIds) { if (GroupLocalServiceUtil.hasUserGroup(userId, groupId)) { Group group = GroupLocalServiceUtil.getGroup(groupId); groups.add(group); } userGroupRoles.addAll(UserGroupRoleLocalServiceUtil.getUserGroupRoles(userId, groupId)); userGroupRoles.addAll( UserGroupRoleLocalServiceUtil.getUserGroupRolesByUserUserGroupAndGroup( userId, groupId)); } } if (advancedPermissionChecker.isSignedIn()) { roles.add(RoleLocalServiceUtil.getRole(companyId, RoleConstants.GUEST)); } for (Group group : groups) { PermissionCheckerBag userBag = advancedPermissionChecker.getUserBag(userId, group.getGroupId()); List<Role> groupRoles = userBag.getRoles(); groupIdsToRoles.put(group.getGroupId(), groupRoles); roles.addAll(groupRoles); } return doGetPermissionQuery_6( companyId, groupIds, userId, className, query, searchContext, advancedPermissionChecker, groups, roles, userGroupRoles, groupIdsToRoles); }