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

com.liferay.portal.model.impl.ResourcePermissionImpl 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.model.impl;

import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.model.ResourceAction;
import com.liferay.portal.kernel.service.ResourceActionLocalServiceUtil;

/**
 * Stores the permissions assigned to roles under permissions version 6. A
 * resource permission gives a role the ability to perform a set of actions on
 * certain resources.
 *
 * 

* The type of resource a permission applies to is specified by the * name attribute. It will either be the numeric ID of a portlet, * or the fully qualified class name of a model (such as a layout or document * library folder). *

* *

* These permissions can apply in one of four scopes: company, group, * group-template, or individual. The scope of a permission determines how * broadly it applies to resources in the portal. Company scope is the broadest, * and grants a user with the role permissions for every resource of the type * within the company. Likewise, group scope gives users with the role * permissions for every resource within the specified group, and individual * scope only applies to a single resource of the type. Group-template scope is * similar to group scope, except that it does not automatically apply to a * specific group. A user must be a member of a group (generally either a site * or an organization), and they must have been given the role within that group * before they are granted its permissions. *

* *

* Note: Lacking permission to perform an action on a resource at one scope does * not necessarily mean that a role does not have permission to perform that * action. For instance, a message boards moderator role will not have * individual scope permissions to edit every post, but it will have edit * permissions at the group or company level, which is sufficient. Every scope * must be checked. *

* *

* The scope of the resource permission also determines the meaning of the * primKey attribute. Its different uses are listed below: *

* *
    *
  • * Company scope - primKey is the primary key of the company *
  • *
  • * Group scope - primKey is the primary key of the group the * permission applies within *
  • *
  • * Group-template scope - primKey is always 0 *
  • *
  • * Individual scope - If the permission applies to a model instance, * primkey will be the primary key of the instance. If the * permission is for a portlet, primKey will contain the primary * key of the layout containing the portlet, followed by "_LAYOUT_" * and the portlet ID. The instance ID will also be present for instanceable * portlets, preceded by "_INSTANCE_". *
  • *
* *

* The actionIds attribute stores the bitwise IDs of all the * actions allowed by this permission. *

* * @author Brian Wing Shun Chan * @see ResourceActionImpl */ public class ResourcePermissionImpl extends ResourcePermissionBaseImpl { @Override public void addResourceAction(String actionId) throws PortalException { ResourceAction resourceAction = ResourceActionLocalServiceUtil.getResourceAction( getName(), actionId); long actionIds = getActionIds() | resourceAction.getBitwiseValue(); setActionIds(actionIds); setViewActionId((actionIds % 2) == 1); } @Override public boolean hasAction(ResourceAction resourceAction) { if ((resourceAction != null) && ((getActionIds() & resourceAction.getBitwiseValue()) != 0)) { return true; } return false; } @Override public boolean hasActionId(String actionId) { return hasAction( ResourceActionLocalServiceUtil.fetchResourceAction( getName(), actionId)); } @Override public void removeResourceAction(String actionId) throws PortalException { ResourceAction resourceAction = ResourceActionLocalServiceUtil.getResourceAction( getName(), actionId); long actionIds = getActionIds() & ~resourceAction.getBitwiseValue(); setActionIds(actionIds); setViewActionId((actionIds % 2) == 1); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy