Attention
TYPO3 v11 has reached end-of-life as of October 31th 2024 and is no longer being maintained. Use the version switcher on the top left of this page to select documentation for a supported version of TYPO3.
Need more time before upgrading? You can purchase Extended Long Term Support (ELTS) for TYPO3 v11 here: TYPO3 ELTS.
Backend user object
The backend user of a session is always available in extensions
as the global variable
$GLOBALS. The object is created in
\TYPO3\ middleware for a standard web request
and is an instance of the class
\TYPO3\
(which extends
\TYPO3\).
When working with CLI and commands you might initialize the backend user object with
\TYPO3\.
Checking user access
The
$GLOBALS object is mostly used to check user access right,
but contains other helpful information. This is presented here by a few examples:
Checking access to current backend module
$MCONF is module configuration and the key
$MCONF determines
the access scope for the module. This function call will check if the
$GLOBALS is allowed to access the module and if not, the function
will exit with an error message.
$GLOBALS['BE_USER']->modAccess($MCONF);
Checking access to any backend module
If you know the module key you can check if the module is included in the access list by this function call:
$GLOBALS['BE_USER']->check('modules', 'web_list');
Here access to the module Web > List is checked.
Access to tables and fields?
The same function
->check can actually check all the group-based permissions
inside
$GLOBALS. For instance:
Checking modify access to the table "pages":
$GLOBALS['BE_USER']->check('tables_modify', 'pages');
Checking read access to the table "tt_content":
$GLOBALS['BE_USER']->check('tables_select', 'tt_content');
Checking if a table/field pair is allowed explicitly through the "Allowed Excludefields":
$GLOBALS['BE_USER']->check('non_exclude_fields', $table . ':' . $field);
Is "admin"?
If you want to know if a user is an "admin" user (has complete access), just call this method:
$GLOBALS['BE_USER']->isAdmin();
Read access to a page?
This function call will return true if the user has read access to a
page (represented by its database record,
$page):
$GLOBALS['BE_USER']->doesUserHaveAccess($pageRec, 1);
Changing the "1" for other values will check other permissions:
- use "2" for checking if the user may edit the page
- use "4" for checking if the user may delete the page.
Is a page inside a DB mount?
Access to a page should not be checked only based on page permissions
but also if a page is found within a DB mount for ther user. This can
be checked by this function call (
$id is the page uid):
$GLOBALS['BE_USER']->isInWebMount($id)
Selecting readable pages from database?
If you wish to make a SQL statement which selects pages from the database and you want it to be only pages that the user has read access to, you can have a proper WHERE clause returned by this function call:
$GLOBALS['BE_USER']->getPagePermsClause(1);
Again the number "1" represents the "read" permission; "2" is "edit" and "4" is "delete" permission. The result from the above query could be this string:
((pages.perms_everybody & 1 = 1)OR(pages.perms_userid = 2 AND pages.perms_user & 1 = 1)OR(pages.perms_groupid in (1) AND pages.perms_group & 1 = 1))
Saving module data
This stores the input variable
$compare (an array!) with the key
"tools_beuser/index.php/compare"
$compareFlags = \TYPO3\CMS\Core\Utility\GeneralUtility::_GP('compareFlags');
$GLOBALS['BE_USER']->pushModuleData('tools_beuser/index.php/compare', $compareFlags);
Getting module data
This gets the module data with the key "tools_beuser/index.php/compare" (lasting only for the session) :
$compareFlags = $GLOBALS['BE_USER']->getModuleData('tools_beuser/index.php/compare', 'ses');
Getting TSconfig
This function can return a value from the "user TSconfig" structure of the user. In this case the value for "options.clipboardNumberPads":
$tsconfig = $GLOBALS['BE_USER']->getTSConfig();
$clipboardNumberPads = $tsconfig['options.']['clipboardNumberPads'] ?? '';
Getting the Username
The full "be_users" record of a authenticated user is available in
$GLOBALS->user as an array. This will return the "username":
$GLOBALS['BE_USER']->user['username']
Get User Configuration Value
The internal
->uc array contains options which are managed by the
User Tools > User Settings module (extension "setup"). These values are accessible in
the
$GLOBALS array. This will return the current state of
"Notify me by email, when somebody logs in from my account" for the user:
$GLOBALS['BE_USER']->uc['emailMeAtLogin']