@adonis-agora/authkit-react
Version:
Frontend ergonomics over AuthKit for AdonisJS + Inertia + React apps: a typed useAuth() hook, role-gating hooks and gating components.
21 lines (20 loc) • 1.17 kB
JavaScript
import { authenticatePasskey, registerPasskey, } from './authenticate.js';
import { submitClassicForm } from './classic_form.js';
function flowFields(response, csrfToken, returnTo) {
const fields = { response };
if (csrfToken)
fields._csrf = csrfToken;
if (returnTo)
fields.return_to = returnTo;
return fields;
}
export async function runPasskeyAssertion(options, deps = {}) {
const { optionsUrl, actionUrl, csrfToken, returnTo } = options;
const assertion = await authenticatePasskey({ optionsUrl, csrfToken }, { fetch: deps.fetch, loadStartAuthentication: deps.loadStartAuthentication });
submitClassicForm({ action: actionUrl, fields: flowFields(assertion, csrfToken, returnTo) }, { document: deps.document });
}
export async function runPasskeyRegistration(options, deps = {}) {
const { optionsUrl, actionUrl, csrfToken, returnTo } = options;
const attestation = await registerPasskey({ optionsUrl, csrfToken }, { fetch: deps.fetch, loadStartRegistration: deps.loadStartRegistration });
submitClassicForm({ action: actionUrl, fields: flowFields(attestation, csrfToken, returnTo) }, { document: deps.document });
}