2018-10-17 23:48:20 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This Software is the property of Data Development and is protected
|
|
|
|
* by copyright law - it is NOT Freeware.
|
|
|
|
* Any unauthorized use of this software without a valid license
|
|
|
|
* is a violation of the license agreement and will be prosecuted by
|
|
|
|
* civil and criminal law.
|
|
|
|
* http://www.shopmodule.com
|
|
|
|
*
|
|
|
|
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
|
|
|
* @author D3 Data Development - Daniel Seifert <support@shopmodule.com>
|
|
|
|
* @link http://www.oxidmodule.com
|
|
|
|
*/
|
|
|
|
|
|
|
|
namespace D3\Totp\Setup;
|
|
|
|
|
2018-10-20 00:45:49 +02:00
|
|
|
use D3\ModCfg\Application\Model\d3database;
|
2018-10-17 23:48:20 +02:00
|
|
|
use D3\ModCfg\Application\Model\Install\d3install_updatebase;
|
2018-10-20 00:45:49 +02:00
|
|
|
use Doctrine\DBAL\DBALException;
|
|
|
|
use OxidEsales\Eshop\Core\Exception\ConnectionException;
|
|
|
|
use OxidEsales\Eshop\Core\Exception\DatabaseConnectionException;
|
|
|
|
use OxidEsales\Eshop\Core\Exception\DatabaseErrorException;
|
2018-10-17 23:48:20 +02:00
|
|
|
|
|
|
|
class Installation extends d3install_updatebase
|
|
|
|
{
|
2018-10-20 00:45:49 +02:00
|
|
|
protected $_aUpdateMethods = array(
|
|
|
|
array('check' => 'doesTotpTableNotExist',
|
|
|
|
'do' => 'addTotpTable'),
|
2019-07-28 23:00:30 +02:00
|
|
|
array('check' => 'doesTotpBCTableNotExist',
|
|
|
|
'do' => 'addTotpBCTable'),
|
2018-10-20 00:45:49 +02:00
|
|
|
array('check' => 'checkFields',
|
|
|
|
'do' => 'fixFields'),
|
|
|
|
array('check' => 'checkIndizes',
|
|
|
|
'do' => 'fixIndizes'),
|
|
|
|
);
|
2018-10-17 23:48:20 +02:00
|
|
|
|
2018-10-20 00:45:49 +02:00
|
|
|
public $aMultiLangTables = array();
|
|
|
|
|
|
|
|
public $aFields = array(
|
|
|
|
'OXID' => array(
|
|
|
|
'sTableName' => 'd3totp',
|
|
|
|
'sFieldName' => 'OXID',
|
|
|
|
'sType' => 'CHAR(32)',
|
|
|
|
'blNull' => false,
|
|
|
|
'sDefault' => false,
|
|
|
|
'sComment' => '',
|
|
|
|
'sExtra' => '',
|
|
|
|
'blMultilang' => false,
|
|
|
|
),
|
|
|
|
'OXUSERID' => array(
|
|
|
|
'sTableName' => 'd3totp',
|
|
|
|
'sFieldName' => 'OXUSERID',
|
|
|
|
'sType' => 'CHAR(32)',
|
|
|
|
'blNull' => false,
|
|
|
|
'sDefault' => false,
|
|
|
|
'sComment' => '',
|
|
|
|
'sExtra' => '',
|
|
|
|
'blMultilang' => false,
|
|
|
|
),
|
|
|
|
'USETOTP' => array(
|
|
|
|
'sTableName' => 'd3totp',
|
|
|
|
'sFieldName' => 'USETOTP',
|
|
|
|
'sType' => 'TINYINT(1)',
|
|
|
|
'blNull' => false,
|
|
|
|
'sDefault' => 0,
|
|
|
|
'sComment' => '',
|
|
|
|
'sExtra' => '',
|
|
|
|
'blMultilang' => false,
|
|
|
|
),
|
|
|
|
'SEED' => array(
|
|
|
|
'sTableName' => 'd3totp',
|
|
|
|
'sFieldName' => 'SEED',
|
|
|
|
'sType' => 'VARCHAR(256)',
|
|
|
|
'blNull' => false,
|
|
|
|
'sDefault' => false,
|
|
|
|
'sComment' => '',
|
|
|
|
'sExtra' => '',
|
|
|
|
'blMultilang' => false,
|
2019-07-27 00:03:22 +02:00
|
|
|
),
|
2019-07-28 23:00:30 +02:00
|
|
|
'OXTIMESTAMP' => array(
|
2019-07-27 00:03:22 +02:00
|
|
|
'sTableName' => 'd3totp',
|
2019-07-28 23:00:30 +02:00
|
|
|
'sFieldName' => 'OXTIMESTAMP',
|
|
|
|
'sType' => 'TIMESTAMP',
|
2019-07-27 00:03:22 +02:00
|
|
|
'blNull' => false,
|
2019-07-28 23:00:30 +02:00
|
|
|
'sDefault' => 'CURRENT_TIMESTAMP',
|
|
|
|
'sComment' => 'Timestamp',
|
2019-07-27 00:03:22 +02:00
|
|
|
'sExtra' => '',
|
|
|
|
'blMultilang' => false,
|
|
|
|
),
|
2019-07-28 23:00:30 +02:00
|
|
|
|
|
|
|
'bc_OXID' => array(
|
|
|
|
'sTableName' => 'd3totp_backupcodes',
|
|
|
|
'sFieldName' => 'OXID',
|
|
|
|
'sType' => 'CHAR(32)',
|
2019-07-27 00:03:22 +02:00
|
|
|
'blNull' => false,
|
|
|
|
'sDefault' => false,
|
2019-07-28 23:00:30 +02:00
|
|
|
'sComment' => '',
|
2019-07-27 00:03:22 +02:00
|
|
|
'sExtra' => '',
|
|
|
|
'blMultilang' => false,
|
|
|
|
),
|
2019-07-28 23:00:30 +02:00
|
|
|
'bc_OXUSERID' => array(
|
|
|
|
'sTableName' => 'd3totp_backupcodes',
|
|
|
|
'sFieldName' => 'OXUSERID',
|
|
|
|
'sType' => 'CHAR(32)',
|
2019-07-27 00:03:22 +02:00
|
|
|
'blNull' => false,
|
|
|
|
'sDefault' => false,
|
2019-07-28 23:00:30 +02:00
|
|
|
'sComment' => 'user id',
|
2019-07-27 00:03:22 +02:00
|
|
|
'sExtra' => '',
|
|
|
|
'blMultilang' => false,
|
|
|
|
),
|
2019-07-28 23:00:30 +02:00
|
|
|
'bc_BACKUPCODE' => array(
|
|
|
|
'sTableName' => 'd3totp_backupcodes',
|
|
|
|
'sFieldName' => 'BACKUPCODE',
|
2019-07-27 00:03:22 +02:00
|
|
|
'sType' => 'VARCHAR(64)',
|
|
|
|
'blNull' => false,
|
|
|
|
'sDefault' => false,
|
2019-07-28 23:00:30 +02:00
|
|
|
'sComment' => 'BackupCode',
|
2019-07-27 00:03:22 +02:00
|
|
|
'sExtra' => '',
|
|
|
|
'blMultilang' => false,
|
|
|
|
),
|
2019-07-28 23:00:30 +02:00
|
|
|
'bc_OXTIMESTAMP' => array(
|
|
|
|
'sTableName' => 'd3totp_backupcodes',
|
|
|
|
'sFieldName' => 'OXTIMESTAMP',
|
|
|
|
'sType' => 'TIMESTAMP',
|
2019-07-27 00:03:22 +02:00
|
|
|
'blNull' => false,
|
2019-07-28 23:00:30 +02:00
|
|
|
'sDefault' => 'CURRENT_TIMESTAMP',
|
|
|
|
'sComment' => 'Timestamp',
|
2019-07-27 00:03:22 +02:00
|
|
|
'sExtra' => '',
|
|
|
|
'blMultilang' => false,
|
2018-10-20 00:45:49 +02:00
|
|
|
)
|
|
|
|
);
|
|
|
|
|
|
|
|
public $aIndizes = array(
|
|
|
|
'OXID' => array(
|
|
|
|
'sTableName' => 'd3totp',
|
|
|
|
'sType' => d3database::INDEX_TYPE_PRIMARY,
|
|
|
|
'sName' => 'PRIMARY',
|
|
|
|
'aFields' => array(
|
|
|
|
'OXID' => 'OXID',
|
|
|
|
),
|
|
|
|
),
|
|
|
|
'OXUSERID' => array(
|
|
|
|
'sTableName' => 'd3totp',
|
|
|
|
'sType' => d3database::INDEX_TYPE_UNIQUE,
|
|
|
|
'sName' => 'OXUSERID',
|
|
|
|
'aFields' => array(
|
|
|
|
'OXUSERID' => 'OXUSERID',
|
|
|
|
),
|
2019-07-28 23:00:30 +02:00
|
|
|
),
|
|
|
|
'bc_OXID' => array(
|
|
|
|
'sTableName' => 'd3totp_backupcodes',
|
|
|
|
'sType' => d3database::INDEX_TYPE_PRIMARY,
|
|
|
|
'sName' => 'PRIMARY',
|
|
|
|
'aFields' => array(
|
|
|
|
'OXID' => 'OXID',
|
|
|
|
),
|
|
|
|
),
|
|
|
|
'bc_OXUSERID' => array(
|
|
|
|
'sTableName' => 'd3totp_backupcodes',
|
|
|
|
'sType' => d3database::INDEX_TYPE_INDEX,
|
|
|
|
'sName' => 'OXUSERID',
|
|
|
|
'aFields' => array(
|
|
|
|
'OXUSERID' => 'OXUSERID',
|
|
|
|
),
|
|
|
|
),
|
|
|
|
'bc_BACKUPCODE' => array(
|
|
|
|
'sTableName' => 'd3totp_backupcodes',
|
|
|
|
'sType' => d3database::INDEX_TYPE_INDEX,
|
|
|
|
'sName' => 'BACKUPCODE',
|
|
|
|
'aFields' => array(
|
|
|
|
'BACKUPCODE' => 'BACKUPCODE',
|
|
|
|
),
|
|
|
|
),
|
2018-10-20 00:45:49 +02:00
|
|
|
);
|
|
|
|
|
2018-10-23 22:35:44 +02:00
|
|
|
protected $_aRefreshMetaModuleIds = array('d3totp');
|
2018-10-20 00:45:49 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @return bool
|
|
|
|
* @throws DBALException
|
|
|
|
* @throws DatabaseConnectionException
|
|
|
|
* @throws DatabaseErrorException
|
|
|
|
*/
|
|
|
|
public function doesTotpTableNotExist()
|
|
|
|
{
|
|
|
|
return $this->_checkTableNotExist('d3totp');
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @return bool
|
|
|
|
* @throws ConnectionException
|
|
|
|
* @throws DBALException
|
|
|
|
* @throws DatabaseConnectionException
|
|
|
|
* @throws DatabaseErrorException
|
|
|
|
*/
|
|
|
|
public function addTotpTable()
|
|
|
|
{
|
|
|
|
$blRet = false;
|
|
|
|
if ($this->doesTotpTableNotExist()) {
|
|
|
|
$this->setInitialExecMethod(__METHOD__);
|
|
|
|
$blRet = $this->_addTable2(
|
|
|
|
'd3totp',
|
|
|
|
$this->aFields,
|
|
|
|
$this->aIndizes,
|
|
|
|
'totp setting',
|
|
|
|
'InnoDB'
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
return $blRet;
|
|
|
|
}
|
2019-07-28 23:00:30 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @return bool
|
|
|
|
* @throws DBALException
|
|
|
|
* @throws DatabaseConnectionException
|
|
|
|
* @throws DatabaseErrorException
|
|
|
|
*/
|
|
|
|
public function doesTotpBCTableNotExist()
|
|
|
|
{
|
|
|
|
return $this->_checkTableNotExist('d3totp_backupcodes');
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @return bool
|
|
|
|
* @throws ConnectionException
|
|
|
|
* @throws DBALException
|
|
|
|
* @throws DatabaseConnectionException
|
|
|
|
* @throws DatabaseErrorException
|
|
|
|
*/
|
|
|
|
public function addTotpBCTable()
|
|
|
|
{
|
|
|
|
$blRet = false;
|
|
|
|
if ($this->doesTotpBCTableNotExist()) {
|
|
|
|
$this->setInitialExecMethod(__METHOD__);
|
|
|
|
$blRet = $this->_addTable2(
|
|
|
|
'd3totp_backupcodes',
|
|
|
|
$this->aFields,
|
|
|
|
$this->aIndizes,
|
|
|
|
'totp backup codes',
|
|
|
|
'InnoDB'
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
return $blRet;
|
|
|
|
}
|
2018-10-17 23:48:20 +02:00
|
|
|
}
|