protected void initPermissions(
      long companyId, long powerUserRoleId, String rootPortletId, long userPersonalSiteGroupId)
      throws PortalException {

    String primaryKey = String.valueOf(userPersonalSiteGroupId);

    if (_resourcePermissionLocalService.getResourcePermissionsCount(
            companyId, rootPortletId, ResourceConstants.SCOPE_GROUP, primaryKey)
        == 0) {

      List<String> portletActionIds = ResourceActionsUtil.getPortletResourceActions(rootPortletId);

      _resourcePermissionLocalService.setResourcePermissions(
          companyId,
          rootPortletId,
          ResourceConstants.SCOPE_GROUP,
          String.valueOf(userPersonalSiteGroupId),
          powerUserRoleId,
          portletActionIds.toArray(new String[0]));
    }

    String modelName = ResourceActionsUtil.getPortletRootModelResource(rootPortletId);

    if (Validator.isBlank(modelName)) {
      return;
    }

    if (_resourcePermissionLocalService.getResourcePermissionsCount(
            companyId, modelName, ResourceConstants.SCOPE_GROUP, primaryKey)
        == 0) {

      List<String> modelActionIds = ResourceActionsUtil.getModelResourceActions(modelName);

      _resourcePermissionLocalService.setResourcePermissions(
          companyId,
          modelName,
          ResourceConstants.SCOPE_GROUP,
          String.valueOf(userPersonalSiteGroupId),
          powerUserRoleId,
          modelActionIds.toArray(new String[0]));
    }
  }
  protected void readResourceActions(ClassLoader classLoader) {
    Configuration configuration = null;

    try {
      configuration = ConfigurationFactoryUtil.getConfiguration(classLoader, "portlet");
    } catch (Exception e) {
      if (_log.isDebugEnabled()) {
        _log.debug("Unable to read portlet.properties");
      }

      return;
    }

    String[] resourceActionsConfigs =
        StringUtil.split(configuration.get(PropsKeys.RESOURCE_ACTIONS_CONFIGS));

    for (String resourceActionsConfig : resourceActionsConfigs) {
      try {
        ResourceActionsUtil.read(null, classLoader, resourceActionsConfig);
      } catch (Exception e) {
        _log.error("Unable to read resource actions config in " + resourceActionsConfig, e);
      }
    }

    String[] portletIds = StringUtil.split(configuration.get("service.configurator.portlet.ids"));

    for (String portletId : portletIds) {
      List<String> modelNames = ResourceActionsUtil.getPortletModelResources(portletId);

      for (String modelName : modelNames) {
        List<String> modelActions = ResourceActionsUtil.getModelResourceActions(modelName);

        ResourceActionLocalServiceUtil.checkResourceActions(modelName, modelActions);
      }
    }
  }
  public static String getTemplateModelResourceName(long resourceClassNameId)
      throws PortalException {

    ServiceWrapper<DDMTemplatePermissionSupport> templatePermissionSupportServiceWrapper =
        _ddmPermissionSupportTracker.getDDMTemplatePermissionSupportServiceWrapper(
            resourceClassNameId);

    Map<String, Object> properties = templatePermissionSupportServiceWrapper.getProperties();

    boolean defaultModelResourceName =
        MapUtil.getBoolean(properties, "default.model.resource.name");

    if (defaultModelResourceName) {
      return DDMTemplate.class.getName();
    }

    StringBundler sb = new StringBundler(3);

    sb.append(PortalUtil.getClassName(resourceClassNameId));
    sb.append(ResourceActionsUtil.getCompositeModelNameSeparator());
    sb.append(DDMTemplate.class.getName());

    return sb.toString();
  }
Exemple #4
0
  public static void propagatePermissions(
      long companyId, long groupId, long parentMessageId, ServiceContext serviceContext)
      throws PortalException {

    MBMessage parentMessage = MBMessageLocalServiceUtil.getMBMessage(parentMessageId);

    Role defaultGroupRole = RoleLocalServiceUtil.getDefaultGroupRole(groupId);
    Role guestRole = RoleLocalServiceUtil.getRole(companyId, RoleConstants.GUEST);

    List<String> actionIds = ResourceActionsUtil.getModelResourceActions(MBMessage.class.getName());

    Map<Long, Set<String>> roleIdsToActionIds =
        ResourcePermissionLocalServiceUtil.getAvailableResourcePermissionActionIds(
            companyId,
            MBMessage.class.getName(),
            ResourceConstants.SCOPE_INDIVIDUAL,
            String.valueOf(parentMessage.getMessageId()),
            actionIds);

    Set<String> defaultGroupActionIds = roleIdsToActionIds.get(defaultGroupRole.getRoleId());

    if (defaultGroupActionIds == null) {
      serviceContext.setGroupPermissions(new String[0]);
    } else {
      serviceContext.setGroupPermissions(
          defaultGroupActionIds.toArray(new String[defaultGroupActionIds.size()]));
    }

    Set<String> guestActionIds = roleIdsToActionIds.get(guestRole.getRoleId());

    if (guestActionIds == null) {
      serviceContext.setGuestPermissions(new String[0]);
    } else {
      serviceContext.setGuestPermissions(guestActionIds.toArray(new String[guestActionIds.size()]));
    }
  }