diff options
author | Mario <mario@mariovavti.com> | 2023-03-08 10:04:29 +0000 |
---|---|---|
committer | Mario <mario@mariovavti.com> | 2023-03-08 10:04:29 +0000 |
commit | 234bb6425021b72f0db71667191b2c36dc593791 (patch) | |
tree | 2966d68516cebae70d4a75aace9962a809532339 /view | |
parent | d43a56614cd93982d19f4f82aae6e62f9ca533a9 (diff) | |
download | volse-hubzilla-234bb6425021b72f0db71667191b2c36dc593791.tar.gz volse-hubzilla-234bb6425021b72f0db71667191b2c36dc593791.tar.bz2 volse-hubzilla-234bb6425021b72f0db71667191b2c36dc593791.zip |
port totp mfa from streams with some adjustions
Diffstat (limited to 'view')
-rw-r--r-- | view/tpl/totp.tpl | 26 | ||||
-rw-r--r-- | view/tpl/totp_setup.tpl | 130 |
2 files changed, 156 insertions, 0 deletions
diff --git a/view/tpl/totp.tpl b/view/tpl/totp.tpl new file mode 100644 index 000000000..0367483eb --- /dev/null +++ b/view/tpl/totp.tpl @@ -0,0 +1,26 @@ +<!DOCTYPE html > +<html data-bs-theme="light"> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0"> + <head> + <link rel="stylesheet" href="vendor/twbs/bootstrap/dist/css/bootstrap.min.css" type="text/css" media="screen"> + </head> + <body> + <nav class="navbar bg-body-tertiary"> + <div class="container-sm"> + <span class="navbar-brand">{{$header}}</span> + </div> + </nav> + <main class="container-sm mt-4"> + <h5>{{$id}}</h5> + <form action="totp_check" method="post"> + <input type="hidden" class="form-control" name="totp_code_static" value="1"/> + <div class="mb-3"> + <label for="totp-input" class="form-label">{{$desc}}</label> + <input id="totp-input" type="text" class="form-control" name="totp_code" value=""/> + </div> + <input type="submit" value="{{$submit}}" class="btn btn-primary"> + </form> + </main> + </body> +</html> diff --git a/view/tpl/totp_setup.tpl b/view/tpl/totp_setup.tpl new file mode 100644 index 000000000..6bf5885f7 --- /dev/null +++ b/view/tpl/totp_setup.tpl @@ -0,0 +1,130 @@ +<div class="generic-content-wrapper"> + <div class="section-title-wrapper"> + <h2>{{$title}}</h2> + </div> + + <div class="section-content-tools-wrapper"> + + {{if $secret}} + <div> + <div>{{$secret_text}}</div> + <br> + <div><strong>{{$secret}}</strong></div> + </div> + {{/if}} + + <img src="{{$qrcode}}" alt="{{$uri}}" title="{{$uri}}"> + + <form action="#" id="totp-test-form" method="post" autocomplete="off" > + <div id="otp-test-wrapper"> + <div style="margin-top: 1rem"> + <label for="totp_test">{{$test_title}}</label> + </div> + <div style="margin-top: 1rem"> + <input title="{{$test_title}}" type="text" id="totp_test" + style="width: 30%;" + onkeydown="hitkey(event)" + onfocus="totp_clear_code()"/> + </div> + <div style="margin-top: 1rem"> + <strong id="otptest_results"></strong> + </div> + </div> + <div class="settings-submit-wrapper" > + <button id="otp-test-submit" type="submit" + name="submit" class="btn btn-primary" onclick="totp_test_code(); return false;">{{$test}} + </button> + </div> + </form> + + + <form action="settings/multifactor" id="settings-mfa-form" method="post" autocomplete="off" > + <input type='hidden' name='form_security_token' value='{{$form_security_token}}'> + {{include file="field_checkbox.tpl" field=$enable_mfa}} + <div class="settings-submit-wrapper" > + <button id="otp-enable-submit" type="submit" + name="submit" class="btn btn-primary">{{$submit}} + </button> + </div> + + </form> + + + </div> + </form> +</div> + +<script type="text/javascript"> + +$(window).on("load", function() { + totp_clear_code(); +}); + +function totp_clear_code() { + var box = document.getElementById("totp_test"); + box.value = ""; + box.focus(); + document.getElementById("otptest_results").innerHTML = ""; +} + +function totp_test_code() { + $.post('/totp_check', + {totp_code: document.getElementById('totp_test').value}, + function(data) { + document.getElementById("otptest_results").innerHTML = + (data['status']) ? '{{$test_pass}}' : '{{$test_fail}}'; + }); +} +function totp_generate_secret() { + $.post('/settings/totp', + { + set_secret: '1', + password: document.getElementById("totp_password").value + }, + function(data) { + if (!data['auth']) { + var box = document.getElementById("totp_password"); + box.value = ""; + box.focus(); + document.getElementById('totp_note').innerHTML = + "{{$note_password}}"; + return; + } + var div = document.getElementById("password_form"); + div.style.display = "none"; + choose_message(true); + document.getElementById('totp_secret').innerHTML = + data['secret']; + document.getElementById('totp_qrcode').src = + "{{$qrcode_url}}" + (new Date()).getTime(); + document.getElementById('totp_note').innerHTML = + "{{$note_scan}}"; + totp_clear_code(); + } + ); +} + +function go_generate(ev) { + if (ev.which == 13) { + totp_generate_secret(); + ev.preventDefault(); + ev.stopPropagation(); + } +} +function hitkey(ev) { + if (ev.which == 13) { + totp_test_code(); + ev.preventDefault(); + ev.stopPropagation(); + } +} +function expose_password() { + var div = document.getElementById("password_form"); + div.style.display = "block"; + var box = document.getElementById("totp_password"); + box.value = ""; + box.focus(); +} +</script> + + |