edit-mfa.html.php 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php if (!defined('HTMLY')) die('HTMLy'); ?>
  2. <?php
  3. if (isset($_SESSION[site_url()]['user'])) {
  4. $user = $_SESSION[site_url()]['user'];
  5. }
  6. use PragmaRX\Google2FA\Google2FA;
  7. use BaconQrCode\Renderer\GDLibRenderer;
  8. use BaconQrCode\Writer;
  9. $domain = parse_url(site_url());
  10. $domain = rtrim($domain['host'] . $domain['path'], "/");
  11. $mfa_state = user('mfa_secret', $user);
  12. if (is_null($mfa_state) || $mfa_state == 'disabled') {
  13. $google2fa = new Google2FA();
  14. $mfasecret = $google2fa->generateSecretKey();
  15. if (version_compare(PHP_VERSION, '8.1', '>=')) {
  16. $g2faUrl = $google2fa->getQRCodeUrl(
  17. $user,
  18. $domain,
  19. $mfasecret
  20. );
  21. $renderer = new GDLibRenderer(400);
  22. $writer = new Writer($renderer);
  23. $qrcode_image = base64_encode($writer->writeString($g2faUrl));
  24. }
  25. }
  26. ?>
  27. <h2><?php echo i18n('config_mfa'); echo ': ' . $user; ?></h2>
  28. <br>
  29. <?php if (isset($error)) { ?>
  30. <div class="error-message"><?php echo $error ?></div>
  31. <?php } ?>
  32. <form method="POST">
  33. <input type="hidden" name="csrf_token" value="<?php echo get_csrf(); ?>">
  34. <input type="hidden" name="username" value="<?php echo $user; ?>">
  35. <?php if (is_null($mfa_state) || $mfa_state == 'disabled') {?>
  36. <?php if (version_compare(PHP_VERSION, '8.1', '>=')) {?>
  37. <div style="text-align:center;width:100%;"><img style="margin:-10px auto;" src="data:image/png;base64, <?php echo $qrcode_image; ?>"/></div>
  38. <span style="text-align:center;width:100%;float:left;"><small><?php echo i18n('manualsetupkey') . ': ' . $mfasecret; ?></small></span>
  39. <?php } else {?>
  40. <span style="text-align:center;width:100%;float:left;"><small>Setup Key</small></span>
  41. <span style="text-align:center;width:100%;float:left;"><h4><?php echo $mfasecret;?></h4></span>
  42. <br><br>
  43. <?php } ?>
  44. <div class="form-group row">
  45. <label for="site.url" class="col-sm-2 col-form-label"><?php echo i18n('MFACode');?></label>
  46. <div class="col-sm-10">
  47. <input type="text" name="mfacode" class="form-control" id="mfacode" value="" placeholder="<?php echo i18n('verify_code');?>">
  48. </div>
  49. </div>
  50. <div class="form-group row">
  51. <label for="site.url" class="col-sm-2 col-form-label"><?php echo i18n('Password');?></label>
  52. <div class="col-sm-10">
  53. <input type="password" name="password" class="form-control" id="password" value="" placeholder="<?php echo i18n('verify_password');?>">
  54. </div>
  55. </div>
  56. <input type="hidden" name="mfa_secret" value="<?php echo $mfasecret;?>">
  57. <input type="submit" class="btn btn-primary" style="width:100px;" value="<?php echo i18n('Save');?>">
  58. <?php } else { ?>
  59. <input type="hidden" name="mfa_secret" value="disabled">
  60. <div class="form-group row">
  61. <label for="site.url" class="col-sm-2 col-form-label"><?php echo i18n('Password');?></label>
  62. <div class="col-sm-10">
  63. <input type="password" name="password" class="form-control" id="password" value="" placeholder="<?php echo i18n('verify_password');?>">
  64. </div>
  65. </div>
  66. <input type="submit" class="btn btn-primary" value="<?php echo i18n('disablemfa');?>">
  67. <?php } ?>
  68. </form>