forked from D3Public/oxtotp
add available backup code message in backend and in login form
This commit is contained in:
parent
a42121b4bc
commit
1ed760f8e4
@ -21,6 +21,7 @@ use D3\Totp\Modules\Application\Model\d3_totp_user;
|
|||||||
use Exception;
|
use Exception;
|
||||||
use OxidEsales\Eshop\Application\Controller\Admin\AdminDetailsController;
|
use OxidEsales\Eshop\Application\Controller\Admin\AdminDetailsController;
|
||||||
use OxidEsales\Eshop\Application\Model\User;
|
use OxidEsales\Eshop\Application\Model\User;
|
||||||
|
use OxidEsales\Eshop\Core\Exception\DatabaseConnectionException;
|
||||||
use OxidEsales\Eshop\Core\Exception\StandardException;
|
use OxidEsales\Eshop\Core\Exception\StandardException;
|
||||||
use OxidEsales\Eshop\Core\Registry;
|
use OxidEsales\Eshop\Core\Registry;
|
||||||
|
|
||||||
@ -130,4 +131,14 @@ class d3user_totp extends AdminDetailsController
|
|||||||
{
|
{
|
||||||
return implode(PHP_EOL, $this->aBackupCodes);
|
return implode(PHP_EOL, $this->aBackupCodes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return int
|
||||||
|
* @throws DatabaseConnectionException
|
||||||
|
*/
|
||||||
|
public function getAvailableBackupCodeCount()
|
||||||
|
{
|
||||||
|
$oBackupCodeList = oxNew(d3backupcodelist::class);
|
||||||
|
return $oBackupCodeList->getAvailableCodeCount($this->getUser()->getId());
|
||||||
|
}
|
||||||
}
|
}
|
@ -115,4 +115,19 @@ class d3backupcodelist extends ListModel
|
|||||||
$oBackupCode->delete();
|
$oBackupCode->delete();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $sUserId
|
||||||
|
* @return int
|
||||||
|
* @throws DatabaseConnectionException
|
||||||
|
*/
|
||||||
|
public function getAvailableCodeCount($sUserId)
|
||||||
|
{
|
||||||
|
$oDb = DatabaseProvider::getDb();
|
||||||
|
|
||||||
|
$query = "SELECT count(*) FROM ".$oDb->quoteIdentifier($this->getBaseObject()->getViewName()).
|
||||||
|
" WHERE ".$oDb->quoteIdentifier('oxuserid')." = ".$oDb->quote($sUserId);
|
||||||
|
|
||||||
|
return (int) $oDb->getOne($query);
|
||||||
|
}
|
||||||
}
|
}
|
@ -8,6 +8,8 @@
|
|||||||
[{include file="inc_error.tpl" Errorlist=$Errors.default}]
|
[{include file="inc_error.tpl" Errorlist=$Errors.default}]
|
||||||
[{/if}]
|
[{/if}]
|
||||||
|
|
||||||
|
[{$oView->getBackupCodeCountMessage()}]
|
||||||
|
|
||||||
<label for="d3totp">[{oxmultilang ident="TOTP_INPUT"}]</label>
|
<label for="d3totp">[{oxmultilang ident="TOTP_INPUT"}]</label>
|
||||||
<input type="text" name="d3totp" id="d3totp" value="" size="49" autofocus autocomplete="off"><br>
|
<input type="text" name="d3totp" id="d3totp" value="" size="49" autofocus autocomplete="off"><br>
|
||||||
|
|
||||||
|
@ -40,8 +40,10 @@ $aLang = [
|
|||||||
'D3_TOTP_REGISTERDELETE' => 'Registrierung löschen',
|
'D3_TOTP_REGISTERDELETE' => 'Registrierung löschen',
|
||||||
'D3_TOTP_REGISTERDELETE_DESC' => 'Um die Registrierung zu ändern, löschen Sie diese bitte vorerst. Sie können sofort im Anschluss eine neue Registrierung anlegen.<br>Wenn Sie die Registrierung löschen, ist das Konto nicht mehr durch die Zweifaktorauthentisierung geschützt.',
|
'D3_TOTP_REGISTERDELETE_DESC' => 'Um die Registrierung zu ändern, löschen Sie diese bitte vorerst. Sie können sofort im Anschluss eine neue Registrierung anlegen.<br>Wenn Sie die Registrierung löschen, ist das Konto nicht mehr durch die Zweifaktorauthentisierung geschützt.',
|
||||||
|
|
||||||
'D3_TOTP_BACKUPCODES' => 'Backup-Codes',
|
'D3_TOTP_BACKUPCODES' => 'Backupcodes',
|
||||||
'D3_TOTP_BACKUPCODES_DESC' => 'Mit diesen Backup-Codes können Sie sich anmelden, wenn die Generierung des Einmalpasswortes nicht möglich ist (z.B. Gerät verloren oder neu installiert). Sie können dann die Einstellungen zur Verwendung der 2-Faktor-Authentisierung ändern oder einen neuen Zugang erstellen. Speichern Sie sich diese Codes bitte in diesem Moment sicher ab. Nach Verlassen dieser Seite können diese Codes nicht erneut angezeigt werden.',
|
'D3_TOTP_BACKUPCODES_DESC' => 'Mit diesen Backupcodes können Sie sich anmelden, wenn die Generierung des Einmalpasswortes nicht möglich ist (z.B. Gerät verloren oder neu installiert). Sie können dann die Einstellungen zur Verwendung der 2-Faktor-Authentisierung ändern oder einen neuen Zugang erstellen. Speichern Sie sich diese Codes bitte in diesem Moment sicher ab. Nach Verlassen dieser Seite können diese Codes nicht erneut angezeigt werden.',
|
||||||
|
'D3_TOTP_AVAILBACKUPCODECOUNT' => 'noch %1$s Backupcodes verfügbar',
|
||||||
|
'D3_TOTP_AVAILBACKUPCODECOUNT_DESC' => 'Um neue Backupcodes zu erstellen, löschen Sie die bestehende Registrierung und legen diese bitte neu an.',
|
||||||
|
|
||||||
'D3_TOTP_SAVE' => 'Speichern',
|
'D3_TOTP_SAVE' => 'Speichern',
|
||||||
|
|
||||||
|
@ -42,6 +42,8 @@ $aLang = [
|
|||||||
|
|
||||||
'D3_TOTP_BACKUPCODES' => 'backup codes',
|
'D3_TOTP_BACKUPCODES' => 'backup codes',
|
||||||
'D3_TOTP_BACKUPCODES_DESC' => 'You can use these backup codes to log on if it is not possible to generate the one-time password (e.g. device lost or newly installed). You can then change the settings to use 2-factor authentication or create a new 2FA login. Please save these codes safely at this moment. After leaving this page, these codes cannot be displayed again.',
|
'D3_TOTP_BACKUPCODES_DESC' => 'You can use these backup codes to log on if it is not possible to generate the one-time password (e.g. device lost or newly installed). You can then change the settings to use 2-factor authentication or create a new 2FA login. Please save these codes safely at this moment. After leaving this page, these codes cannot be displayed again.',
|
||||||
|
'D3_TOTP_AVAILBACKUPCODECOUNT' => '%1$s backup codes still available',
|
||||||
|
'D3_TOTP_AVAILBACKUPCODECOUNT_DESC' => 'To create new backup codes, delete the existing registry and create a new one.',
|
||||||
|
|
||||||
'D3_TOTP_SAVE' => 'Save',
|
'D3_TOTP_SAVE' => 'Save',
|
||||||
|
|
||||||
|
@ -124,13 +124,12 @@
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
[{else}]
|
[{else}]
|
||||||
|
<tr>
|
||||||
|
<td class="edittext" colspan="2">
|
||||||
|
<h4>[{oxmultilang ident="D3_TOTP_BACKUPCODES"}]</h4>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
[{if $oView->getBackupCodes()}]
|
[{if $oView->getBackupCodes()}]
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td class="edittext" colspan="2">
|
|
||||||
<h4>[{oxmultilang ident="D3_TOTP_BACKUPCODES"}]</h4>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<label for="backupcodes">[{oxmultilang ident="D3_TOTP_BACKUPCODES_DESC"}]</label>
|
<label for="backupcodes">[{oxmultilang ident="D3_TOTP_BACKUPCODES_DESC"}]</label>
|
||||||
@ -139,6 +138,17 @@
|
|||||||
<textarea id="backupcodes" rows="10" cols="20">[{$oView->getBackupCodes()}]</textarea>
|
<textarea id="backupcodes" rows="10" cols="20">[{$oView->getBackupCodes()}]</textarea>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
[{else}]
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
[{oxmultilang ident="D3_TOTP_AVAILBACKUPCODECOUNT" args=$oView->getAvailableBackupCodeCount()}]
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
[{oxmultilang ident="D3_TOTP_AVAILBACKUPCODECOUNT_DESC"}]
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
[{/if}]
|
[{/if}]
|
||||||
[{/if}]
|
[{/if}]
|
||||||
|
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
namespace D3\Totp\Modules\Application\Controller\Admin;
|
namespace D3\Totp\Modules\Application\Controller\Admin;
|
||||||
|
|
||||||
use D3\Totp\Application\Model\d3totp;
|
use D3\Totp\Application\Model\d3totp;
|
||||||
|
use D3\Totp\Application\Model\Exceptions\d3backupcodelist;
|
||||||
use D3\Totp\Application\Model\Exceptions\d3totp_wrongOtpException;
|
use D3\Totp\Application\Model\Exceptions\d3totp_wrongOtpException;
|
||||||
use Doctrine\DBAL\DBALException;
|
use Doctrine\DBAL\DBALException;
|
||||||
use OxidEsales\Eshop\Application\Model\User;
|
use OxidEsales\Eshop\Application\Model\User;
|
||||||
@ -78,6 +79,25 @@ class d3_totp_LoginController extends d3_totp_LoginController_parent
|
|||||||
return $return;
|
return $return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string|void
|
||||||
|
* @throws DatabaseConnectionException
|
||||||
|
*/
|
||||||
|
public function getBackupCodeCountMessage()
|
||||||
|
{
|
||||||
|
$oBackupCodeList = oxNew(d3backupcodelist::class);
|
||||||
|
$iCount = $oBackupCodeList->getAvailableCodeCount(Registry::getSession()->getVariable("auth"));
|
||||||
|
|
||||||
|
if ($iCount < 4) {
|
||||||
|
return sprintf(
|
||||||
|
Registry::getLang()->translateString('D3_TOTP_AVAILBACKUPCODECOUNT'),
|
||||||
|
$iCount
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param d3totp $totp
|
* @param d3totp $totp
|
||||||
* @return bool
|
* @return bool
|
||||||
|
Loading…
Reference in New Issue
Block a user