/** * @param \TYPO3\CMS\Beuser\Domain\Model\BackendUser $backendUser Target backendUser to switch active session to * @param boolean $emulate Return to current session or logout after target session termination? * @return string */ public function render(\TYPO3\CMS\Beuser\Domain\Model\BackendUser $backendUser, $emulate = FALSE) { if ($backendUser->getUid() == $GLOBALS['BE_USER']->user['uid']) { return ''; } $title = \TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate($emulate ? 'switchBackMode' : 'changeToMode', 'beuser'); return '<a href="' . \TYPO3\CMS\Core\Utility\GeneralUtility::linkThisScript(array('SwitchUser' => $backendUser->getUid(), 'switchBackUser' => $emulate)) . '" target="_top" title="' . htmlspecialchars($title) . '">' . \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIcon('actions-system-backend-user-' . ($emulate ? 'emulate' : 'switch')) . '</a>'; }
/** * @param \TYPO3\CMS\Beuser\Domain\Model\BackendUser $backendUser Target backendUser to switch active session to * @param boolean $emulate Return to current session or logout after target session termination? * @return string */ public function render(\TYPO3\CMS\Beuser\Domain\Model\BackendUser $backendUser, $emulate = FALSE) { if ($backendUser->getIsAdministrator()) { return ''; } $title = $GLOBALS['LANG']->getLL('switchUserTo', TRUE) . ' ' . $backendUser->getUserName() . ' ' . $GLOBALS['LANG']->getLL('switchBackMode', TRUE); return '<a href="' . \TYPO3\CMS\Core\Utility\GeneralUtility::linkThisScript(array('SwitchUser' => $backendUser->getUid(), 'switchBackUser' => $emulate)) . '" target="_top" title="' . htmlspecialchars($title) . '">' . \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIcon('actions-system-backend-user-' . ($emulate ? 'emulate' : 'switch')) . '</a>'; }
/** * Find Sessions for specific BackendUser * Delivers Array, not ObjectStorage! * * @param \TYPO3\CMS\Beuser\Domain\Model\BackendUser $backendUser * @return array */ public function findByBackendUser(\TYPO3\CMS\Beuser\Domain\Model\BackendUser $backendUser) { $sessions = array(); $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('ses_id AS id, ses_iplock AS ip, ses_tstamp AS timestamp', 'be_sessions', 'ses_userid = "' . $backendUser->getUid() . '"', '', 'ses_tstamp ASC'); while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) { $sessions[] = array('id' => $row['id'], 'ip' => $row['ip'], 'timestamp' => new \DateTime('@' . $row['timestamp'])); } return $sessions; }
/** * Render link with sprite icon to remove user * * @param \TYPO3\CMS\Beuser\Domain\Model\BackendUser $backendUser Target backendUser to switch active session to * @return string */ public function render(\TYPO3\CMS\Beuser\Domain\Model\BackendUser $backendUser) { if ($backendUser->getUid() == $GLOBALS['BE_USER']->user['uid']) { return ''; } $redirectUrl = \TYPO3\CMS\Core\Utility\GeneralUtility::getIndpEnv('REQUEST_URI'); $parameters = 'cmd[be_users][' . $backendUser->getUid() . '][delete]=1'; $url = $GLOBALS['BACK_PATH'] . 'tce_db.php?&' . $parameters . '&redirect=' . ($redirectUrl == '' ? '\' + T3_THIS_LOCATION + \'' : rawurlencode($redirectUrl)) . '&vC=' . rawurlencode($GLOBALS['BE_USER']->veriCode()) . \TYPO3\CMS\Backend\Utility\BackendUtility::getUrlToken('tceAction') . '&prErr=1&uPT=1'; return '<a href="' . $url . '" onclick="return confirm(' . \TYPO3\CMS\Core\Utility\GeneralUtility::quoteJSvalue(\TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate('confirm', 'beuser', array($backendUser->getUserName()))) . ')">' . \TYPO3\CMS\Backend\Utility\IconUtility::getSpriteIcon('actions-edit-delete') . '</a>'; }
/** * Find Sessions for specific BackendUser * Delivers an Array, not an ObjectStorage! * * @param BackendUser $backendUser * @return array */ public function findByBackendUser(BackendUser $backendUser) { $sessions = array(); $db = $this->getDatabaseConnection(); $res = $db->exec_SELECTquery('ses_id AS id, ses_iplock AS ip, ses_tstamp AS timestamp', 'be_sessions', 'ses_userid = ' . (int) $backendUser->getUid(), '', 'ses_tstamp ASC'); while ($row = $db->sql_fetch_assoc($res)) { $sessions[] = array('id' => $row['id'], 'ip' => $row['ip'], 'timestamp' => $row['timestamp']); } $db->sql_free_result($res); return $sessions; }
/** * Terminate BackendUser session and logout corresponding client * Redirects to onlineAction with message * * @param \TYPO3\CMS\Beuser\Domain\Model\BackendUser $backendUser * @param string $sessionId * @return void */ protected function terminateBackendUserSessionAction(\TYPO3\CMS\Beuser\Domain\Model\BackendUser $backendUser, $sessionId) { $GLOBALS['TYPO3_DB']->exec_DELETEquery('be_sessions', 'ses_userid = "' . (int) $backendUser->getUid() . '" AND ses_id = ' . $GLOBALS['TYPO3_DB']->fullQuoteStr($sessionId, 'be_sessions') . ' LIMIT 1'); if ($GLOBALS['TYPO3_DB']->sql_affected_rows() == 1) { $message = 'Session successfully terminated.'; $this->controllerContext->getFlashMessageQueue()->enqueue($message, '', \TYPO3\CMS\Core\Messaging\FlashMessage::OK); } $this->forward('online'); }
/** * Terminate BackendUser session and logout corresponding client * Redirects to onlineAction with message * * @param \TYPO3\CMS\Beuser\Domain\Model\BackendUser $backendUser * @param string $sessionId * @return void */ protected function terminateBackendUserSessionAction(\TYPO3\CMS\Beuser\Domain\Model\BackendUser $backendUser, $sessionId) { $this->getDatabaseConnection()->exec_DELETEquery('be_sessions', 'ses_userid = "' . (int) $backendUser->getUid() . '" AND ses_id = ' . $this->getDatabaseConnection()->fullQuoteStr($sessionId, 'be_sessions') . ' LIMIT 1'); if ($this->getDatabaseConnection()->sql_affected_rows() == 1) { $this->addFlashMessage(LocalizationUtility::translate('LLL:EXT:beuser/Resources/Private/Language/locallang.xlf:terminateSessionSuccess', 'beuser')); } $this->forward('online'); }
/** * @test */ public function setAdminToFalseSetsAdmin() { $this->fixture->setIsAdministrator(FALSE); $this->assertFalse($this->fixture->getIsAdministrator(), 'Admin status is not false, after setting to false.'); }
/** * Terminate BackendUser session and logout corresponding client * Redirects to onlineAction with message * * @param \TYPO3\CMS\Beuser\Domain\Model\BackendUser $backendUser * @param string $sessionId * @return void */ protected function terminateBackendUserSessionAction(\TYPO3\CMS\Beuser\Domain\Model\BackendUser $backendUser, $sessionId) { $GLOBALS['TYPO3_DB']->exec_DELETEquery('be_sessions', 'ses_userid = "' . $backendUser->getUid() . '"' . ' AND ses_id = "' . $sessionId . '"' . ' LIMIT 1'); if ($GLOBALS['TYPO3_DB']->sql_affected_rows() == 1) { $message = 'Session successfully terminated.'; $this->flashMessageContainer->add($message, '', \TYPO3\CMS\Core\Messaging\FlashMessage::OK); } $this->forward('online'); }
/** * Find Sessions for specific BackendUser * Delivers an Array, not an ObjectStorage! * * @param BackendUser $backendUser * @return array */ public function findByBackendUser(BackendUser $backendUser) { $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('be_sessions'); return $queryBuilder->select('ses_id AS id', 'ses_iplock AS ip', 'ses_tstamp AS timestamp')->from('be_sessions')->where($queryBuilder->expr()->eq('ses_userid', $queryBuilder->createNamedParameter($backendUser->getUid(), \PDO::PARAM_INT)))->orderBy('ses_tstamp', 'ASC')->execute()->fetchAll(); }
/** * Terminate BackendUser session and logout corresponding client * Redirects to onlineAction with message * * @param \TYPO3\CMS\Beuser\Domain\Model\BackendUser $backendUser * @param string $sessionId * @return void */ protected function terminateBackendUserSessionAction(\TYPO3\CMS\Beuser\Domain\Model\BackendUser $backendUser, $sessionId) { $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('be_sessions'); $affectedRows = $queryBuilder->delete('be_sessions')->where($queryBuilder->expr()->eq('ses_userid', $queryBuilder->createNamedParameter($backendUser->getUid(), \PDO::PARAM_INT)), $queryBuilder->expr()->eq('ses_id', $queryBuilder->createNamedParameter($sessionId, \PDO::PARAM_STR)))->execute(); if ($affectedRows === 1) { $this->addFlashMessage(LocalizationUtility::translate('LLL:EXT:beuser/Resources/Private/Language/locallang.xlf:terminateSessionSuccess', 'beuser')); } $this->forward('online'); }