[BUGFIX] BE user switch impossible when in adminOnly mode
authorPhilipp Kitzberger <philipp@cron-it.de>
Wed, 21 Dec 2011 16:32:11 +0000 (17:32 +0100)
committerSteffen Ritter <info@rs-websystems.de>
Tue, 17 Jan 2012 08:06:57 +0000 (09:06 +0100)
Enables the switching of BE users when the BE is in adminOnly mode.

Change-Id: I5fb6606acbe53885335619e2edfe9448b6988458
Fixes: #32686
Releases: 4.7, 4.6, 4.5
Reviewed-on: http://review.typo3.org/7469
Reviewed-by: Tolleiv Nietsch
Tested-by: Tolleiv Nietsch
Reviewed-by: Georg Ringer
Tested-by: Georg Ringer
Reviewed-by: Steffen Ritter
Tested-by: Steffen Ritter
t3lib/class.t3lib_beuserauth.php

index ca34b7f..777b0a7 100644 (file)
@@ -366,6 +366,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
         */
@@ -379,6 +380,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;