Skip to content

Commit 46c28c2

Browse files
Merge pull request #140 from cedarcode/sr--webauthn-elements--support-turbo-streams
Submit WebAuthn forms with `requestSubmit` so Turbo can intercept
2 parents c139da6 + 211a61d commit 46c28c2

1 file changed

Lines changed: 10 additions & 2 deletions

File tree

app/assets/javascript/devise/webauthn.js

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ export class WebauthnCreateElement extends HTMLElement {
1919
}
2020

2121
this.closest('form').addEventListener('submit', async (event) => {
22+
if (this.dataset.ceremonyCompleted) return;
23+
2224
event.preventDefault();
2325

2426
try {
@@ -28,8 +30,10 @@ export class WebauthnCreateElement extends HTMLElement {
2830

2931
this.querySelector('[data-webauthn-target="response"]').value = await this.stringifyRegistrationCredentialWithGracefullyHandlingAuthenticatorIssues(credential);
3032

31-
this.closest('form').submit();
33+
this.dataset.ceremonyCompleted = "true";
34+
this.closest('form').requestSubmit();
3235
} catch (error) {
36+
delete this.dataset.ceremonyCompleted;
3337
this.handleError(error);
3438
}
3539
});
@@ -100,6 +104,8 @@ export class WebauthnGetElement extends HTMLElement {
100104
}
101105

102106
this.closest('form').addEventListener('submit', async (event) => {
107+
if (this.dataset.ceremonyCompleted) return;
108+
103109
event.preventDefault();
104110

105111
try {
@@ -109,8 +115,10 @@ export class WebauthnGetElement extends HTMLElement {
109115

110116
this.querySelector('[data-webauthn-target="response"]').value = await this.stringifyAuthenticationCredentialWithGracefullyHandlingAuthenticatorIssues(credential);
111117

112-
this.closest('form').submit();
118+
this.dataset.ceremonyCompleted = "true";
119+
this.closest('form').requestSubmit();
113120
} catch (error) {
121+
delete this.dataset.ceremonyCompleted;
114122
this.handleError(error);
115123
}
116124
});

0 commit comments

Comments
 (0)