Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/views/pages/paid-passkey.ejs

    r156baa3 r9a00f28  
    1212
    1313<script src="/assets/vendor/simplewebauthn-browser.umd.min.js"></script>
    14 <%# Het script staat in assets/js/mod/paid-passkey.js; de gegevens via partials/page-data.ejs (shaer-bqr). %>
     14<script>
     15(function () {
     16  var options = <%- optionsJson %>;
     17  var blob = "<%= regBlob %>";
     18  var I = { unsupported: "<%= t('ppk.unsupported') %>", follow: "<%= t('ppk.follow') %>", done: "<%= t('ppk.done') %>", failed: "<%= t('ppk.failed') %>", cancelled: "<%= t('ppk.cancelled') %>", error: "<%= t('pgate.error') %>" };
     19  var postUrl = "<%= (typeof siteUrlBase !== 'undefined' && siteUrlBase ? siteUrlBase : '') %>/<%= postSlug %>";
     20  var btn = document.getElementById('pk-go');
     21  var status = document.getElementById('pk-status');
     22  function say(msg, err) { status.hidden = false; status.textContent = msg; status.classList.toggle('is-err', !!err); }
     23
     24  if (!window.SimpleWebAuthnBrowser || !window.PublicKeyCredential) {
     25    btn.disabled = true;
     26    say(I.unsupported, true);
     27    return;
     28  }
     29  btn.addEventListener('click', function () {
     30    btn.disabled = true;
     31    say(I.follow);
     32    window.SimpleWebAuthnBrowser.startRegistration({ optionsJSON: options })
     33      .then(function (response) {
     34        return fetch('/paid/register', {
     35          method: 'POST', headers: { 'Content-Type': 'application/json' },
     36          body: JSON.stringify({ response: response, blob: blob }),
     37        });
     38      })
     39      .then(function (r) { return r.json(); })
     40      .then(function (j) {
     41        if (j && j.ok) { say(I.done); setTimeout(function () { location.href = postUrl; }, 900); }
     42        else { btn.disabled = false; say(I.failed.replace('{err}', (j && j.error) || '?'), true); }
     43      })
     44      .catch(function (e) { btn.disabled = false; say(e && e.name === 'NotAllowedError' ? I.cancelled : I.error, true); });
     45  });
     46})();
     47</script>
    1548
    1649<style>
     
    2558  .pk-status.is-err { color: #c0392b; }
    2659</style>
    27 <%- include('../partials/page-data', { pageData: { options: JSON.parse(optionsJson), blob: regBlob, i18n: { unsupported: t('ppk.unsupported'), follow: t('ppk.follow'), done: t('ppk.done'), failed: t('ppk.failed'), cancelled: t('ppk.cancelled'), error: t('pgate.error') }, postUrl: (typeof siteUrlBase !== 'undefined' && siteUrlBase ? siteUrlBase : '') + '/' + postSlug } }) %>
Note: See TracChangeset for help on using the changeset viewer.