@@ -11,9 +11,11 @@ export default class extends Controller {
1111 static values = {
1212 requestResultUrl : { type : String , default : '/request' } ,
1313 requestOptionsUrl : { type : String , default : '/request/options' } ,
14+ requestResultField : { type : String , default : null } ,
1415 requestSuccessRedirectUri : String ,
1516 creationResultUrl : { type : String , default : '/creation' } ,
1617 creationOptionsUrl : { type : String , default : '/creation/options' } ,
18+ creationResultField : { type : String , default : null } ,
1719 creationSuccessRedirectUri : String ,
1820 usernameField : { type : String , default : 'username' } ,
1921 displayNameField : { type : String , default : 'displayName' } ,
@@ -32,9 +34,11 @@ export default class extends Controller {
3234
3335 declare readonly requestResultUrlValue : string ;
3436 declare readonly requestOptionsUrlValue : string ;
37+ declare readonly requestResultFieldValue ?: string ;
3538 declare readonly requestSuccessRedirectUriValue ?: string ;
3639 declare readonly creationResultUrlValue : string ;
3740 declare readonly creationOptionsUrlValue : string ;
41+ declare readonly creationResultFieldValue ?: string ;
3842 declare readonly creationSuccessRedirectUriValue ?: string ;
3943 declare readonly usernameFieldValue : string ;
4044 declare readonly displayNameFieldValue : string ;
@@ -49,6 +53,8 @@ export default class extends Controller {
4953 const options = {
5054 requestResultUrl : this . requestResultUrlValue ,
5155 requestOptionsUrl : this . requestOptionsUrlValue ,
56+ requestResultField : this . requestResultFieldValue ?? null ,
57+ creationResultField : this . creationResultFieldValue ?? null ,
5258 requestSuccessRedirectUri : this . requestSuccessRedirectUriValue ?? null ,
5359 creationResultUrl : this . creationResultUrlValue ,
5460 creationOptionsUrl : this . creationOptionsUrlValue ,
@@ -85,6 +91,11 @@ export default class extends Controller {
8591 // @ts -ignore
8692 const authenticatorResponse = await startAuthentication ( { optionsJSON : optionsResponseJson , useBrowserAutofill } ) ;
8793 this . _dispatchEvent ( 'webauthn:authenticator:response' , { response : authenticatorResponse } ) ;
94+ if ( this . requestResultFieldValue && this . element instanceof HTMLFormElement ) {
95+ this . element . querySelector ( this . requestResultFieldValue ) ?. setAttribute ( 'value' , JSON . stringify ( authenticatorResponse ) ) ;
96+ this . element . submit ( ) ;
97+ return ;
98+ }
8899
89100 const assertionResponse = await this . _getAssertionResponse ( authenticatorResponse ) ;
90101 if ( assertionResponse !== false && this . requestSuccessRedirectUriValue ) {
@@ -111,6 +122,11 @@ export default class extends Controller {
111122 // @ts -ignore
112123 const authenticatorResponse = await startRegistration ( { optionsJSON : optionsResponseJson } ) ;
113124 this . _dispatchEvent ( 'webauthn:authenticator:response' , { response : authenticatorResponse } ) ;
125+ if ( this . creationResultFieldValue && this . element instanceof HTMLFormElement ) {
126+ this . element . querySelector ( this . creationResultFieldValue ) ?. setAttribute ( 'value' , JSON . stringify ( authenticatorResponse ) ) ;
127+ this . element . submit ( ) ;
128+ return ;
129+ }
114130
115131 const attestationResponseJSON = await this . _getAttestationResponse ( authenticatorResponse ) ;
116132 if ( attestationResponseJSON !== false && this . creationSuccessRedirectUriValue ) {
0 commit comments