[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)
committerXavier Perseguers <xavier@typo3.org>
Tue, 16 Oct 2012 10:19:19 +0000 (12:19 +0200)
Enables the switching of BE users when the BE is in adminOnly mode.

Change-Id: Iebae234f4f297f9b85f5deff9d52c409d4d7e4f0
Fixes: #32686
Releases: 4.7, 4.6, 4.5
Reviewed-on: http://review.typo3.org/13012
Reviewed-by: Steffen Ritter
Tested-by: Steffen Ritter
Reviewed-by: Xavier Perseguers
Tested-by: Xavier Perseguers
t3lib/class.t3lib_beuserauth.php

index 9d5ac3b..3e5df87 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;