Attention

TYPO3 v6 has reached its end-of-life April 18th, 2017 and is not maintained by the community anymore. Looking for a stable version? Use the version switch on the top left.

There is no further ELTS support. It is strongly recommended updating your project.

Using custom permission options

TYPO3 allows extension developers to register their own permission options, managed automatically by the built-in user group access lists. The options can be grouped in categories. A custom permission option is always a checkbox (on/off).

The scope of such options is the backend only.

Registration

Options are configured in the global variable $TYPO3_CONF_VARS['BE']['customPermOptions']. The syntax is demonstrated in the following example, which adds three options under a given header:

$GLOBALS['TYPO3_CONF_VARS']['BE']['customPermOptions'] = array(
        'tx_examples_cat1' => array(
                'header' => 'LLL:EXT:examples/Resources/Private/Language/locallang.xlf:permissions_header',
                'items' => array(
                        'key1' => array(
                                'LLL:EXT:examples/Resources/Private/Language/locallang.xlf:permissions_option1',
                                'EXT:t3skin/icons/gfx/savedok.gif',
                                'LLL:EXT:examples/Resources/Private/Language/locallang.xlf:permissions_option1_description',
                        ),
                        'key2' => array('LLL:EXT:examples/Resources/Private/Language/locallang.xlf:permissions_option2'),
                        'key3' => array('LLL:EXT:examples/Resources/Private/Language/locallang.xlf:permissions_option3'),
                )
        )
);

The result is that these options appear in the group access lists like this:

Custom permissions

The custom permissions appear in the Access List tab of backend user groups

As you can see it is possible to add both an icon and a description text, that will be displayed as context-sensitive help.

Note

As this is a rather old API the icon is actually pointed to using a reference to an actual file rather than using a sprite class.

Evaluation

To check if a custom permission option is set simply call the API function from the user object:

$BE_USER->check('custom_options', $catKey . ':' . $itemKey);

$catKey is the category in which the option resides. From the example above this would be tx_examples_cat1.

$itemKey is the key of the item in the category you are evaluating. From the example above this could be key1, key2 or key3 depending on which one of them you want to evaluate.

The function returns true if the option is set, otherwise false.

Keys for options

It is good practice to use the extension keys prefixed with tx_ on the first level of the array to avoid potential conflicts with other custom options.

Important

Never pick a key containing any of the characters ",:\|". They are reserved delimiter characters.