From 82c72250ed1b9dc09f5c01fc8a0b293a6301fa9e Mon Sep 17 00:00:00 2001
From: Christian Kuhn <lolli@schwarzbu.ch>
Date: Sun, 13 Nov 2022 11:47:45 +0100
Subject: [PATCH] [TASK] Deprecate fe_users & fe_groups TSconfig
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

TSconfig plays an important role in the Backend:
It configures rendering and behavior details in
the Backend and can be set on pages, be_users and
be_groups field, leading to UserTsConfig and
PageTsConfig.

Frontend users and Frontend groups have this
as well on database level, together with an
API in class FrontendUserAuthentication. This
was probably added in the old days to allow a
similar thing as Backend TSconfig for Frontend
users as well. It is however unused by the core
and there seems to be only a very limited number
of extensions that ever used this. Developers
think of "TSconfig" as Backend specific things,
and that's how it should be.

To reduce confusion, the patch deprecates the
TSconfig database fields in fe_groups and fe_users
table along with the PHP API.

Resolves: #99075
Releases: main
Change-Id: I599670bf5e87eee4aa5e1ba353da1e7dc9351702
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/76578
Tested-by: core-ci <typo3@b13.com>
Tested-by: Stefan Bürk <stefan@buerk.tech>
Reviewed-by: Stefan Bürk <stefan@buerk.tech>
Tested-by: Benni Mack <benni@typo3.org>
Reviewed-by: Benni Mack <benni@typo3.org>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
---
 .../Classes/Authentication/GroupResolver.php  |  2 +-
 .../Configuration/DefaultConfiguration.php    |  2 +-
 .../DefaultConfigurationDescription.yaml      |  3 -
 ...ion-99075-Fe_usersAndFe_groupsTSconfig.rst | 67 +++++++++++++++++++
 .../Private/Language/locallang_tca.xlf        |  3 -
 .../Private/Language/locallang_wizards.xlf    | 30 ---------
 .../Persistence/Fixtures/fe_groups.csv        |  8 +--
 .../Configuration/TCA/Overrides/fe_groups.php |  2 +-
 .../Configuration/TCA/Overrides/fe_users.php  |  2 +-
 .../FrontendUserAuthentication.php            | 20 ++++--
 .../frontend/Configuration/TCA/fe_groups.php  |  1 +
 .../frontend/Configuration/TCA/fe_users.php   |  1 +
 .../Tests/Functional/Cache/fixtures.csv       |  6 +-
 .../Tca/FrontendGroupsVisibleFieldsTest.php   |  1 -
 .../Tca/FrontendUsersVisibleFieldsTest.php    |  1 -
 typo3/sysext/frontend/ext_tables.sql          |  2 +
 .../Php/ArrayDimensionMatcher.php             |  5 ++
 .../Php/MethodCallMatcher.php                 |  7 ++
 18 files changed, 109 insertions(+), 54 deletions(-)
 create mode 100644 typo3/sysext/core/Documentation/Changelog/12.1/Deprecation-99075-Fe_usersAndFe_groupsTSconfig.rst

diff --git a/typo3/sysext/core/Classes/Authentication/GroupResolver.php b/typo3/sysext/core/Classes/Authentication/GroupResolver.php
index 5b05bd005541..25eec67923a8 100644
--- a/typo3/sysext/core/Classes/Authentication/GroupResolver.php
+++ b/typo3/sysext/core/Classes/Authentication/GroupResolver.php
@@ -27,7 +27,7 @@ use TYPO3\CMS\Core\Utility\GeneralUtility;
  * A provider for resolving fe_groups / be_groups, including nested sub groups.
  *
  * When fetching subgroups, the current group (parent group) is handed in recursive.
- * Duplicates are suppressed: If a sub group is including in multiple parent groups,
+ * Duplicates are suppressed: If a subgroup is including in multiple parent groups,
  * it will be resolved only once.
  *
  * @internal this is not part of TYPO3 Core API.
diff --git a/typo3/sysext/core/Configuration/DefaultConfiguration.php b/typo3/sysext/core/Configuration/DefaultConfiguration.php
index d835d61f6126..303a62a40cdc 100644
--- a/typo3/sysext/core/Configuration/DefaultConfiguration.php
+++ b/typo3/sysext/core/Configuration/DefaultConfiguration.php
@@ -1364,7 +1364,7 @@ return [
         'cookieDomain' => '',
         'cookieName' => 'fe_typo_user',
         'cookieSameSite' => 'lax',
-        'defaultUserTSconfig' => '',
+        'defaultUserTSconfig' => '', // @deprecated since v12, remove in v13 together with fe_users & fe_groups TSconfig TCA, add to SilentConfigurationUpgradeService
         'defaultTypoScript_constants' => '',
         'defaultTypoScript_constants.' => [], // Lines of TS to include after a static template with the uid = the index in the array (Constants)
         'defaultTypoScript_setup' => '',
diff --git a/typo3/sysext/core/Configuration/DefaultConfigurationDescription.yaml b/typo3/sysext/core/Configuration/DefaultConfigurationDescription.yaml
index c8fdb3fb57f9..21d7c098e29f 100644
--- a/typo3/sysext/core/Configuration/DefaultConfigurationDescription.yaml
+++ b/typo3/sysext/core/Configuration/DefaultConfigurationDescription.yaml
@@ -476,9 +476,6 @@ FE:
             'strict': 'Cookies sent by TYPO3 are only available for the current site, never shared to other third-party packages'
             'none': 'Allow cookies set by TYPO3 to be sent to other sites as well, please note - this only works with HTTPS connections'
           description: 'Indicates that the cookie should send proper information where the cookie can be shared (first-party cookies vs. third-party cookies) in TYPO3 Frontend.'
-        defaultUserTSconfig:
-            type: multiline
-            description: 'Enter lines of default frontend user/group TSconfig.'
         defaultTypoScript_constants:
             type: multiline
             description: 'Enter lines of default TypoScript, constants-field.'
diff --git a/typo3/sysext/core/Documentation/Changelog/12.1/Deprecation-99075-Fe_usersAndFe_groupsTSconfig.rst b/typo3/sysext/core/Documentation/Changelog/12.1/Deprecation-99075-Fe_usersAndFe_groupsTSconfig.rst
new file mode 100644
index 000000000000..ba850d414fb9
--- /dev/null
+++ b/typo3/sysext/core/Documentation/Changelog/12.1/Deprecation-99075-Fe_usersAndFe_groupsTSconfig.rst
@@ -0,0 +1,67 @@
+.. include:: /Includes.rst.txt
+
+.. _deprecation-99075-1668337874:
+
+=====================================================
+Deprecation: #99075 - fe_users and fe_groups TSconfig
+=====================================================
+
+See :issue:`99075`
+
+Description
+===========
+
+The two database fields :sql:`fe_users.TSconfig` and :sql:`fe_groups.TSconfig`
+have been marked as deprecated in TYPO3 v12 and will be removed in v13 along with
+its PHP API.
+
+
+Impact
+======
+
+Backend users and groups provide these `TSconfig` fields as well, they are the base
+of the well-known `UserTsConfig` configuration to specify rendering and behavior of
+TYPO3 Backend related details. This is kept.
+
+Frontend users and groups had these fields as well, they are unused by TYPO3 core
+and only a few extensions ever used them.
+
+The Frontend user and group related database fields, the editing functionality of
+these fields in the Backend (:php:`TCA`), and according PHP API will be removed with
+TYPO3 v13. In detail:
+
+* Database field :sql:`fe_users.TSconfig` will be removed from the table definition
+* Database field :sql:`fe_groups.TSconfig` will be removed from the table definition
+* Rendering and editing setup of field :php:`fe_users.TSconfig` will be removed from :php:`TCA`
+* Rendering and editing setup of field :php:`fe_groups.TSconfig` will be removed from :php:`TCA`
+* Default configuration value :php:`$GLOBALS['TYPO3_CONF_VARS']['FE']['defaultUserTSconfig']`
+  will be removed.
+* PHP method :php:`\TYPO3\CMS\Frontend\Authentication\FrontendUserAuthentication->getUserTSconf()`
+  will be removed.
+
+
+Affected installations
+======================
+
+Instances are relatively unlikely to be affected: Only a few extensions ever used these
+fields to store configuration for Frontend users, most likely extensions related to
+additional authentication mechanisms.
+
+The extension scanner will find extensions that access :php:`$GLOBALS['TYPO3_CONF_VARS']['FE']['defaultUserTSconfig']`
+or call :php:`\TYPO3\CMS\Frontend\Authentication\FrontendUserAuthentication->getUserTSconf()` as "weak" matches.
+
+
+Migration
+=========
+
+Extensions should avoid using the fields to store and access configuration in a
+TypoScript a-like syntax. Affected extensions should add own fields prefixed with an extension
+specific key, or switch to a file based configuration approach if possible.
+
+To simulate the deprecated logic, extensions may extract the deprecated parsing logic from
+class :php:`FrontendUserAuthentication` to an own service, probably my fetch group data
+using :php:`\TYPO3\CMS\Core\Authentication\GroupResolver`, to then merge merge group
+data of the field with Frontend user specific data and parsing it.
+
+
+.. index:: Database, Frontend, LocalConfiguration, PHP-API, TCA, TSConfig, TypoScript, PartiallyScanned, ext:frontend
diff --git a/typo3/sysext/core/Resources/Private/Language/locallang_tca.xlf b/typo3/sysext/core/Resources/Private/Language/locallang_tca.xlf
index eb5aa0e0cbad..c6e4db934892 100644
--- a/typo3/sysext/core/Resources/Private/Language/locallang_tca.xlf
+++ b/typo3/sysext/core/Resources/Private/Language/locallang_tca.xlf
@@ -48,9 +48,6 @@
 			<trans-unit id="TSconfig" resname="TSconfig">
 				<source>TSconfig</source>
 			</trans-unit>
-			<trans-unit id="TSconfig_title" resname="TSconfig_title">
-				<source>TSconfig QuickReference</source>
-			</trans-unit>
 			<trans-unit id="be_users.username" resname="be_users.username">
 				<source>Username</source>
 			</trans-unit>
diff --git a/typo3/sysext/core/Resources/Private/Language/locallang_wizards.xlf b/typo3/sysext/core/Resources/Private/Language/locallang_wizards.xlf
index 80a32d4ad35a..6a9e4d96b26e 100644
--- a/typo3/sysext/core/Resources/Private/Language/locallang_wizards.xlf
+++ b/typo3/sysext/core/Resources/Private/Language/locallang_wizards.xlf
@@ -6,36 +6,6 @@
 			<trans-unit id="rte_undoLastChange" resname="rte_undoLastChange">
 				<source>Undo/Redo last change (%s ago)</source>
 			</trans-unit>
-			<trans-unit id="tsprop" resname="tsprop">
-				<source>TypoScript property lookup</source>
-			</trans-unit>
-			<trans-unit id="tsprop_TSref" resname="tsprop_TSref">
-				<source>TSref online</source>
-			</trans-unit>
-			<trans-unit id="tsprop_tsconfig" resname="tsprop_tsconfig">
-				<source>TSconfig online</source>
-			</trans-unit>
-			<trans-unit id="tsprop_title" resname="tsprop_title">
-				<source>Object title</source>
-			</trans-unit>
-			<trans-unit id="tsprop_prefix" resname="tsprop_prefix">
-				<source>Object prefix</source>
-			</trans-unit>
-			<trans-unit id="tsprop_mixer_indent" resname="tsprop_mixer_indent">
-				<source>Indent +2</source>
-			</trans-unit>
-			<trans-unit id="tsprop_mixer_outdent" resname="tsprop_mixer_outdent">
-				<source>Outdent -2</source>
-			</trans-unit>
-			<trans-unit id="tsprop_mixer_wrap" resname="tsprop_mixer_wrap">
-				<source>Wrap</source>
-			</trans-unit>
-			<trans-unit id="tsprop_mixer_transfer" resname="tsprop_mixer_transfer">
-				<source>Transfer &amp; Close</source>
-			</trans-unit>
-			<trans-unit id="tsprop_addToList" resname="tsprop_addToList">
-				<source>Add to list...</source>
-			</trans-unit>
 			<trans-unit id="table_title" resname="table_title">
 				<source>Table wizard</source>
 			</trans-unit>
diff --git a/typo3/sysext/extbase/Tests/Functional/Persistence/Fixtures/fe_groups.csv b/typo3/sysext/extbase/Tests/Functional/Persistence/Fixtures/fe_groups.csv
index 93c204db6c68..23b14d9473c5 100644
--- a/typo3/sysext/extbase/Tests/Functional/Persistence/Fixtures/fe_groups.csv
+++ b/typo3/sysext/extbase/Tests/Functional/Persistence/Fixtures/fe_groups.csv
@@ -1,4 +1,4 @@
-fe_groups,,,,,,,
-,uid,pid,title,subgroup,TSconfig,description,deleted
-,1,0,"Group A",,,,0
-,2,0,"Group B",,,,0
+fe_groups
+,uid,pid,title,subgroup,description,deleted
+,1,0,"Group A",,,0
+,2,0,"Group B",,,0
diff --git a/typo3/sysext/felogin/Configuration/TCA/Overrides/fe_groups.php b/typo3/sysext/felogin/Configuration/TCA/Overrides/fe_groups.php
index 6a9124672558..9c6d7b5ad08a 100644
--- a/typo3/sysext/felogin/Configuration/TCA/Overrides/fe_groups.php
+++ b/typo3/sysext/felogin/Configuration/TCA/Overrides/fe_groups.php
@@ -18,5 +18,5 @@ call_user_func(static function () {
     ];
 
     \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('fe_groups', $additionalColumns);
-    \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes('fe_groups', 'felogin_redirectPid', '', 'after:TSconfig');
+    \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes('fe_groups', 'felogin_redirectPid', '', 'after:subgroup');
 });
diff --git a/typo3/sysext/felogin/Configuration/TCA/Overrides/fe_users.php b/typo3/sysext/felogin/Configuration/TCA/Overrides/fe_users.php
index 3ee8b7f9f309..1d0aae5b7657 100644
--- a/typo3/sysext/felogin/Configuration/TCA/Overrides/fe_users.php
+++ b/typo3/sysext/felogin/Configuration/TCA/Overrides/fe_users.php
@@ -25,5 +25,5 @@ call_user_func(static function () {
     ];
 
     \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('fe_users', $additionalColumns);
-    \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes('fe_users', 'felogin_redirectPid', '', 'after:TSconfig');
+    \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes('fe_users', 'felogin_redirectPid', '', 'after:usergroup');
 });
diff --git a/typo3/sysext/frontend/Classes/Authentication/FrontendUserAuthentication.php b/typo3/sysext/frontend/Classes/Authentication/FrontendUserAuthentication.php
index cc3bffd4a7a5..237ec11230ec 100644
--- a/typo3/sysext/frontend/Classes/Authentication/FrontendUserAuthentication.php
+++ b/typo3/sysext/frontend/Classes/Authentication/FrontendUserAuthentication.php
@@ -124,11 +124,13 @@ class FrontendUserAuthentication extends AbstractUserAuthentication
     ];
 
     /**
-     * Used to accumulate the TSconfig data of the user
-     * @var array
+     * @deprecated since v12, remove in v13 together with fe_users & fe_groups TSconfig TCA
      */
     protected $TSdataArray = [];
 
+    /**
+     * @deprecated since v12, remove in v13 together with fe_users & fe_groups TSconfig TCA
+     */
     protected array $userTS = [];
 
     /**
@@ -273,7 +275,6 @@ class FrontendUserAuthentication extends AbstractUserAuthentication
      */
     public function fetchGroupData(ServerRequestInterface $request)
     {
-        $this->TSdataArray = [];
         $this->userTS = [];
         $this->userGroups = [];
         $this->groupData = [
@@ -281,7 +282,8 @@ class FrontendUserAuthentication extends AbstractUserAuthentication
             'uid' => [],
             'pid' => [],
         ];
-        // Setting default configuration:
+        // @deprecated since v12, remove next two lines in v13 together with fe_users & fe_groups TSconfig TCA
+        $this->TSdataArray = [];
         $this->TSdataArray[] = $GLOBALS['TYPO3_CONF_VARS']['FE']['defaultUserTSconfig'];
 
         $groupDataArr = [];
@@ -307,9 +309,11 @@ class FrontendUserAuthentication extends AbstractUserAuthentication
             $this->groupData['title'][$groupId] = $groupData['title'] ?? '';
             $this->groupData['uid'][$groupId] = $groupData['uid'] ?? 0;
             $this->groupData['pid'][$groupId] = $groupData['pid'] ?? 0;
-            $this->TSdataArray[] = $groupData['TSconfig'] ?? '';
             $this->userGroups[$groupId] = $groupData;
+            // @deprecated since v12, remove next line in v13 together with fe_users & fe_groups TSconfig TCA
+            $this->TSdataArray[] = $groupData['TSconfig'] ?? '';
         }
+        // @deprecated since v12, remove next line in v13 together with fe_users & fe_groups TSconfig TCA
         $this->TSdataArray[] = $this->user['TSconfig'] ?? '';
         // Sort information
         ksort($this->groupData['title']);
@@ -365,9 +369,15 @@ class FrontendUserAuthentication extends AbstractUserAuthentication
      * The TSconfig will be cached in $this->userTS.
      *
      * @return array TSconfig array for the fe_user
+     * @deprecated since v12, remove in v13 together with fe_users & fe_groups TSconfig TCA
      */
     public function getUserTSconf()
     {
+        trigger_error(
+            __CLASS__ . '->' . __METHOD__ . ' is deprecated since TYPO3 v12 and will be removed with v13: Database field TSconfig'
+            . ' will be removed in tables fe_users and fe_groups. Use an extension specific field for such configuration instead.',
+            E_USER_DEPRECATED
+        );
         if ($this->userTS === [] && !empty($this->TSdataArray)) {
             // Parsing the user TS (or getting from cache)
             $this->TSdataArray = TypoScriptParser::checkIncludeLines_array($this->TSdataArray);
diff --git a/typo3/sysext/frontend/Configuration/TCA/fe_groups.php b/typo3/sysext/frontend/Configuration/TCA/fe_groups.php
index a87802416939..c11d9ed66b98 100644
--- a/typo3/sysext/frontend/Configuration/TCA/fe_groups.php
+++ b/typo3/sysext/frontend/Configuration/TCA/fe_groups.php
@@ -66,6 +66,7 @@ return [
                 'cols' => 48,
             ],
         ],
+        // @deprecated since v12, remove in v13 together with API in FrontendUserAuthentication, also remove in 'types' array below
         'TSconfig' => [
             'exclude' => true,
             'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_tca.xlf:TSconfig',
diff --git a/typo3/sysext/frontend/Configuration/TCA/fe_users.php b/typo3/sysext/frontend/Configuration/TCA/fe_users.php
index dfbc885832bc..cd710dc9661c 100644
--- a/typo3/sysext/frontend/Configuration/TCA/fe_users.php
+++ b/typo3/sysext/frontend/Configuration/TCA/fe_users.php
@@ -238,6 +238,7 @@ return [
                 'cols' => 48,
             ],
         ],
+        // @deprecated since v12, remove in v13 together with API in FrontendUserAuthentication, also remove in 'types' array below
         'TSconfig' => [
             'exclude' => true,
             'label' => 'LLL:EXT:core/Resources/Private/Language/locallang_tca.xlf:TSconfig',
diff --git a/typo3/sysext/frontend/Tests/Functional/Cache/fixtures.csv b/typo3/sysext/frontend/Tests/Functional/Cache/fixtures.csv
index 36111fbcc6f6..d28fcdd2607a 100644
--- a/typo3/sysext/frontend/Tests/Functional/Cache/fixtures.csv
+++ b/typo3/sysext/frontend/Tests/Functional/Cache/fixtures.csv
@@ -20,6 +20,6 @@
 ,14,2,"On page 2",0,4,2
 ,15,2,"On page 2",0,4,4
 ,16,2,"On page 2",0,4,5
-"fe_groups",,,,,,
-,"uid","pid","title","description","subgroup","TSconfig"
-,1,2,"Test fe group on page 2","Test only",,
+"fe_groups"
+,"uid","pid","title","description"
+,1,2,"Test fe group on page 2","Test only"
diff --git a/typo3/sysext/frontend/Tests/Functional/Tca/FrontendGroupsVisibleFieldsTest.php b/typo3/sysext/frontend/Tests/Functional/Tca/FrontendGroupsVisibleFieldsTest.php
index 0a2f9c4c0008..8dbde400ed37 100644
--- a/typo3/sysext/frontend/Tests/Functional/Tca/FrontendGroupsVisibleFieldsTest.php
+++ b/typo3/sysext/frontend/Tests/Functional/Tca/FrontendGroupsVisibleFieldsTest.php
@@ -29,7 +29,6 @@ class FrontendGroupsVisibleFieldsTest extends FunctionalTestCase
         'title',
         'description',
         'subgroup',
-        'TSconfig',
         'tx_extbase_type',
     ];
 
diff --git a/typo3/sysext/frontend/Tests/Functional/Tca/FrontendUsersVisibleFieldsTest.php b/typo3/sysext/frontend/Tests/Functional/Tca/FrontendUsersVisibleFieldsTest.php
index d349e0fb42f4..c5e16a06e5ae 100644
--- a/typo3/sysext/frontend/Tests/Functional/Tca/FrontendUsersVisibleFieldsTest.php
+++ b/typo3/sysext/frontend/Tests/Functional/Tca/FrontendUsersVisibleFieldsTest.php
@@ -44,7 +44,6 @@ class FrontendUsersVisibleFieldsTest extends FunctionalTestCase
         'email',
         'www',
         'image',
-        'TSconfig',
         'starttime',
         'endtime',
         'tx_extbase_type',
diff --git a/typo3/sysext/frontend/ext_tables.sql b/typo3/sysext/frontend/ext_tables.sql
index 6f99a765a2c1..1e4a88d0ccf5 100644
--- a/typo3/sysext/frontend/ext_tables.sql
+++ b/typo3/sysext/frontend/ext_tables.sql
@@ -13,6 +13,7 @@ CREATE TABLE cache_treelist (
 
 #
 # Table structure for table 'fe_groups'
+# @deprecated field TSconfig since v12, remove in v13 together with fe_users & fe_groups TSconfig TCA
 #
 CREATE TABLE fe_groups (
 	title varchar(50) DEFAULT '' NOT NULL,
@@ -38,6 +39,7 @@ CREATE TABLE fe_sessions (
 
 #
 # Table structure for table 'fe_users'
+# @deprecated field TSconfig since v12, remove in v13 together with fe_users & fe_groups TSconfig TCA
 #
 CREATE TABLE fe_users (
 	username varchar(255) DEFAULT '' NOT NULL,
diff --git a/typo3/sysext/install/Configuration/ExtensionScanner/Php/ArrayDimensionMatcher.php b/typo3/sysext/install/Configuration/ExtensionScanner/Php/ArrayDimensionMatcher.php
index 1b52919921f6..ee61615b05f6 100644
--- a/typo3/sysext/install/Configuration/ExtensionScanner/Php/ArrayDimensionMatcher.php
+++ b/typo3/sysext/install/Configuration/ExtensionScanner/Php/ArrayDimensionMatcher.php
@@ -946,4 +946,9 @@ return [
             'Breaking-98490-VariousHooksAndMethodsChangedInDatabaseRecordList.rst',
         ],
     ],
+    '$GLOBALS[\'TYPO3_CONF_VARS\'][\'FE\'][\'defaultUserTSconfig\']' => [
+        'restFiles' => [
+            'Deprecation-99075-Fe_usersAndFe_groupsTSconfig.rst',
+        ],
+    ],
 ];
diff --git a/typo3/sysext/install/Configuration/ExtensionScanner/Php/MethodCallMatcher.php b/typo3/sysext/install/Configuration/ExtensionScanner/Php/MethodCallMatcher.php
index 76e11edd0491..64bedd7a3cbe 100644
--- a/typo3/sysext/install/Configuration/ExtensionScanner/Php/MethodCallMatcher.php
+++ b/typo3/sysext/install/Configuration/ExtensionScanner/Php/MethodCallMatcher.php
@@ -5372,4 +5372,11 @@ return [
             'Deprecation-97536-LinkResultFactory.rst',
         ],
     ],
+    'TYPO3\CMS\Frontend\Authentication\FrontendUserAuthentication->getUserTSconf' => [
+        'numberOfMandatoryArguments' => 0,
+        'maximumNumberOfArguments' => 0,
+        'restFiles' => [
+            'Deprecation-99075-Fe_usersAndFe_groupsTSconfig.rst',
+        ],
+    ],
 ];
-- 
GitLab