Advertisement
shr3k

TYPO3 eID RSA login with ExtJS JSON

Jun 5th, 2012
381
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.14 KB | None | 0 0
  1. <?php
  2. if (!defined('PATH_typo3conf'))
  3.   die('Could not access this script directly!');
  4.  
  5. class MyLoginClass {
  6.   public function main() {
  7.     $extKey      = 'myextkey';
  8.     $this->debug = t3lib_extMgm::isLoaded('devlog');
  9.     // force debug off
  10.     $this->debug = FALSE;
  11.    
  12.     $feUserObject              = tslib_eidtools::initFeUser();
  13.     $feUserObject->writeDevLog = TRUE;
  14.    
  15.     $logintype = t3lib_div::_GP('logintype');
  16.     $backend   = tx_rsaauth_backendfactory::getBackend();
  17.    
  18.     if ($logintype == 'login') {
  19.       if ($this->debug) {
  20.         t3lib_div::devLog('SESSION after login: ' . json_encode($_SESSION), $extKey, 0);
  21.       }
  22.       if ($feUserObject->user) {
  23.         $feUserObject->fetchGroupData();
  24.        
  25.         $uid         = $feUserObject->user['uid'];
  26.         $groupsCount = count($feUserObject->groupData['uid']);
  27.         $groups      = $feUserObject->groupData['title'];
  28.         return json_encode(array(
  29.           'success' => TRUE,
  30.           'username' => $feUserObject->user['username']
  31.         ));
  32.       } else {
  33.         return json_encode(array(
  34.           'success' => FALSE,
  35.           'errors' => array(
  36.             'reason' => 'Login error.'
  37.           )
  38.         ));
  39.       }
  40.     } elseif ($logintype == 'logout') {
  41.       $feUserObject->logoff();
  42.     } else {
  43.       if ($feUserObject->user) {
  44.         return json_encode(array(
  45.           'success' => true,
  46.           'data' => array(
  47.             array(
  48.               'xtype' => 'displayfield',
  49.               'value' => $feUserObject->user['username'],
  50.               'fieldLabel' => 'Username'
  51.             ),
  52.             array(
  53.               'xtype' => 'displayfield',
  54.               'value' => $feUserObject->user['email'],
  55.               'fieldLabel' => 'E-mail'
  56.             ),
  57.             array(
  58.               'xtype' => 'displayfield',
  59.               'value' => date('j.n.Y G:i:s T', $feUserObject->user['lastlogin']),
  60.               'fieldLabel' => 'Last login'
  61.             ),
  62.             array(
  63.               'xtype' => 'hidden',
  64.               'name' => 'logintype',
  65.               'value' => 'logout'
  66.             )
  67.           )
  68.         ));
  69.       } else {
  70.         if (trim($GLOBALS['TYPO3_CONF_VARS']['FE']['loginSecurityLevel']) === 'rsa') {
  71.           if ($backend->isAvailable()) {
  72.             // Generate a new key pair
  73.             $keyPair = $backend->createNewKeyPair();
  74.             // Save private key
  75.             $storage = tx_rsaauth_storagefactory::getStorage();
  76.             /* @var $storage tx_rsaauth_abstract_storage */
  77.             $storage->put($keyPair->getPrivateKey());
  78.             if ($this->debug) {
  79.               t3lib_div::devLog('SESSION before login: ' . json_encode($_SESSION), $extKey, 0);
  80.             }
  81.             $rsa_n = htmlspecialchars($keyPair->getPublicKeyModulus());
  82.             $rsa_e = sprintf('%x', $keyPair->getExponent());
  83.             return json_encode(array(
  84.               'success' => true,
  85.               'data' => array(
  86.                 array(
  87.                   'xtype' => 'textfield',
  88.                   'name' => 'user',
  89.                   'fieldLabel' => 'Username',
  90.                   'allowBlank' => FALSE,
  91.                   blankText => 'Username is empty.'
  92.                 ),
  93.                 array(
  94.                   'xtype' => 'textfield',
  95.                   'name' => 'pass',
  96.                   'fieldLabel' => 'Password',
  97.                   'allowBlank' => FALSE,
  98.                   'inputType' => 'password',
  99.                   blankText => 'Password is empty.'
  100.                 ),
  101.                 array(
  102.                   'xtype' => 'hidden',
  103.                   'name' => 'logintype',
  104.                   'value' => 'login'
  105.                 ),
  106.                 array(
  107.                   'xtype' => 'hidden',
  108.                   'name' => 'n',
  109.                   'value' => $rsa_n
  110.                 ),
  111.                 array(
  112.                   'xtype' => 'hidden',
  113.                   'name' => 'e',
  114.                   'value' => $rsa_e
  115.                 )
  116.               )
  117.             ));
  118.           }
  119.         }
  120.       }
  121.     }
  122.   }
  123. }
  124.  
  125. $output = t3lib_div::makeInstance('MyLoginClass');
  126. echo $output->main();
  127. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement