All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.liferay.portal.kernel.test.util.ResourceBlockPermissionTestUtil Maven / Gradle / Ivy

/**
 * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
 *
 * This library is free software; you can redistribute it and/or modify it under
 * the terms of the GNU Lesser General Public License as published by the Free
 * Software Foundation; either version 2.1 of the License, or (at your option)
 * any later version.
 *
 * This library is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
 * details.
 */

package com.liferay.portal.kernel.test.util;

import com.liferay.counter.kernel.service.CounterLocalServiceUtil;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.model.ResourceBlockPermission;
import com.liferay.portal.kernel.model.Role;
import com.liferay.portal.kernel.model.RoleConstants;
import com.liferay.portal.kernel.security.permission.ResourceActionsUtil;
import com.liferay.portal.kernel.service.ResourceBlockLocalServiceUtil;
import com.liferay.portal.kernel.service.ResourceBlockPermissionLocalServiceUtil;
import com.liferay.portal.kernel.service.RoleLocalServiceUtil;
import com.liferay.portal.kernel.util.ArrayUtil;
import com.liferay.portal.kernel.util.ListUtil;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author Alberto Chaparro
 */
public class ResourceBlockPermissionTestUtil {

	public static ResourceBlockPermission addResourceBlockPermission(
			long resourceBlockId, long roleId, long actionIds)
		throws Exception {

		long resourceBlockPermissionId = CounterLocalServiceUtil.increment(
			ResourceBlockPermission.class.getName());

		ResourceBlockPermission resourceBlockPermission =
			ResourceBlockPermissionLocalServiceUtil.
				createResourceBlockPermission(resourceBlockPermissionId);

		resourceBlockPermission.setResourceBlockId(resourceBlockId);
		resourceBlockPermission.setRoleId(roleId);
		resourceBlockPermission.setActionIds(actionIds);

		return ResourceBlockPermissionLocalServiceUtil.
			addResourceBlockPermission(resourceBlockPermission);
	}

	public static void removeResourceBlockPermissions(
			long companyId, long groupId, String portletResource,
			String resourceName, long classPK, String[] roleNames,
			List actionIds)
		throws PortalException {

		List resourceActionsIds =
			ResourceActionsUtil.getResourceActions(
				portletResource, resourceName);

		Map roleIdsToActionIds = new HashMap<>();

		for (String roleName : roleNames) {
			Role role = RoleLocalServiceUtil.getRole(companyId, roleName);

			List roleActionIds = ListUtil.copy(resourceActionsIds);

			if (roleName.equals(RoleConstants.GUEST)) {
				List unsupportedActionIds =
					ResourceActionsUtil.getResourceGuestUnsupportedActions(
						portletResource, resourceName);

				roleActionIds.removeAll(unsupportedActionIds);
			}

			roleActionIds.removeAll(actionIds);

			roleIdsToActionIds.put(
				role.getRoleId(), ArrayUtil.toStringArray(roleActionIds));
		}

		ResourceBlockLocalServiceUtil.setIndividualScopePermissions(
			companyId, groupId, resourceName, classPK, roleIdsToActionIds);
	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy