55 lines
1.2 KiB
Django/Jinja
55 lines
1.2 KiB
Django/Jinja
{% extends 'auth/base.html.j2' %}
|
|
|
|
{% block title %}{{ gettext('Login') }}{% endblock %}
|
|
|
|
|
|
{% block script %}
|
|
<script>
|
|
const options_req = {{ options }};
|
|
const token = "{{ token }}";
|
|
const login_challenge = "{{ login_challenge }}";
|
|
|
|
async function login() {
|
|
const credential = await auth_passkey.sign_in(options_req);
|
|
const response = await fetch("{{ url_for('.passkey_verify') }}", {
|
|
method: "POST",
|
|
headers: {
|
|
"Content-Type": "application/json",
|
|
},
|
|
body: JSON.stringify({
|
|
token,
|
|
credential,
|
|
login_challenge,
|
|
}),
|
|
})
|
|
return await response.json()
|
|
}
|
|
|
|
let form = document.getElementById('webauthn_register_form');
|
|
|
|
form.onsubmit = ev => {
|
|
ev.preventDefault()
|
|
login().then( response => {
|
|
document.location = response.redirect;
|
|
})
|
|
};
|
|
</script>
|
|
{% endblock %}
|
|
|
|
{% block content %}
|
|
|
|
<div class="row">
|
|
{{ render_form(form) }}
|
|
</div>
|
|
<div class="row">
|
|
<form id="webauthn_register_form">
|
|
<button class="btn btn-primary">Login wiht Passkey</button>
|
|
</form>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<a href="{{ url_for('.sign_up') }}" class="btn btn-secondary">Sign Up</a>
|
|
</div>
|
|
{% endblock %}
|
|
|