Last updated
© Bee Content Design, Inc. San Francisco, CA | Part of Growens
Last updated
This feature is available on Beefree SDK and above. If you're on the Core or Essentials plan, for free to try this and other Superpowers-level features.
With Advanced permissions, you can tailor permissions for users of your Beefree application by hiding or locking UI elements related to:
content tiles
content settings
layout settings
row & content actions (clone, delete, drag, save)
basically anything in the editor!
These advanced permissions grant total customization of the experience you want to present. Since you set them in the configuration parameters passed to your Beefree app after you’ve initialized it, they could be different each time the editor starts, and have different setups for different users.
The absolute flexibility of these permissions makes it easy to address specific needs, not achievable with the feature that is available in the Beefree SDK Console.
You can create roles that can act only on a content type. For example, you may want a “copywriter” role for people in an organization that only need to touch copy for editing or translation purposes. To do so, you can:
hide any action that doesn’t involve working on the copy of an email or page.
limit style options for the text itself, by
locking/hiding the side tab;
hiding specific settings in the text toolbar.
You can limit how users upload and manage images and files inside Beefree SDK; for example, you want some users – e.g., external collaborators – to select pre-approved images and files uploaded by “admin” users. You can do so by:
disabling drag-and-drop of images onto the stage;
When customers of your applications are structured businesses, typically with a headquarter and a locally-deployed organization (e.g., Real Estate, Travel, Retail), their administrators can create custom, secondary roles to match any internal policy they might have. In this scenario, admins typically want to reduce disruptions of centrally-deployed templates for external communication, while allowing a specific degree of freedom.
Initialize different versions of the editor
By combining multiple permissions, you can load Beefree SDK with radically different experiences, based on the user that starts it. For example:
a “stripped-down” version of the content builder for lower-level subscribers;
a “simplified” version of the builder for new users of an account.
To set up the advanced permissions, you will need to add the advancedPermissions
object to beeConfig.
Note: Click on the arrow next to the section title in the following section to expand the following sections and reference its corresponding content.
The following table provides the name, data type, description, and an example value for the first-level fields for advancedPermissions
.
You can add all the permissions, some of them, or just one. It is up to your application to create them for all users or a segment, as there are no related server-side settings. You may have a different setup each time the editor starts.
All the permissions use a similar pattern, but the object must match the content schema for the type of content (described in the following section).
Each content type below contains a parameter for “behaviors” and “properties”. The behaviors control what someone can, or can’t, do. The properties parameter is an array of sidebar property widgets (e.g., the width slider), and each widget has its default permissions.
All sidebar property widgets (e.g. width slider, alignment, color, etc.) accept the following basic permissions:
Let’s look at an example of these permissions applied to an image module. The following example will hide the image width property widget and lock the text alignment widget. We’ll cover more of the available settings below.
All contents and rows (e.g. image module, video module, stage row, etc.) accept the following basic behaviors:
The components
object lets you control the behavior and permissions for tools like file pickers and link types within the editor. You can define what actions users can take, such as uploading or deleting files, and specify which link types (e.g., web addresses, emails) are available. This section provides more information on the component object within advanced permissions.
The following code provides an example of the filePicker
object.
The following code provides an example of the linkTypes
object.
The rows
object in Beefree SDK allows you to manage the behavior and appearance of rows in the editor. You can control what users can do with rows, such as adding, deleting, or moving them. Additionally, you can set permissions for properties like background color, stacking behavior on mobile, and visibility settings. Configuring the rows
object ensures users can work with rows in a controlled way, customizing their content without altering crucial layout elements.
Hosted Saved Rows includes advanced permissions to control how rows and categories are accessed and managed. These permissions allow you to define user capabilities, such as editing or deleting rows.
canDeleteHostedRow
: Allows or prevents deleting hosted rows.
canEditHostedRow
: Enables or disables editing of hosted rows.
canManageHostedRowCategory
: Controls whether end users can manage row categories.
canAddHostedRowCategory
: Determines if end users can add new categories.
If both canDeleteHostedRow
and canEditHostedRow
are set to false
, the row menu will be hidden.
If both canManageHostedRowCategory
and canAddHostedRowCategory
are set to false
, the category management menu will be hidden.
The following configuration displays an example of the rows
object inside of advancedPermissions
:
The following code demonstrates how to specify behavior settings for individual row addons. A custom row addon can have its behaviors set independently from the global row settings.
The columns
object in the Beefree SDK lets you control the behavior and permissions for columns within the editor. You can define what users can do with columns, such as adding, selecting, moving, or deleting them. You can also set properties like column spacing and border radius. Configuring the columns
object ensures that users can manage column layouts effectively, while maintaining control over the design and structure of the content.
The tabs
object in the Beefree SDK allows you to manage the visibility and permissions of different tabs within the editor, such as the Rows, Content, and Settings tabs. You can control which tabs users can access and whether they can interact with them. By configuring the tabs
object, you streamline the editor’s interface, ensuring users have access to only the relevant tabs they need for editing while maintaining control over what they can modify.
The settings
object in the Beefree SDK allows you to control various design-related settings within the editor, such as content area width, background colors, and default font styles. You can define which settings users can view or modify, such as enabling or locking background images or link colors. By configuring the settings
object, you ensure that users can customize specific design elements while maintaining overall control over the layout and style of the content.
The content
object in the Beefree SDK controls the behavior and permissions for different types of content blocks, such as text, images, buttons, and more. You can specify what users can do with each content type, such as adding, editing, or selecting them, and set properties like alignment, padding, and visibility. By configuring the content
object, you allow users to interact with content blocks while maintaining control over how each element can be modified within the design.
You should use the Icon object to set advanced permissions when you need granular control over the display and behavior of icon elements. This allows you to lock certain properties, such as the visibility and font weight, ensuring consistency across different devices and user interactions. Additionally, setting these permissions helps in maintaining a cohesive design by managing how icons respond to mobile and AMP environments.
In the given icon code, the structure is defined using objects, properties, and parameters to represent a detailed configuration. The main object, icons
, encompasses two primary properties: behaviors
and properties
, each of which is an object itself. The behaviors
object contains a property canResetMobile
with a boolean parameter set to false
, indicating a specific behavior setting. The properties
object holds various properties such as icons
, fontWeight
, align
, and more, each representing different characteristics and settings for the icons. Each of these properties has parameters assigned to them; for instance, the icons
property has show
and locked
parameters set to true
, determining the visibility and lock status of the icons. This nested structure using objects and properties with defined parameters represent the configuration settings in the code.
The table below outlines the configuration elements, their data types, descriptions, and default values for the behaviors object used in the icon configuration.
The table below outlines the configuration elements, their data types, descriptions, and default values for the properties object used in the icon configuration.
To successfully use this feature, follow these steps:
Identify the AddOn ID: Obtain the unique ID of the addon you wish to assign permissions to.
Define Custom Permissions: Based on the type of addon, assign relevant permissions in your configuration file.
Override Default Permissions: Specify advanced permissions for the addon, ensuring they override the default ones if needed.
Set Specific Behaviors: For row addons, include permissions for individual modules like image blocks inside the row addon.
Apply Global Restrictions: Optionally, set global restrictions for all mixed and row content addons for consistent behavior.
By following these steps, you can effectively manage and customize addon permissions.
The following code provides an example of the different content modules and the addons-id
.
The following code shows an example AddOn with the canViewSidebar
behavior set to true
.
The following code defines specific permissions and behaviors for different modules within a Row AddOn.
The following code shows an example config for how you can display or hide these buttons using advanced permissions.
We’ve put together a few JSON templates of custom roles created with Advanced permissions, so you can get started experimenting with this powerful feature.
limit actions in the file manager (either the built-in one or your ) by disabling actions like upload, import, and create a folder.
Another interesting case for using advanced permissions is the possibility to set a maximum size for uploads, per user. The maximum size set per user must not exceed the custom limitation size set on the . The default limit is 20 Mb unless otherwise stated. When this permission is configured, the system will check if a file exceeds the set size before uploading it; if so, Beefree SDK will return an error message, which you may customize using .
In this section, we will explore how to assign advanced permissions and behaviors for various AddOn types, specifically focusing on how to customize permissions for and . These permissions can override default settings to provide granular control. For instance, an image addon can have specific permissions different from the default image block permissions.
You can choose to display or hide the "Add Condition" and "Edit Condition" buttons when using the with .
The following code snippet provides an example configuration for integrating the AddOn with advanced permission settings for managing access and permissions to Brand Tones:
You can find them in our
uid
string
Unique identifier for the CMS user (mandatory).
'CmsUserName'
container
string
HTML container element ID for embedding Beefree SDK (mandatory).
'bee-plugin-container'
advanced permissions
object
Contains settings for content elements, rows, settings, and tabs configurations.
See configuration object for details.
components
object
Specifies available components like file picker and link types.
{ filePicker: {...}, linkTypes: {...} }
rowAddOn
object
Settings for custom row add-ons, such as custom behaviors.
{ customRowAddonHandle: {...} }
workspace
object
Defines workspace settings, such as stage toggle and history buttons visibility.
{ stageToggle: {...}, historyButtons: true }
locked
boolean
true or false
show
boolean
true or false
canSelect
boolean
true or false
Can select a row or module to edit its properties
canAdd
boolean
true or false
Can drag and drop the content tile or row onto the stage
canViewSidebar
boolean
true or false
Can view the content in the sidebar
canClone
boolean
true or false
Can clone a content or row on the stage
canMove
boolean
true or false
Can drag content to another location on the stage
canDelete
boolean
true or false
Can remove the content or row from the stage
canResetMobile
boolean
true or false
Can reset mobile style for content properties that make use of it
canResetMobile
boolean
Indicates whether icons can reset to default settings on mobile devices.
false
icons
object
show
boolean
Determines if the icons are visible.
true
locked
boolean
Indicates if the icons' visibility setting is locked.
true
fontWeight
object
show
boolean
Determines if the font weight option is visible for icons.
true
locked
boolean
Indicates if the font weight option is locked.
false
align
object
Aligns icons within their container.
NA
fontFamily
object
Sets the font family for icon labels.
NA
fontSize
object
Sets the font size for icon labels.
NA
textColor
object
Sets the text color for icon labels.
NA
iconSize
object
Sets the size of the icons.
NA
itemsSpacing
object
Sets the spacing between multiple icons.
NA
iconSpacing
object
Sets the spacing around individual icons.
NA
padding
object
Sets the padding around icons.
NA
hideOnMobile
object
Hides icons on mobile devices.
NA
hideOnAmp
object
Hides icons on AMP-format pages.
NA
id
object
Sets a unique identifier for icons.
NA
letterSpacing
object
Sets the space between letters in icon labels.
NA