Merge pull request #126 from Shineson1001/feature/2FA-QRCodes
Add 2FA QR Code
This commit is contained in:
@@ -41,6 +41,9 @@
|
|||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link" data-toggle="pill" href="#bitcoin" role="tab" aria-controls="custom-tabs-four-settings" aria-selected="false">Bitcoin <i class="fab fa-bitcoin"></i></a>
|
<a class="nav-link" data-toggle="pill" href="#bitcoin" role="tab" aria-controls="custom-tabs-four-settings" aria-selected="false">Bitcoin <i class="fab fa-bitcoin"></i></a>
|
||||||
</li>
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" data-toggle="pill" href="#twofa" role="tab" aria-controls="custom-tabs-four-settings" aria-selected="false">2FA <i class="fa fa-key"></i></a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
@@ -84,6 +87,9 @@
|
|||||||
<div class="tab-pane fade" id="bitcoin" role="tabpanel" aria-labelledby="custom-tabs-four-profile-tab">
|
<div class="tab-pane fade" id="bitcoin" role="tabpanel" aria-labelledby="custom-tabs-four-profile-tab">
|
||||||
<?php include BASE_PATH . '/forms/static/bitcoin.php'; ?>
|
<?php include BASE_PATH . '/forms/static/bitcoin.php'; ?>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="tab-pane fade" id="twofa" role="tabpanel" aria-labelledby="custom-tabs-four-profile-tab">
|
||||||
|
<?php include BASE_PATH . '/forms/static/2fa.php'; ?>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div><!-- /.card -->
|
</div><!-- /.card -->
|
||||||
|
|||||||
@@ -0,0 +1,48 @@
|
|||||||
|
<form class="form" action="static_qrcode.php?type=2fa" method="post" id="static_form" enctype="multipart/form-data">
|
||||||
|
<?php include BASE_PATH.'/forms/qrcode_options.php'; ?>
|
||||||
|
<!-- Input forms -->
|
||||||
|
<div class="col-sm-12 mb-2">
|
||||||
|
<div class="row">
|
||||||
|
|
||||||
|
<div class="col-6 col-md-3">
|
||||||
|
<div class="form-group">
|
||||||
|
<label>Type *</label>
|
||||||
|
<select name="algorithms" class="form-control">
|
||||||
|
<option value="totp" Selected>Time based</option>
|
||||||
|
<option value="hotp">Counter based</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-6 col-md-3">
|
||||||
|
<div class="form-group">
|
||||||
|
<label>Secret *</label>
|
||||||
|
<input type="text" name="secret" value="" placeholder="" class="form-control">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-6 col-md-3">
|
||||||
|
<div class="form-group">
|
||||||
|
<label>Label *</label>
|
||||||
|
<input type="text" name="label" value="" placeholder="" class="form-control">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-6 col-md-3">
|
||||||
|
<div class="form-group">
|
||||||
|
<label>Issuer</label>
|
||||||
|
<input type="text" name="issuer" value="" placeholder="" class="form-control">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-sm-12 mb-2">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-6 col-md-3">
|
||||||
|
<button type="submit" class="btn btn-primary">Submit</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
@@ -333,6 +333,37 @@ class StaticQrcode {
|
|||||||
$this->requiredFieldsError();
|
$this->requiredFieldsError();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* create a qr code of type "2FA"
|
||||||
|
* @string algorithms -> required
|
||||||
|
* @string secret -> required
|
||||||
|
* @string label -> required
|
||||||
|
* @string issuer
|
||||||
|
* otpauth://TYPE/LABEL?PARAMETERS
|
||||||
|
* otpauth://totp/Example:alice@google.com?secret=JBSWY3DPEHPK3PXP&issuer=Example
|
||||||
|
*/
|
||||||
|
public function twofaQrcode($algorithms, $secret, $label, $issuer)
|
||||||
|
{
|
||||||
|
if($algorithms != NULL && $secret != NULL && $label != NULL){
|
||||||
|
$this->sData = 'otpauth://' . $algorithms . '/' . $label . '?secret=' . $secret;
|
||||||
|
|
||||||
|
if (!empty($issuer)) {
|
||||||
|
$this->sData .= '&issuer=' . $issuer;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->sContent = '<strong>Type:</strong> ' . $algorithms . '<br>'.'<strong>Secret:</strong> ' . $secret . '<br>';
|
||||||
|
$this->sContent .= '<strong>Label:</strong> ' . rawurldecode($label);
|
||||||
|
|
||||||
|
if (!empty($issuer)) {
|
||||||
|
$this->sContent .= '<br><strong>Issuer:</strong> '. rawurldecode($issuer);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->addQrcode("2fa");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
$this->requiredFieldsError();
|
||||||
|
}
|
||||||
|
|
||||||
public function getQrcode($id) {
|
public function getQrcode($id) {
|
||||||
return $this->qrcode_instance->getQrcode($id);
|
return $this->qrcode_instance->getQrcode($id);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,6 +65,9 @@ if($_SERVER["REQUEST_METHOD"] === "POST" && !isset($_POST["edit"])) {
|
|||||||
|
|
||||||
case 'bitcoin': $static_qrcode_instance->bitcoinQrcode($_POST['address'], $_POST['amount'], $_POST['label'], $_POST['message']);
|
case 'bitcoin': $static_qrcode_instance->bitcoinQrcode($_POST['address'], $_POST['amount'], $_POST['label'], $_POST['message']);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case '2fa': $static_qrcode_instance->twofaQrcode($_POST['algorithms'], $_POST['secret'], rawurlencode($_POST['label']), rawurlencode($_POST['issuer']));
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|||||||
Reference in New Issue
Block a user