/**
  * @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>';
 }
예제 #2
0
 /**
  * @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;
 }
예제 #4
0
 /**
  * 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;
 }
예제 #6
0
 /**
  * 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');
 }
예제 #8
0
 /**
  * @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');
 }
예제 #10
0
 /**
  * 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();
 }
예제 #11
0
 /**
  * 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');
 }