[BUGFIX] BE user switch impossible when in adminOnly mode 11/13011/2
authorPhilipp Kitzberger <philipp@cron-it.de>
Wed, 21 Dec 2011 16:32:11 +0000 (17:32 +0100)
committerBenjamin Mack <benni@typo3.org>
Sat, 9 Feb 2013 05:20:59 +0000 (06:20 +0100)
Enables the switching of BE users when the BE is in adminOnly mode.

Change-Id: I059333da5453687222f24858b739c87f65b5109e
Fixes: #32686
Releases: 4.7, 4.6, 4.5
Reviewed-on: https://review.typo3.org/13011
Reviewed-by: Steffen Ritter
Tested-by: Steffen Ritter
Reviewed-by: Benjamin Mack
Tested-by: Benjamin Mack
t3lib/class.t3lib_beuserauth.php

index e7c614d..f2f49d3 100644 (file)
@@ -393,6 +393,7 @@ class t3lib_beUserAuth extends t3lib_userAuthGroup {
         *      + backend user is a regular user and adminOnly is not defined
         *      + backend user is an admin user
         *      + backend user is used in CLI context and adminOnly is explicitely set to "2"
+        *      + backend user is being controlled by an admin user
         *
         * @return      boolean         Whether a backend user is allowed to access the backend
         */
@@ -406,6 +407,13 @@ class t3lib_beUserAuth extends t3lib_userAuthGroup {
                        // Backend user is allowed if adminOnly is set to 2 (CLI) and a CLI process is running:
                } elseif ($adminOnlyMode == 2 && (TYPO3_REQUESTTYPE & TYPO3_REQUESTTYPE_CLI)) {
                        $isUserAllowedToLogin = TRUE;
+                       // Backend user is allowed if an admin has switched to that user
+               } elseif ($this->user['ses_backuserid']) {
+                       $backendUserId = intval($this->user['ses_backuserid']);
+                       $whereAdmin = 'uid=' . $backendUserId . ' AND admin=1' . t3lib_BEfunc::BEenableFields('be_users');
+                       if ($GLOBALS['TYPO3_DB']->exec_SELECTcountRows('uid', 'be_users', $whereAdmin) > 0) {
+                               $isUserAllowedToLogin = TRUE;
+                       }
                }
 
                return $isUserAllowedToLogin;