Breaking: #93108 - Reworked internal user group fetching for frontend users

See forge#93108

Description

Frontend users now support the same loading mechanism for usergroups as backend users, making it easier to exchange functionality by unifying the code base.

In previous versions, the Authentication Service was used to fetch groups and enable groups, which can be achieved via the AfterGroupsResolved PSR-14 event.

Fetching groups and permissions belongs to authorization, and not authentication (identities), where this removal is conceptually suited outside of authentication services.

The respective methods and properties

  • TYPO3\CMS\Core\Authentication\AuthenticationService->getGroups()

  • TYPO3\CMS\Core\Authentication\AuthenticationService->getSubGroups()

  • TYPO3\CMS\Core\Authentication\AuthenticationService->db_groups

have been removed.

At the same time, much of the PHP 4-based code base from frontend users within FrontendUserAuthentication has been marked as internal or removed completely, allowing this information not to be read or modified from the outside anymore.

  • TYPO3\CMS\Frontend\Authentication\FrontendUserAuthentication->TSdataArray

  • TYPO3\CMS\Frontend\Authentication\FrontendUserAuthentication->userTS

  • TYPO3\CMS\Frontend\Authentication\FrontendUserAuthentication->userTSUpdated

  • TYPO3\CMS\Frontend\Authentication\FrontendUserAuthentication->userData_change

Impact

The authentication services "subtype", "getGroupsFE" and "authGroupsFE" are never executed anymore.

Accessing the properties will trigger a PHP warning.

Affected Installations

TYPO3 installations with custom extensions handling group related authentication services, e.g. LDAP extensions.

Migration

Use the mentioned PSR-14 event to load custom groups from different sources or based on rules, or use a custom PSR-15 middleware to inject custom groups, not based on a specific user, but related to a request.

It is possible to keep extensions compatible with TYPO3 v10 and v11 by keeping the AuthenticationService "getGroupsFE" subtype, and adding the PSR-14 event to an extension.