@okta/okta-auth-js 5.9.0 → 5.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.md +12 -2
  3. package/cjs/OktaAuth.js +25 -12
  4. package/cjs/OktaAuth.js.map +1 -1
  5. package/cjs/OktaUserAgent.js +2 -2
  6. package/cjs/OktaUserAgent.js.map +1 -1
  7. package/cjs/TokenManager.js +24 -2
  8. package/cjs/TokenManager.js.map +1 -1
  9. package/cjs/idx/authenticator/Authenticator.js +14 -0
  10. package/cjs/idx/authenticator/Authenticator.js.map +1 -0
  11. package/cjs/idx/authenticator/OktaPassword.js +31 -0
  12. package/cjs/idx/authenticator/OktaPassword.js.map +1 -0
  13. package/cjs/idx/authenticator/OktaVerifyTotp.js +17 -0
  14. package/cjs/idx/authenticator/OktaVerifyTotp.js.map +1 -0
  15. package/cjs/idx/authenticator/SecurityQuestionEnrollment.js +50 -0
  16. package/cjs/idx/authenticator/SecurityQuestionEnrollment.js.map +1 -0
  17. package/cjs/idx/authenticator/SecurityQuestionVerification.js +31 -0
  18. package/cjs/idx/authenticator/SecurityQuestionVerification.js.map +1 -0
  19. package/cjs/idx/authenticator/VerificationCodeAuthenticator.js +34 -0
  20. package/cjs/idx/authenticator/VerificationCodeAuthenticator.js.map +1 -0
  21. package/cjs/idx/authenticator/getAuthenticator.js +42 -0
  22. package/cjs/idx/authenticator/getAuthenticator.js.map +1 -0
  23. package/cjs/idx/authenticator/index.js +80 -0
  24. package/cjs/idx/authenticator/index.js.map +1 -0
  25. package/cjs/idx/cancel.js +5 -0
  26. package/cjs/idx/cancel.js.map +1 -1
  27. package/cjs/idx/flow/AuthenticationFlow.js +4 -1
  28. package/cjs/idx/flow/AuthenticationFlow.js.map +1 -1
  29. package/cjs/idx/flow/FlowSpecification.js +1 -11
  30. package/cjs/idx/flow/FlowSpecification.js.map +1 -1
  31. package/cjs/idx/flow/RegistrationFlow.js +1 -0
  32. package/cjs/idx/flow/RegistrationFlow.js.map +1 -1
  33. package/cjs/idx/flow/index.js +0 -52
  34. package/cjs/idx/flow/index.js.map +1 -1
  35. package/cjs/idx/index.js +13 -0
  36. package/cjs/idx/index.js.map +1 -1
  37. package/cjs/idx/interact.js +8 -2
  38. package/cjs/idx/interact.js.map +1 -1
  39. package/cjs/idx/poll.js +59 -0
  40. package/cjs/idx/poll.js.map +1 -0
  41. package/cjs/idx/proceed.js.map +1 -1
  42. package/cjs/idx/register.js +14 -3
  43. package/cjs/idx/register.js.map +1 -1
  44. package/cjs/idx/remediate.js +37 -90
  45. package/cjs/idx/remediate.js.map +1 -1
  46. package/cjs/idx/remediators/AuthenticatorEnrollmentData.js +9 -12
  47. package/cjs/idx/remediators/AuthenticatorEnrollmentData.js.map +1 -1
  48. package/cjs/idx/remediators/AuthenticatorVerificationData.js +6 -9
  49. package/cjs/idx/remediators/AuthenticatorVerificationData.js.map +1 -1
  50. package/cjs/idx/remediators/Base/AuthenticatorData.js +43 -32
  51. package/cjs/idx/remediators/Base/AuthenticatorData.js.map +1 -1
  52. package/cjs/idx/remediators/Base/Remediator.js +51 -20
  53. package/cjs/idx/remediators/Base/Remediator.js.map +1 -1
  54. package/cjs/idx/remediators/Base/SelectAuthenticator.js +16 -16
  55. package/cjs/idx/remediators/Base/SelectAuthenticator.js.map +1 -1
  56. package/cjs/idx/remediators/Base/VerifyAuthenticator.js +8 -28
  57. package/cjs/idx/remediators/Base/VerifyAuthenticator.js.map +1 -1
  58. package/{lib/idx/flow/FlowMonitor.d.ts → cjs/idx/remediators/ChallengePoll.js} +16 -13
  59. package/cjs/idx/remediators/ChallengePoll.js.map +1 -0
  60. package/cjs/idx/remediators/EnrollPoll.js +56 -0
  61. package/cjs/idx/remediators/EnrollPoll.js.map +1 -0
  62. package/cjs/idx/remediators/Identify.js +2 -35
  63. package/cjs/idx/remediators/Identify.js.map +1 -1
  64. package/cjs/idx/remediators/SelectAuthenticatorAuthenticate.js +23 -2
  65. package/cjs/idx/remediators/SelectAuthenticatorAuthenticate.js.map +1 -1
  66. package/cjs/idx/remediators/Skip.js +7 -0
  67. package/cjs/idx/remediators/Skip.js.map +1 -1
  68. package/cjs/idx/remediators/index.js +26 -0
  69. package/cjs/idx/remediators/index.js.map +1 -1
  70. package/cjs/idx/run.js +0 -8
  71. package/cjs/idx/run.js.map +1 -1
  72. package/cjs/idx/types/idx-js.js.map +1 -1
  73. package/cjs/idx/types/index.js +2 -1
  74. package/cjs/idx/types/index.js.map +1 -1
  75. package/cjs/types/Token.js.map +1 -1
  76. package/dist/okta-auth-js.min.js +1 -1
  77. package/dist/okta-auth-js.min.js.map +1 -1
  78. package/dist/okta-auth-js.umd.js +1 -1
  79. package/dist/okta-auth-js.umd.js.map +1 -1
  80. package/esm/index.js +1410 -1197
  81. package/esm/index.js.map +1 -1
  82. package/lib/TokenManager.d.ts +2 -0
  83. package/lib/idx/authenticator/Authenticator.d.ts +12 -0
  84. package/lib/idx/authenticator/OktaPassword.d.ts +11 -0
  85. package/lib/idx/authenticator/OktaVerifyTotp.d.ts +9 -0
  86. package/lib/idx/authenticator/SecurityQuestionEnrollment.d.ts +28 -0
  87. package/lib/idx/authenticator/SecurityQuestionVerification.d.ts +14 -0
  88. package/lib/idx/authenticator/VerificationCodeAuthenticator.d.ts +10 -0
  89. package/lib/idx/authenticator/getAuthenticator.d.ts +3 -0
  90. package/lib/idx/authenticator/index.d.ts +6 -0
  91. package/lib/idx/flow/FlowSpecification.d.ts +0 -2
  92. package/lib/idx/flow/index.d.ts +0 -4
  93. package/lib/idx/index.d.ts +1 -0
  94. package/lib/idx/interact.d.ts +1 -0
  95. package/lib/idx/{flow/AuthenticationFlowMonitor.d.ts → poll.d.ts} +3 -5
  96. package/lib/idx/proceed.d.ts +2 -1
  97. package/lib/idx/register.d.ts +1 -1
  98. package/lib/idx/remediators/AuthenticatorEnrollmentData.d.ts +9 -5
  99. package/lib/idx/remediators/AuthenticatorVerificationData.d.ts +0 -1
  100. package/lib/idx/remediators/Base/AuthenticatorData.d.ts +8 -3
  101. package/lib/idx/remediators/Base/Remediator.d.ts +9 -6
  102. package/lib/idx/remediators/Base/SelectAuthenticator.d.ts +5 -4
  103. package/lib/idx/remediators/Base/VerifyAuthenticator.d.ts +8 -4
  104. package/lib/idx/{flow/RegistrationFlowMonitor.d.ts → remediators/ChallengePoll.d.ts} +3 -3
  105. package/lib/idx/{flow/PasswordRecoveryFlowMonitor.d.ts → remediators/EnrollPoll.d.ts} +12 -4
  106. package/lib/idx/remediators/Identify.d.ts +0 -3
  107. package/lib/idx/remediators/SelectAuthenticatorAuthenticate.d.ts +6 -2
  108. package/lib/idx/remediators/Skip.d.ts +3 -0
  109. package/lib/idx/remediators/index.d.ts +2 -0
  110. package/lib/idx/run.d.ts +1 -2
  111. package/lib/idx/types/idx-js.d.ts +49 -1
  112. package/lib/idx/types/index.d.ts +8 -2
  113. package/lib/types/OktaAuthOptions.d.ts +1 -0
  114. package/lib/types/Token.d.ts +1 -0
  115. package/lib/types/api.d.ts +4 -2
  116. package/package.json +6 -9
  117. package/cjs/idx/flow/AuthenticationFlowMonitor.js +0 -45
  118. package/cjs/idx/flow/AuthenticationFlowMonitor.js.map +0 -1
  119. package/cjs/idx/flow/FlowMonitor.js +0 -69
  120. package/cjs/idx/flow/FlowMonitor.js.map +0 -1
  121. package/cjs/idx/flow/PasswordRecoveryFlowMonitor.js +0 -55
  122. package/cjs/idx/flow/PasswordRecoveryFlowMonitor.js.map +0 -1
  123. package/cjs/idx/flow/RegistrationFlowMonitor.js +0 -35
  124. package/cjs/idx/flow/RegistrationFlowMonitor.js.map +0 -1
@@ -22,20 +22,15 @@ var _util = require("./util");
22
22
  * See the License for the specific language governing permissions and limitations under the License.
23
23
  */
24
24
  class AuthenticatorEnrollmentData extends _AuthenticatorData.AuthenticatorData {
25
- canRemediate() {
26
- const authenticator = this.getAuthenticatorFromValues();
27
- return !!(authenticator && authenticator.methodType && authenticator.phoneNumber);
28
- }
29
-
30
25
  mapAuthenticator() {
31
- const authenticatorFromValues = this.getAuthenticatorFromValues();
26
+ const authenticatorData = this.getAuthenticatorData();
32
27
  const authenticatorFromRemediation = (0, _util.getAuthenticatorFromRemediation)(this.remediation);
33
28
  return {
34
29
  id: authenticatorFromRemediation.form.value.find(({
35
30
  name
36
31
  }) => name === 'id').value,
37
- methodType: authenticatorFromValues.methodType,
38
- phoneNumber: authenticatorFromValues.phoneNumber
32
+ methodType: authenticatorData.methodType,
33
+ phoneNumber: authenticatorData.phoneNumber
39
34
  };
40
35
  }
41
36
 
@@ -47,22 +42,24 @@ class AuthenticatorEnrollmentData extends _AuthenticatorData.AuthenticatorData {
47
42
  }, {
48
43
  name: 'phoneNumber',
49
44
  type: 'string',
50
- required: true
45
+ required: true,
46
+ label: 'Phone Number'
51
47
  }];
52
48
  }
53
49
 
54
- mapAuthenticatorFromValues(authenticator) {
50
+ mapAuthenticatorDataFromValues(data) {
55
51
  // get mapped authenticator from base class
56
- authenticator = super.mapAuthenticatorFromValues(authenticator); // add phoneNumber to authenticator if it exists in values
52
+ data = super.mapAuthenticatorDataFromValues(data); // add phoneNumber to authenticator if it exists in values
57
53
 
58
54
  const {
59
55
  phoneNumber
60
56
  } = this.values;
61
- return { ...authenticator,
57
+ data = { ...(data && data),
62
58
  ...(phoneNumber && {
63
59
  phoneNumber
64
60
  })
65
61
  };
62
+ return data.phoneNumber && data.methodType ? data : null;
66
63
  }
67
64
 
68
65
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../lib/idx/remediators/AuthenticatorEnrollmentData.ts"],"names":["AuthenticatorEnrollmentData","AuthenticatorData","canRemediate","authenticator","getAuthenticatorFromValues","methodType","phoneNumber","mapAuthenticator","authenticatorFromValues","authenticatorFromRemediation","remediation","id","form","value","find","name","getInputAuthenticator","type","required","mapAuthenticatorFromValues","values"],"mappings":";;;;;;;;AAaA;;AACA;;AAdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAWO,MAAMA,2BAAN,SAA0CC,oCAA1C,CAA4D;AAKjEC,EAAAA,YAAY,GAAG;AACb,UAAMC,aAAa,GAAG,KAAKC,0BAAL,EAAtB;AACA,WAAO,CAAC,EAAED,aAAa,IAAIA,aAAa,CAACE,UAA/B,IAA6CF,aAAa,CAACG,WAA7D,CAAR;AACD;;AAEDC,EAAAA,gBAAgB,GAAG;AACjB,UAAMC,uBAAuB,GAAG,KAAKJ,0BAAL,EAAhC;AACA,UAAMK,4BAA4B,GAAG,2CAAgC,KAAKC,WAArC,CAArC;AACA,WAAO;AACLC,MAAAA,EAAE,EAAEF,4BAA4B,CAACG,IAA7B,CAAkCC,KAAlC,CACDC,IADC,CACI,CAAC;AAAEC,QAAAA;AAAF,OAAD,KAAcA,IAAI,KAAK,IAD3B,EACiCF,KAFhC;AAGLR,MAAAA,UAAU,EAAEG,uBAAuB,CAACH,UAH/B;AAILC,MAAAA,WAAW,EAAEE,uBAAuB,CAACF;AAJhC,KAAP;AAMD;;AAEDU,EAAAA,qBAAqB,GAAG;AACtB,WAAO,CACL;AAAED,MAAAA,IAAI,EAAE,YAAR;AAAsBE,MAAAA,IAAI,EAAE,QAA5B;AAAsCC,MAAAA,QAAQ,EAAE;AAAhD,KADK,EAEL;AAAEH,MAAAA,IAAI,EAAE,aAAR;AAAuBE,MAAAA,IAAI,EAAE,QAA7B;AAAuCC,MAAAA,QAAQ,EAAE;AAAjD,KAFK,CAAP;AAID;;AAESC,EAAAA,0BAA0B,CAAChB,aAAD,EAA+C;AACjF;AACAA,IAAAA,aAAa,GAAG,MAAMgB,0BAAN,CAAiChB,aAAjC,CAAhB,CAFiF,CAIjF;;AACA,UAAM;AAAEG,MAAAA;AAAF,QAAkB,KAAKc,MAA7B;AACA,WAAO,EACL,GAAGjB,aADE;AAEL,UAAIG,WAAW,IAAI;AAAEA,QAAAA;AAAF,OAAnB;AAFK,KAAP;AAID;;AAtCgE;;;8BAAtDN,2B,qBACc,+B","sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { AuthenticatorData, AuthenticatorDataValues } from './Base/AuthenticatorData';\nimport { getAuthenticatorFromRemediation } from './util';\nimport { Authenticator } from '../types';\n\nexport type AuthenticatorEnrollmentDataValues = AuthenticatorDataValues & {\n phoneNumber?: string;\n resend?: boolean; // resend is not a remediator value - revise when IdxResponse structure is updated\n}\nexport class AuthenticatorEnrollmentData extends AuthenticatorData {\n static remediationName = 'authenticator-enrollment-data';\n\n values: AuthenticatorEnrollmentDataValues;\n\n canRemediate() {\n const authenticator = this.getAuthenticatorFromValues();\n return !!(authenticator && authenticator.methodType && authenticator.phoneNumber);\n }\n\n mapAuthenticator() {\n const authenticatorFromValues = this.getAuthenticatorFromValues();\n const authenticatorFromRemediation = getAuthenticatorFromRemediation(this.remediation);\n return { \n id: authenticatorFromRemediation.form.value\n .find(({ name }) => name === 'id').value,\n methodType: authenticatorFromValues.methodType,\n phoneNumber: authenticatorFromValues.phoneNumber,\n };\n }\n\n getInputAuthenticator() {\n return [\n { name: 'methodType', type: 'string', required: true },\n { name: 'phoneNumber', type: 'string', required: true },\n ];\n }\n\n protected mapAuthenticatorFromValues(authenticator?: Authenticator): Authenticator {\n // get mapped authenticator from base class\n authenticator = super.mapAuthenticatorFromValues(authenticator);\n\n // add phoneNumber to authenticator if it exists in values\n const { phoneNumber } = this.values;\n return { \n ...authenticator, \n ...(phoneNumber && { phoneNumber }) \n };\n }\n\n}\n"],"file":"AuthenticatorEnrollmentData.js"}
1
+ {"version":3,"sources":["../../../../lib/idx/remediators/AuthenticatorEnrollmentData.ts"],"names":["AuthenticatorEnrollmentData","AuthenticatorData","mapAuthenticator","authenticatorData","getAuthenticatorData","authenticatorFromRemediation","remediation","id","form","value","find","name","methodType","phoneNumber","getInputAuthenticator","type","required","label","mapAuthenticatorDataFromValues","data","values"],"mappings":";;;;;;;;AAaA;;AACA;;AAdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAUO,MAAMA,2BAAN,SAA0CC,oCAA1C,CAA4D;AAKjEC,EAAAA,gBAAgB,GAAG;AACjB,UAAMC,iBAAiB,GAAG,KAAKC,oBAAL,EAA1B;AACA,UAAMC,4BAA4B,GAAG,2CAAgC,KAAKC,WAArC,CAArC;AACA,WAAO;AACLC,MAAAA,EAAE,EAAEF,4BAA4B,CAACG,IAA7B,CAAkCC,KAAlC,CACDC,IADC,CACI,CAAC;AAAEC,QAAAA;AAAF,OAAD,KAAcA,IAAI,KAAK,IAD3B,EACiCF,KAFhC;AAGLG,MAAAA,UAAU,EAAET,iBAAiB,CAACS,UAHzB;AAILC,MAAAA,WAAW,EAAEV,iBAAiB,CAACU;AAJ1B,KAAP;AAMD;;AAEDC,EAAAA,qBAAqB,GAAG;AACtB,WAAO,CACL;AAAEH,MAAAA,IAAI,EAAE,YAAR;AAAsBI,MAAAA,IAAI,EAAE,QAA5B;AAAsCC,MAAAA,QAAQ,EAAE;AAAhD,KADK,EAEL;AAAEL,MAAAA,IAAI,EAAE,aAAR;AAAuBI,MAAAA,IAAI,EAAE,QAA7B;AAAuCC,MAAAA,QAAQ,EAAE,IAAjD;AAAuDC,MAAAA,KAAK,EAAE;AAA9D,KAFK,CAAP;AAID;;AAESC,EAAAA,8BAA8B,CAACC,IAAD,EAAQ;AAC9C;AACAA,IAAAA,IAAI,GAAG,MAAMD,8BAAN,CAAqCC,IAArC,CAAP,CAF8C,CAG9C;;AACA,UAAM;AAAEN,MAAAA;AAAF,QAAkB,KAAKO,MAA7B;AACAD,IAAAA,IAAI,GAAG,EACL,IAAIA,IAAI,IAAIA,IAAZ,CADK;AAEL,UAAIN,WAAW,IAAI;AAAEA,QAAAA;AAAF,OAAnB;AAFK,KAAP;AAKA,WAAQM,IAAI,CAACN,WAAL,IAAoBM,IAAI,CAACP,UAA1B,GAAwCO,IAAxC,GAA+C,IAAtD;AACD;;AAlCgE;;;8BAAtDnB,2B,qBACc,+B","sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { AuthenticatorData, AuthenticatorDataValues } from './Base/AuthenticatorData';\nimport { getAuthenticatorFromRemediation } from './util';\n\nexport type AuthenticatorEnrollmentDataValues = AuthenticatorDataValues & {\n phoneNumber?: string;\n resend?: boolean; // resend is not a remediator value - revise when IdxResponse structure is updated\n}\nexport class AuthenticatorEnrollmentData extends AuthenticatorData {\n static remediationName = 'authenticator-enrollment-data';\n\n values: AuthenticatorEnrollmentDataValues;\n\n mapAuthenticator() {\n const authenticatorData = this.getAuthenticatorData();\n const authenticatorFromRemediation = getAuthenticatorFromRemediation(this.remediation);\n return { \n id: authenticatorFromRemediation.form.value\n .find(({ name }) => name === 'id').value,\n methodType: authenticatorData.methodType,\n phoneNumber: authenticatorData.phoneNumber,\n };\n }\n\n getInputAuthenticator() {\n return [\n { name: 'methodType', type: 'string', required: true },\n { name: 'phoneNumber', type: 'string', required: true, label: 'Phone Number' },\n ];\n }\n\n protected mapAuthenticatorDataFromValues(data?) {\n // get mapped authenticator from base class\n data = super.mapAuthenticatorDataFromValues(data);\n // add phoneNumber to authenticator if it exists in values\n const { phoneNumber } = this.values;\n data = { \n ...(data && data), \n ...(phoneNumber && { phoneNumber }) \n };\n\n return (data.phoneNumber && data.methodType) ? data : null;\n }\n\n}\n"],"file":"AuthenticatorEnrollmentData.js"}
@@ -20,22 +20,19 @@ var _AuthenticatorData = require("./Base/AuthenticatorData");
20
20
  * See the License for the specific language governing permissions and limitations under the License.
21
21
  */
22
22
  class AuthenticatorVerificationData extends _AuthenticatorData.AuthenticatorData {
23
- canRemediate() {
24
- const authenticator = this.getAuthenticatorFromValues();
25
- return !!(authenticator && authenticator.methodType);
26
- }
27
-
28
23
  mapAuthenticator() {
24
+ var _authenticatorFromRem;
25
+
26
+ const authenticatorData = this.getAuthenticatorData();
29
27
  const authenticatorFromRemediation = this.getAuthenticatorFromRemediation();
30
- const authenticatorFromValues = this.getAuthenticatorFromValues();
31
28
  return {
32
29
  id: authenticatorFromRemediation.form.value.find(({
33
30
  name
34
31
  }) => name === 'id').value,
35
- enrollmentId: authenticatorFromRemediation.form.value.find(({
32
+ enrollmentId: (_authenticatorFromRem = authenticatorFromRemediation.form.value.find(({
36
33
  name
37
- }) => name === 'enrollmentId').value,
38
- methodType: authenticatorFromValues.methodType
34
+ }) => name === 'enrollmentId')) === null || _authenticatorFromRem === void 0 ? void 0 : _authenticatorFromRem.value,
35
+ methodType: authenticatorData.methodType
39
36
  };
40
37
  }
41
38
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../lib/idx/remediators/AuthenticatorVerificationData.ts"],"names":["AuthenticatorVerificationData","AuthenticatorData","canRemediate","authenticator","getAuthenticatorFromValues","methodType","mapAuthenticator","authenticatorFromRemediation","getAuthenticatorFromRemediation","authenticatorFromValues","id","form","value","find","name","enrollmentId","getInputAuthenticator","options","type","required","inputs"],"mappings":";;;;;;;;AAaA;;AAbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAOO,MAAMA,6BAAN,SAA4CC,oCAA5C,CAA8D;AAKnEC,EAAAA,YAAY,GAAG;AACb,UAAMC,aAAa,GAAG,KAAKC,0BAAL,EAAtB;AACA,WAAO,CAAC,EAAED,aAAa,IAAIA,aAAa,CAACE,UAAjC,CAAR;AACD;;AAEDC,EAAAA,gBAAgB,GAAG;AACjB,UAAMC,4BAA4B,GAAG,KAAKC,+BAAL,EAArC;AACA,UAAMC,uBAAuB,GAAG,KAAKL,0BAAL,EAAhC;AACA,WAAO;AACLM,MAAAA,EAAE,EAAEH,4BAA4B,CAACI,IAA7B,CAAkCC,KAAlC,CACDC,IADC,CACI,CAAC;AAAEC,QAAAA;AAAF,OAAD,KAAcA,IAAI,KAAK,IAD3B,EACiCF,KAFhC;AAGLG,MAAAA,YAAY,EAAER,4BAA4B,CAACI,IAA7B,CAAkCC,KAAlC,CACXC,IADW,CACN,CAAC;AAAEC,QAAAA;AAAF,OAAD,KAAcA,IAAI,KAAK,cADjB,EACiCF,KAJ1C;AAKLP,MAAAA,UAAU,EAAEI,uBAAuB,CAACJ;AAL/B,KAAP;AAOD;;AAEDW,EAAAA,qBAAqB,GAAG;AACtB,UAAMb,aAAa,GAAG,KAAKK,+BAAL,EAAtB;AACA,UAAMH,UAAU,GAAGF,aAAa,CAACQ,IAAd,CAAmBC,KAAnB,CAAyBC,IAAzB,CAA8B,CAAC;AAAEC,MAAAA;AAAF,KAAD,KAAcA,IAAI,KAAK,YAArD,CAAnB,CAFsB,CAGtB;;AACA,QAAIT,UAAU,IAAIA,UAAU,CAACY,OAA7B,EAAsC;AACpC,aAAO;AAAEH,QAAAA,IAAI,EAAE,YAAR;AAAsBI,QAAAA,IAAI,EAAE,QAA5B;AAAsCC,QAAAA,QAAQ,EAAE;AAAhD,OAAP;AACD,KANqB,CAOtB;;;AACA,UAAMC,MAAM,GAAG,CAAC,GAAGjB,aAAa,CAACQ,IAAd,CAAmBC,KAAvB,CAAf;AACA,WAAOQ,MAAP;AACD;;AAhCkE;;;8BAAxDpB,6B,qBACc,iC","sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { AuthenticatorData, AuthenticatorDataValues } from './Base/AuthenticatorData';\n\nexport type AuthenticatorVerificationDataValues = AuthenticatorDataValues;\n\nexport class AuthenticatorVerificationData extends AuthenticatorData {\n static remediationName = 'authenticator-verification-data';\n\n values: AuthenticatorVerificationDataValues;\n\n canRemediate() {\n const authenticator = this.getAuthenticatorFromValues();\n return !!(authenticator && authenticator.methodType);\n }\n\n mapAuthenticator() {\n const authenticatorFromRemediation = this.getAuthenticatorFromRemediation();\n const authenticatorFromValues = this.getAuthenticatorFromValues();\n return { \n id: authenticatorFromRemediation.form.value\n .find(({ name }) => name === 'id').value,\n enrollmentId: authenticatorFromRemediation.form.value\n .find(({ name }) => name === 'enrollmentId').value,\n methodType: authenticatorFromValues.methodType,\n };\n }\n\n getInputAuthenticator() {\n const authenticator = this.getAuthenticatorFromRemediation();\n const methodType = authenticator.form.value.find(({ name }) => name === 'methodType');\n // if has methodType in form, let user select the methodType\n if (methodType && methodType.options) {\n return { name: 'methodType', type: 'string', required: true };\n }\n // no methodType, then return form values\n const inputs = [...authenticator.form.value];\n return inputs;\n }\n\n}\n"],"file":"AuthenticatorVerificationData.js"}
1
+ {"version":3,"sources":["../../../../lib/idx/remediators/AuthenticatorVerificationData.ts"],"names":["AuthenticatorVerificationData","AuthenticatorData","mapAuthenticator","authenticatorData","getAuthenticatorData","authenticatorFromRemediation","getAuthenticatorFromRemediation","id","form","value","find","name","enrollmentId","methodType","getInputAuthenticator","authenticator","options","type","required","inputs"],"mappings":";;;;;;;;AAaA;;AAbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAOO,MAAMA,6BAAN,SAA4CC,oCAA5C,CAA8D;AAKnEC,EAAAA,gBAAgB,GAAG;AAAA;;AACjB,UAAMC,iBAAiB,GAAG,KAAKC,oBAAL,EAA1B;AACA,UAAMC,4BAA4B,GAAG,KAAKC,+BAAL,EAArC;AACA,WAAO;AACLC,MAAAA,EAAE,EAAEF,4BAA4B,CAACG,IAA7B,CAAkCC,KAAlC,CACDC,IADC,CACI,CAAC;AAAEC,QAAAA;AAAF,OAAD,KAAcA,IAAI,KAAK,IAD3B,EACiCF,KAFhC;AAGLG,MAAAA,YAAY,2BAAEP,4BAA4B,CAACG,IAA7B,CAAkCC,KAAlC,CACXC,IADW,CACN,CAAC;AAAEC,QAAAA;AAAF,OAAD,KAAcA,IAAI,KAAK,cADjB,CAAF,0DAAE,sBACkCF,KAJ3C;AAKLI,MAAAA,UAAU,EAAEV,iBAAiB,CAACU;AALzB,KAAP;AAOD;;AAEDC,EAAAA,qBAAqB,GAAG;AACtB,UAAMC,aAAa,GAAG,KAAKT,+BAAL,EAAtB;AACA,UAAMO,UAAU,GAAGE,aAAa,CAACP,IAAd,CAAmBC,KAAnB,CAAyBC,IAAzB,CAA8B,CAAC;AAAEC,MAAAA;AAAF,KAAD,KAAcA,IAAI,KAAK,YAArD,CAAnB,CAFsB,CAGtB;;AACA,QAAIE,UAAU,IAAIA,UAAU,CAACG,OAA7B,EAAsC;AACpC,aAAO;AAAEL,QAAAA,IAAI,EAAE,YAAR;AAAsBM,QAAAA,IAAI,EAAE,QAA5B;AAAsCC,QAAAA,QAAQ,EAAE;AAAhD,OAAP;AACD,KANqB,CAOtB;;;AACA,UAAMC,MAAM,GAAG,CAAC,GAAGJ,aAAa,CAACP,IAAd,CAAmBC,KAAvB,CAAf;AACA,WAAOU,MAAP;AACD;;AA3BkE;;;8BAAxDnB,6B,qBACc,iC","sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { AuthenticatorData, AuthenticatorDataValues } from './Base/AuthenticatorData';\n\nexport type AuthenticatorVerificationDataValues = AuthenticatorDataValues;\n\nexport class AuthenticatorVerificationData extends AuthenticatorData {\n static remediationName = 'authenticator-verification-data';\n\n values: AuthenticatorVerificationDataValues;\n\n mapAuthenticator() {\n const authenticatorData = this.getAuthenticatorData();\n const authenticatorFromRemediation = this.getAuthenticatorFromRemediation();\n return { \n id: authenticatorFromRemediation.form.value\n .find(({ name }) => name === 'id').value,\n enrollmentId: authenticatorFromRemediation.form.value\n .find(({ name }) => name === 'enrollmentId')?.value,\n methodType: authenticatorData.methodType,\n };\n }\n\n getInputAuthenticator() {\n const authenticator = this.getAuthenticatorFromRemediation();\n const methodType = authenticator.form.value.find(({ name }) => name === 'methodType');\n // if has methodType in form, let user select the methodType\n if (methodType && methodType.options) {\n return { name: 'methodType', type: 'string', required: true };\n }\n // no methodType, then return form values\n const inputs = [...authenticator.form.value];\n return inputs;\n }\n\n}\n"],"file":"AuthenticatorVerificationData.js"}
@@ -22,32 +22,45 @@ var _Remediator = require("./Remediator");
22
22
  // Base class - DO NOT expose static remediationName
23
23
  class AuthenticatorData extends _Remediator.Remediator {
24
24
  constructor(remediation, values = {}) {
25
- super(remediation, values); // Unify authenticator input type
25
+ super(remediation, values); // set before other data calculation
26
26
 
27
27
  (0, _defineProperty2.default)(this, "map", {
28
28
  'authenticator': []
29
29
  });
30
- const {
31
- authenticators
32
- } = this.values;
33
- const authenticatorKey = this.getAuthenticator().key;
34
- const authenticator = authenticators === null || authenticators === void 0 ? void 0 : authenticators.find(authenticator => authenticator.key === authenticatorKey);
35
-
36
- if (authenticator) {
37
- // map
38
- this.values.authenticators = authenticators.map(authenticator => {
39
- if (authenticatorKey === authenticator.type) {
40
- return this.mapAuthenticatorFromValues(authenticator);
30
+ this.authenticator = this.getAuthenticator();
31
+ this.formatAuthenticatorData();
32
+ }
33
+
34
+ formatAuthenticatorData() {
35
+ const authenticatorData = this.getAuthenticatorData();
36
+
37
+ if (authenticatorData) {
38
+ this.values.authenticatorsData = this.values.authenticatorsData.map(data => {
39
+ if (data.key === this.authenticator.key) {
40
+ return this.mapAuthenticatorDataFromValues(data);
41
41
  }
42
42
 
43
- return authenticator;
43
+ return data;
44
44
  });
45
45
  } else {
46
- // add
47
- this.values.authenticators = [...authenticators, this.mapAuthenticatorFromValues()];
46
+ const data = this.mapAuthenticatorDataFromValues();
47
+
48
+ if (data) {
49
+ this.values.authenticatorsData.push(data);
50
+ }
48
51
  }
49
52
  }
50
53
 
54
+ getAuthenticatorData() {
55
+ return this.values.authenticatorsData.find(({
56
+ key
57
+ }) => key === this.authenticator.key);
58
+ }
59
+
60
+ canRemediate() {
61
+ return this.values.authenticatorsData.some(data => data.key === this.authenticator.key);
62
+ }
63
+
51
64
  getNextStep() {
52
65
  const common = super.getNextStep();
53
66
  const options = this.getMethodTypes();
@@ -56,32 +69,21 @@ class AuthenticatorData extends _Remediator.Remediator {
56
69
  options
57
70
  })
58
71
  };
59
- } // Grab authenticator from authenticators list
60
-
61
-
62
- getAuthenticatorFromValues() {
63
- if (!this.values.authenticators) {
64
- return null;
65
- }
66
-
67
- const authenticatorKey = this.getAuthenticator().key;
68
- const authenticator = this.values.authenticators.find(authenticator => authenticator.key === authenticatorKey);
69
- return authenticator;
70
72
  }
71
73
 
72
- mapAuthenticatorFromValues(authenticator) {
73
- // add methodType to authenticator if it exists in values
74
- const key = this.getAuthenticator().key;
74
+ mapAuthenticatorDataFromValues(authenticatorData) {
75
+ // add methodType to authenticatorData if it exists in values
75
76
  const {
76
77
  methodType
77
78
  } = this.values;
78
- return {
79
- key,
80
- ...(authenticator && authenticator),
79
+ const data = {
80
+ key: this.authenticator.key,
81
+ ...(authenticatorData && authenticatorData),
81
82
  ...(methodType && {
82
83
  methodType
83
84
  })
84
85
  };
86
+ return data.methodType ? data : null;
85
87
  }
86
88
 
87
89
  getAuthenticatorFromRemediation() {
@@ -100,6 +102,15 @@ class AuthenticatorData extends _Remediator.Remediator {
100
102
  }) => name === 'methodType')) === null || _authenticator$form$v === void 0 ? void 0 : _authenticator$form$v.options;
101
103
  }
102
104
 
105
+ getValuesAfterProceed() {
106
+ this.values = super.getValuesAfterProceed(); // remove used authenticatorData
107
+
108
+ const authenticatorsData = this.values.authenticatorsData.filter(data => data.key !== this.authenticator.key);
109
+ return { ...this.values,
110
+ authenticatorsData
111
+ };
112
+ }
113
+
103
114
  }
104
115
 
105
116
  exports.AuthenticatorData = AuthenticatorData;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../lib/idx/remediators/Base/AuthenticatorData.ts"],"names":["AuthenticatorData","Remediator","constructor","remediation","values","authenticators","authenticatorKey","getAuthenticator","key","authenticator","find","map","type","mapAuthenticatorFromValues","getNextStep","common","options","getMethodTypes","getAuthenticatorFromValues","methodType","getAuthenticatorFromRemediation","value","name","form"],"mappings":";;;;;;;;AAaA;;AAbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAWA;AACO,MAAMA,iBAAN,SAAgCC,sBAAhC,CAA2C;AAQhDC,EAAAA,WAAW,CAACC,WAAD,EAA8BC,MAA+B,GAAG,EAAhE,EAAoE;AAC7E,UAAMD,WAAN,EAAmBC,MAAnB,EAD6E,CAG7E;;AAH6E,+CANzE;AACJ,uBAAiB;AADb,KAMyE;AAI7E,UAAM;AAAEC,MAAAA;AAAF,QAAqB,KAAKD,MAAhC;AACA,UAAME,gBAAgB,GAAG,KAAKC,gBAAL,GAAwBC,GAAjD;AACA,UAAMC,aAAa,GAAIJ,cAAJ,aAAIA,cAAJ,uBAAIA,cAAD,CAChBK,IADgB,CACXD,aAAa,IAAIA,aAAa,CAACD,GAAd,KAAsBF,gBAD5B,CAAtB;;AAEA,QAAIG,aAAJ,EAAmB;AACjB;AACA,WAAKL,MAAL,CAAYC,cAAZ,GAA6BA,cAAc,CAACM,GAAf,CAAmBF,aAAa,IAAI;AAC/D,YAAIH,gBAAgB,KAAKG,aAAa,CAACG,IAAvC,EAA6C;AAC3C,iBAAO,KAAKC,0BAAL,CAAgCJ,aAAhC,CAAP;AACD;;AACD,eAAOA,aAAP;AACD,OAL4B,CAA7B;AAMD,KARD,MAQO;AACL;AACA,WAAKL,MAAL,CAAYC,cAAZ,GAA6B,CAC3B,GAAGA,cADwB,EAE3B,KAAKQ,0BAAL,EAF2B,CAA7B;AAID;AACF;;AAEDC,EAAAA,WAAW,GAAG;AACZ,UAAMC,MAAM,GAAG,MAAMD,WAAN,EAAf;AACA,UAAME,OAAO,GAAG,KAAKC,cAAL,EAAhB;AACA,WAAO,EACL,GAAGF,MADE;AAEL,UAAIC,OAAO,IAAI;AAAEA,QAAAA;AAAF,OAAf;AAFK,KAAP;AAID,GAxC+C,CA0ChD;;;AACUE,EAAAA,0BAA0B,GAAkB;AACpD,QAAI,CAAC,KAAKd,MAAL,CAAYC,cAAjB,EAAiC;AAC/B,aAAO,IAAP;AACD;;AAED,UAAMC,gBAAgB,GAAG,KAAKC,gBAAL,GAAwBC,GAAjD;AACA,UAAMC,aAAa,GAAI,KAAKL,MAAL,CAAYC,cAAb,CACnBK,IADmB,CACdD,aAAa,IAAIA,aAAa,CAACD,GAAd,KAAsBF,gBADzB,CAAtB;AAEA,WAAOG,aAAP;AACD;;AAESI,EAAAA,0BAA0B,CAACJ,aAAD,EAA+C;AACjF;AACA,UAAMD,GAAG,GAAG,KAAKD,gBAAL,GAAwBC,GAApC;AACA,UAAM;AAAEW,MAAAA;AAAF,QAAiB,KAAKf,MAA5B;AACA,WAAO;AACLI,MAAAA,GADK;AAEL,UAAIC,aAAa,IAAIA,aAArB,CAFK;AAGL,UAAIU,UAAU,IAAI;AAAEA,QAAAA;AAAF,OAAlB;AAHK,KAAP;AAKD;;AAESC,EAAAA,+BAA+B,GAAwB;AAC/D,UAAMX,aAAa,GAAG,KAAKN,WAAL,CAAiBkB,KAAjB,CACnBX,IADmB,CACd,CAAC;AAAEY,MAAAA;AAAF,KAAD,KAAcA,IAAI,KAAK,eADT,CAAtB;AAEA,WAAOb,aAAP;AACD;;AAEOQ,EAAAA,cAAc,GAAgB;AAAA;;AACpC,UAAMR,aAAkC,GAAG,KAAKW,+BAAL,EAA3C;AACA,oCAAOX,aAAa,CAACc,IAAd,CAAmBF,KAAnB,CAAyBX,IAAzB,CAA8B,CAAC;AAAEY,MAAAA;AAAF,KAAD,KAAcA,IAAI,KAAK,YAArD,CAAP,0DAAO,sBAAoEN,OAA3E;AACD;;AA1E+C","sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator, RemediationValues } from './Remediator';\nimport { Authenticator } from '../../types';\nimport { IdxRemediationValue, IdxOption, IdxRemediation } from '../../types/idx-js';\n\nexport type AuthenticatorDataValues = RemediationValues & {\n methodType?: string;\n};\n\n// Base class - DO NOT expose static remediationName\nexport class AuthenticatorData extends Remediator {\n\n map = {\n 'authenticator': []\n };\n\n values: AuthenticatorDataValues;\n\n constructor(remediation: IdxRemediation, values: AuthenticatorDataValues = {}) {\n super(remediation, values);\n\n // Unify authenticator input type\n const { authenticators } = this.values;\n const authenticatorKey = this.getAuthenticator().key;\n const authenticator = (authenticators as Authenticator[])\n ?.find(authenticator => authenticator.key === authenticatorKey);\n if (authenticator) {\n // map\n this.values.authenticators = authenticators.map(authenticator => {\n if (authenticatorKey === authenticator.type) {\n return this.mapAuthenticatorFromValues(authenticator);\n }\n return authenticator;\n });\n } else {\n // add\n this.values.authenticators = [\n ...authenticators, \n this.mapAuthenticatorFromValues()\n ] as Authenticator[];\n }\n }\n\n getNextStep() {\n const common = super.getNextStep();\n const options = this.getMethodTypes();\n return { \n ...common, \n ...(options && { options }) \n };\n }\n\n // Grab authenticator from authenticators list\n protected getAuthenticatorFromValues(): Authenticator {\n if (!this.values.authenticators) {\n return null;\n }\n\n const authenticatorKey = this.getAuthenticator().key;\n const authenticator = (this.values.authenticators as Authenticator[])\n .find(authenticator => authenticator.key === authenticatorKey);\n return authenticator;\n }\n\n protected mapAuthenticatorFromValues(authenticator?: Authenticator): Authenticator {\n // add methodType to authenticator if it exists in values\n const key = this.getAuthenticator().key;\n const { methodType } = this.values;\n return { \n key, \n ...(authenticator && authenticator),\n ...(methodType && { methodType }) \n };\n }\n\n protected getAuthenticatorFromRemediation(): IdxRemediationValue {\n const authenticator = this.remediation.value\n .find(({ name }) => name === 'authenticator');\n return authenticator;\n }\n\n private getMethodTypes(): IdxOption[] {\n const authenticator: IdxRemediationValue = this.getAuthenticatorFromRemediation();\n return authenticator.form.value.find(({ name }) => name === 'methodType')?.options;\n }\n}\n"],"file":"AuthenticatorData.js"}
1
+ {"version":3,"sources":["../../../../../lib/idx/remediators/Base/AuthenticatorData.ts"],"names":["AuthenticatorData","Remediator","constructor","remediation","values","authenticator","getAuthenticator","formatAuthenticatorData","authenticatorData","getAuthenticatorData","authenticatorsData","map","data","key","mapAuthenticatorDataFromValues","push","find","canRemediate","some","getNextStep","common","options","getMethodTypes","methodType","getAuthenticatorFromRemediation","value","name","form","getValuesAfterProceed","filter"],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator, RemediationValues } from './Remediator';\nimport { IdxRemediationValue, IdxOption, IdxRemediation } from '../../types/idx-js';\nimport { Authenticator } from '../../types';\n\nexport type AuthenticatorDataValues = RemediationValues & {\n methodType?: string;\n};\n\n// Base class - DO NOT expose static remediationName\nexport class AuthenticatorData extends Remediator {\n\n map = {\n 'authenticator': []\n };\n\n values: AuthenticatorDataValues;\n authenticator: Authenticator;\n\n constructor(remediation: IdxRemediation, values: AuthenticatorDataValues = {}) {\n super(remediation, values);\n\n // set before other data calculation\n this.authenticator = this.getAuthenticator();\n\n this.formatAuthenticatorData();\n }\n\n protected formatAuthenticatorData() {\n const authenticatorData = this.getAuthenticatorData();\n if (authenticatorData) {\n this.values.authenticatorsData = this.values.authenticatorsData.map(data => {\n if (data.key === this.authenticator.key) {\n return this.mapAuthenticatorDataFromValues(data);\n }\n return data;\n });\n } else {\n const data = this.mapAuthenticatorDataFromValues();\n if (data) {\n this.values.authenticatorsData.push(data);\n }\n }\n }\n\n protected getAuthenticatorData() {\n return this.values.authenticatorsData\n .find(({ key }) => key === this.authenticator.key);\n }\n\n canRemediate() {\n return this.values.authenticatorsData\n .some(data => data.key === this.authenticator.key);\n }\n\n getNextStep() {\n const common = super.getNextStep();\n const options = this.getMethodTypes();\n return { \n ...common, \n ...(options && { options }) \n };\n }\n\n protected mapAuthenticatorDataFromValues(authenticatorData?) {\n // add methodType to authenticatorData if it exists in values\n const { methodType } = this.values;\n const data = { \n key: this.authenticator.key, \n ...(authenticatorData && authenticatorData),\n ...(methodType && { methodType }) \n };\n\n return data.methodType ? data : null;\n }\n\n protected getAuthenticatorFromRemediation(): IdxRemediationValue {\n const authenticator = this.remediation.value\n .find(({ name }) => name === 'authenticator');\n return authenticator;\n }\n\n private getMethodTypes(): IdxOption[] {\n const authenticator: IdxRemediationValue = this.getAuthenticatorFromRemediation();\n return authenticator.form.value.find(({ name }) => name === 'methodType')?.options;\n }\n\n getValuesAfterProceed(): RemediationValues {\n this.values = super.getValuesAfterProceed();\n // remove used authenticatorData\n const authenticatorsData = this.values.authenticatorsData\n .filter(data => data.key !== this.authenticator.key);\n return { ...this.values, authenticatorsData };\n }\n}\n"],"file":"AuthenticatorData.js"}
@@ -22,17 +22,48 @@ var _util = require("../util");
22
22
  // Base class - DO NOT expose static remediationName
23
23
  class Remediator {
24
24
  constructor(remediation, values = {}) {
25
- var _values$authenticator;
25
+ // assign fields to the instance
26
+ this.values = { ...values
27
+ };
28
+ this.formatAuthenticators();
29
+ this.remediation = remediation;
30
+ }
31
+
32
+ formatAuthenticators() {
33
+ this.values.authenticators = this.values.authenticators || []; // add string authenticator from input to "authenticators" field
34
+
35
+ if (this.values.authenticator) {
36
+ const hasAuthenticatorInList = this.values.authenticators.some(authenticator => {
37
+ if (typeof authenticator === 'string') {
38
+ return authenticator === this.values.authenticator;
39
+ }
40
+
41
+ return authenticator.key === this.values.authenticator;
42
+ });
43
+
44
+ if (!hasAuthenticatorInList) {
45
+ this.values.authenticators.push({
46
+ key: this.values.authenticator
47
+ });
48
+ }
49
+ } // transform items in "authenticators" into one format
50
+
26
51
 
27
- // map authenticators to Authenticator[] type
28
- values.authenticators = ((_values$authenticator = values.authenticators) === null || _values$authenticator === void 0 ? void 0 : _values$authenticator.map(authenticator => {
52
+ this.values.authenticators = this.values.authenticators.map(authenticator => {
29
53
  return typeof authenticator === 'string' ? {
30
54
  key: authenticator
31
55
  } : authenticator;
32
- })) || []; // assign fields to the instance
56
+ }); // save non-key meta to "authenticatorsData" field
57
+ // authenticators will be removed after selection to avoid select-authenticator loop
33
58
 
34
- this.values = values;
35
- this.remediation = remediation;
59
+ this.values.authenticatorsData = this.values.authenticators.reduce((acc, authenticator) => {
60
+ if (typeof authenticator === 'object' && Object.keys(authenticator).length > 1) {
61
+ // save authenticator meta into authenticator data
62
+ acc.push(authenticator);
63
+ }
64
+
65
+ return acc;
66
+ }, this.values.authenticatorsData || []);
36
67
  }
37
68
 
38
69
  getName() {
@@ -107,7 +138,7 @@ class Remediator {
107
138
  return !!data;
108
139
  }
109
140
 
110
- getNextStep() {
141
+ getNextStep(_context) {
111
142
  const name = this.getName();
112
143
  const inputs = this.getInputs();
113
144
  const authenticator = this.getAuthenticator(); // TODO: remove type field in the next major version change
@@ -177,17 +208,16 @@ class Remediator {
177
208
 
178
209
  return inputs;
179
210
  }, []);
180
- } // Override this method to grab messages per remediation
181
-
211
+ }
182
212
 
183
- getMessages() {
184
- var _this$remediation$val, _this$remediation$val2;
213
+ static getMessages(remediation) {
214
+ var _remediation$value$, _remediation$value$$f;
185
215
 
186
- if (!this.remediation.value) {
216
+ if (!remediation.value) {
187
217
  return;
188
218
  }
189
219
 
190
- return (_this$remediation$val = this.remediation.value[0]) === null || _this$remediation$val === void 0 ? void 0 : (_this$remediation$val2 = _this$remediation$val.form) === null || _this$remediation$val2 === void 0 ? void 0 : _this$remediation$val2.value.reduce((messages, field) => {
220
+ return (_remediation$value$ = remediation.value[0]) === null || _remediation$value$ === void 0 ? void 0 : (_remediation$value$$f = _remediation$value$.form) === null || _remediation$value$$f === void 0 ? void 0 : _remediation$value$$f.value.reduce((messages, field) => {
191
221
  if (field.messages) {
192
222
  messages = [...messages, ...field.messages.value];
193
223
  }
@@ -195,17 +225,18 @@ class Remediator {
195
225
  return messages;
196
226
  }, []);
197
227
  } // Prepare values for the next remediation
198
- // In general, remove finished authenticator from list
228
+ // In general, remove used values from inputs for the current remediation
229
+ // Override this method if special cases need be handled
199
230
 
200
231
 
201
232
  getValuesAfterProceed() {
202
- var _this$getAuthenticato, _this$values$authenti;
233
+ const inputs = this.getInputs();
203
234
 
204
- const authenticatorKey = (_this$getAuthenticato = this.getAuthenticator()) === null || _this$getAuthenticato === void 0 ? void 0 : _this$getAuthenticato.key;
205
- const authenticators = (_this$values$authenti = this.values.authenticators) === null || _this$values$authenti === void 0 ? void 0 : _this$values$authenti.filter(authenticator => authenticator.key !== authenticatorKey);
206
- return { ...this.values,
207
- authenticators
208
- };
235
+ for (const input of inputs) {
236
+ delete this.values[input.name];
237
+ }
238
+
239
+ return this.values;
209
240
  }
210
241
 
211
242
  getAuthenticator() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../lib/idx/remediators/Base/Remediator.ts"],"names":["Remediator","constructor","remediation","values","authenticators","map","authenticator","key","getName","name","canRemediate","required","needed","find","hasData","getData","allValues","res","reduce","data","value","entry","i","length","val","Object","keys","getNextStep","inputs","getInputs","getAuthenticator","type","inputFromRemediation","item","input","aliases","includes","AuthSdkError","Array","isArray","forEach","push","getMessages","form","messages","field","getValuesAfterProceed","authenticatorKey","filter","relatesTo"],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\n/* eslint-disable complexity */\nimport { AuthSdkError } from '../../../errors';\nimport { NextStep, IdxMessage, Authenticator, Input } from '../../types';\nimport { IdxAuthenticator, IdxRemediation } from '../../types/idx-js';\nimport { getAllValues, getRequiredValues, titleCase } from '../util';\n\n// A map from IDX data values (server spec) to RemediationValues (client spec)\nexport type IdxToRemediationValueMap = Record<string, string[]>;\n\nexport interface RemediationValues {\n stateHandle?: string;\n authenticators?: Authenticator[] | string[];\n}\n\n// Base class - DO NOT expose static remediationName\nexport class Remediator {\n static remediationName: string;\n\n remediation: IdxRemediation;\n values: RemediationValues;\n map?: IdxToRemediationValueMap;\n\n constructor(remediation: IdxRemediation, values: RemediationValues = {}) {\n // map authenticators to Authenticator[] type\n values.authenticators = (values.authenticators?.map(authenticator => {\n return typeof authenticator === 'string' \n ? { key: authenticator } : authenticator;\n }) || []) as Authenticator[];\n \n // assign fields to the instance\n this.values = values;\n this.remediation = remediation;\n }\n\n getName(): string {\n return this.remediation.name;\n }\n\n // Override this method to provide custom check\n canRemediate(): boolean {\n if (!this.map) {\n return false;\n }\n const required = getRequiredValues(this.remediation);\n const needed = required.find((key) => !this.hasData(key));\n if (needed) {\n return false; // missing data for a required field\n }\n return true; // all required fields have available data\n }\n\n // returns an object for the entire remediation form, or just a part\n getData(key?: string) {\n\n if (!key) {\n let allValues = getAllValues(this.remediation);\n let res = allValues.reduce((data, key) => {\n data[key] = this.getData(key); // recursive\n return data;\n }, {});\n return res;\n }\n\n // Map value by \"map${Property}\" function in each subClass\n if (typeof this[`map${titleCase(key)}`] === 'function') {\n return this[`map${titleCase(key)}`](\n this.remediation.value.find(({name}) => name === key)\n );\n }\n\n if (!this.map) {\n return this.values[key];\n }\n\n // Handle general primitive types\n const entry = this.map[key];\n if (!entry) {\n return this.values[key];\n }\n\n // find the first aliased property that returns a truthy value\n for (let i = 0; i < entry.length; i++) {\n let val = this.values[entry[i]];\n if (val) {\n return val;\n }\n }\n }\n\n hasData(\n key: string // idx name\n ): boolean \n {\n // no attempt to format, we want simple true/false\n\n // First see if the remediation has a mapping for this vale\n const data = this.getData(key);\n if (typeof data === 'object') {\n return !!Object.keys(data).find(key => !!data[key]);\n }\n return !!data;\n }\n\n getNextStep(): NextStep {\n const name = this.getName();\n const inputs = this.getInputs();\n const authenticator = this.getAuthenticator();\n // TODO: remove type field in the next major version change\n // https://oktainc.atlassian.net/browse/OKTA-431749\n const type = authenticator?.type;\n return { \n name, \n inputs, \n ...(type && { type }),\n ...(authenticator && { authenticator }),\n };\n }\n\n // Get inputs for the next step\n private getInputs(): Input[] {\n if (!this.map) {\n return [];\n }\n\n return Object.keys(this.map).reduce((inputs, key) => {\n const inputFromRemediation = this.remediation.value.find(item => item.name === key);\n if (!inputFromRemediation) {\n return inputs;\n }\n\n let input: Input;\n const aliases = this.map[key];\n const { type } = inputFromRemediation;\n if (typeof this[`getInput${titleCase(key)}`] === 'function') {\n input = this[`getInput${titleCase(key)}`](inputFromRemediation);\n } else if (type !== 'object') {\n // handle general primitive types\n let name;\n if (aliases.length === 1) {\n name = aliases[0];\n } else {\n // try find key from values\n name = aliases.find(name => Object.keys(this.values).includes(name));\n }\n if (name) {\n input = { ...inputFromRemediation, name };\n }\n } \n\n if (!input) {\n throw new AuthSdkError(`Missing custom getInput${titleCase(key)} method in Remediator: ${this.getName()}`);\n }\n\n if (Array.isArray(input)) {\n input.forEach(i => inputs.push(i));\n } else {\n inputs.push(input);\n }\n return inputs;\n }, []);\n }\n\n // Override this method to grab messages per remediation\n getMessages(): IdxMessage[] | undefined {\n if (!this.remediation.value) {\n return;\n }\n return this.remediation.value[0]?.form?.value.reduce((messages, field) => {\n if (field.messages) {\n messages = [...messages, ...field.messages.value];\n }\n return messages;\n }, []);\n }\n\n // Prepare values for the next remediation\n // In general, remove finished authenticator from list\n getValuesAfterProceed(): unknown {\n const authenticatorKey = this.getAuthenticator()?.key;\n const authenticators = (this.values.authenticators as Authenticator[])\n ?.filter(authenticator => authenticator.key !== authenticatorKey);\n return { ...this.values, authenticators };\n }\n\n protected getAuthenticator(): IdxAuthenticator | undefined {\n return this.remediation.relatesTo?.value;\n }\n\n}\n"],"file":"Remediator.js"}
1
+ {"version":3,"sources":["../../../../../lib/idx/remediators/Base/Remediator.ts"],"names":["Remediator","constructor","remediation","values","formatAuthenticators","authenticators","authenticator","hasAuthenticatorInList","some","key","push","map","authenticatorsData","reduce","acc","Object","keys","length","getName","name","canRemediate","required","needed","find","hasData","getData","allValues","res","data","value","entry","i","val","getNextStep","_context","inputs","getInputs","getAuthenticator","type","inputFromRemediation","item","input","aliases","includes","AuthSdkError","Array","isArray","forEach","getMessages","form","messages","field","getValuesAfterProceed","relatesTo"],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\n/* eslint-disable complexity */\nimport { AuthSdkError } from '../../../errors';\nimport { NextStep, IdxMessage, Authenticator, Input, IdxOptions } from '../../types';\nimport { IdxAuthenticator, IdxRemediation, IdxContext } from '../../types/idx-js';\nimport { getAllValues, getRequiredValues, titleCase } from '../util';\n\n// A map from IDX data values (server spec) to RemediationValues (client spec)\nexport type IdxToRemediationValueMap = Record<string, string[]>;\n\nexport interface RemediationValues extends IdxOptions {\n stateHandle?: string;\n authenticators?: Authenticator[] | string[];\n authenticator?: string;\n authenticatorsData?: Authenticator[];\n}\n\n// Base class - DO NOT expose static remediationName\nexport class Remediator {\n static remediationName: string;\n\n remediation: IdxRemediation;\n values: RemediationValues;\n map?: IdxToRemediationValueMap;\n\n constructor(remediation: IdxRemediation, values: RemediationValues = {}) {\n // assign fields to the instance\n this.values = { ...values };\n this.formatAuthenticators();\n this.remediation = remediation;\n }\n\n private formatAuthenticators() {\n this.values.authenticators = (this.values.authenticators || []) as Authenticator[];\n // add string authenticator from input to \"authenticators\" field\n if (this.values.authenticator) {\n const hasAuthenticatorInList = this.values.authenticators.some(authenticator => {\n if (typeof authenticator === 'string') {\n return authenticator === this.values.authenticator;\n }\n return authenticator.key === this.values.authenticator;\n });\n if (!hasAuthenticatorInList) {\n this.values.authenticators.push({\n key: this.values.authenticator \n });\n }\n }\n\n // transform items in \"authenticators\" into one format\n this.values.authenticators = this.values.authenticators.map(authenticator => {\n return typeof authenticator === 'string' ? { key: authenticator } : authenticator;\n });\n\n // save non-key meta to \"authenticatorsData\" field\n // authenticators will be removed after selection to avoid select-authenticator loop\n this.values.authenticatorsData = this.values.authenticators.reduce((acc, authenticator) => {\n if (typeof authenticator === 'object' && Object.keys(authenticator).length > 1) {\n // save authenticator meta into authenticator data\n acc.push(authenticator);\n }\n return acc;\n }, this.values.authenticatorsData || []);\n }\n\n getName(): string {\n return this.remediation.name;\n }\n\n // Override this method to provide custom check\n canRemediate(): boolean {\n if (!this.map) {\n return false;\n }\n const required = getRequiredValues(this.remediation);\n const needed = required.find((key) => !this.hasData(key));\n if (needed) {\n return false; // missing data for a required field\n }\n return true; // all required fields have available data\n }\n\n // returns an object for the entire remediation form, or just a part\n getData(key?: string) {\n\n if (!key) {\n let allValues = getAllValues(this.remediation);\n let res = allValues.reduce((data, key) => {\n data[key] = this.getData(key); // recursive\n return data;\n }, {});\n return res;\n }\n\n // Map value by \"map${Property}\" function in each subClass\n if (typeof this[`map${titleCase(key)}`] === 'function') {\n return this[`map${titleCase(key)}`](\n this.remediation.value.find(({name}) => name === key)\n );\n }\n\n if (!this.map) {\n return this.values[key];\n }\n\n // Handle general primitive types\n const entry = this.map[key];\n if (!entry) {\n return this.values[key];\n }\n\n // find the first aliased property that returns a truthy value\n for (let i = 0; i < entry.length; i++) {\n let val = this.values[entry[i]];\n if (val) {\n return val;\n }\n }\n }\n\n hasData(\n key: string // idx name\n ): boolean \n {\n // no attempt to format, we want simple true/false\n\n // First see if the remediation has a mapping for this vale\n const data = this.getData(key);\n if (typeof data === 'object') {\n return !!Object.keys(data).find(key => !!data[key]);\n }\n return !!data;\n }\n\n getNextStep(_context?: IdxContext): NextStep {\n const name = this.getName();\n const inputs = this.getInputs();\n const authenticator = this.getAuthenticator();\n // TODO: remove type field in the next major version change\n // https://oktainc.atlassian.net/browse/OKTA-431749\n const type = authenticator?.type;\n return { \n name, \n inputs, \n ...(type && { type }),\n ...(authenticator && { authenticator }),\n };\n }\n\n // Get inputs for the next step\n private getInputs(): Input[] {\n if (!this.map) {\n return [];\n }\n\n return Object.keys(this.map).reduce((inputs, key) => {\n const inputFromRemediation = this.remediation.value.find(item => item.name === key);\n if (!inputFromRemediation) {\n return inputs;\n }\n\n let input: Input;\n const aliases = this.map[key];\n const { type } = inputFromRemediation;\n if (typeof this[`getInput${titleCase(key)}`] === 'function') {\n input = this[`getInput${titleCase(key)}`](inputFromRemediation);\n } else if (type !== 'object') {\n // handle general primitive types\n let name;\n if (aliases.length === 1) {\n name = aliases[0];\n } else {\n // try find key from values\n name = aliases.find(name => Object.keys(this.values).includes(name));\n }\n if (name) {\n input = { ...inputFromRemediation, name };\n }\n } \n\n if (!input) {\n throw new AuthSdkError(`Missing custom getInput${titleCase(key)} method in Remediator: ${this.getName()}`);\n }\n\n if (Array.isArray(input)) {\n input.forEach(i => inputs.push(i));\n } else {\n inputs.push(input);\n }\n return inputs;\n }, []);\n }\n\n static getMessages(remediation: IdxRemediation): IdxMessage[] | undefined {\n if (!remediation.value) {\n return;\n }\n return remediation.value[0]?.form?.value.reduce((messages, field) => {\n if (field.messages) {\n messages = [...messages, ...field.messages.value];\n }\n return messages;\n }, []);\n }\n\n // Prepare values for the next remediation\n // In general, remove used values from inputs for the current remediation\n // Override this method if special cases need be handled\n getValuesAfterProceed(): RemediationValues {\n const inputs = this.getInputs();\n for (const input of inputs) {\n delete this.values[input.name];\n }\n return this.values;\n }\n\n protected getAuthenticator(): IdxAuthenticator | undefined {\n return this.remediation.relatesTo?.value;\n }\n\n}\n"],"file":"Remediator.js"}
@@ -40,24 +40,11 @@ function findMatchedOption(authenticators, options) {
40
40
 
41
41
  // Base class - DO NOT expose static remediationName
42
42
  class SelectAuthenticator extends _Remediator.Remediator {
43
- constructor(remediation, values = {}) {
44
- super(remediation, values); // Unify authenticator input type
45
-
43
+ constructor(...args) {
44
+ super(...args);
46
45
  (0, _defineProperty2.default)(this, "map", {
47
46
  authenticator: []
48
47
  });
49
- const {
50
- authenticator: selectedAuthenticator,
51
- authenticators
52
- } = this.values;
53
- const hasSelectedAuthenticatorInList = authenticators === null || authenticators === void 0 ? void 0 : authenticators.some(authenticator => authenticator.key === selectedAuthenticator);
54
-
55
- if (selectedAuthenticator && !hasSelectedAuthenticatorInList) {
56
- // add selected authenticator to list
57
- this.values.authenticators = [...(authenticators || []), {
58
- key: selectedAuthenticator
59
- }];
60
- }
61
48
  }
62
49
 
63
50
  canRemediate() {
@@ -110,7 +97,9 @@ class SelectAuthenticator extends _Remediator.Remediator {
110
97
  const {
111
98
  options
112
99
  } = remediationValue;
113
- const selectedOption = findMatchedOption(authenticators, options);
100
+ const selectedOption = findMatchedOption(authenticators, options); // track the selected authenticator
101
+
102
+ this.selectedAuthenticator = selectedOption.relatesTo;
114
103
  return {
115
104
  id: selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.value.form.value.find(({
116
105
  name
@@ -125,6 +114,17 @@ class SelectAuthenticator extends _Remediator.Remediator {
125
114
  };
126
115
  }
127
116
 
117
+ getValuesAfterProceed() {
118
+ this.values = super.getValuesAfterProceed(); // remove used authenticators
119
+
120
+ const authenticators = this.values.authenticators.filter(authenticator => {
121
+ return authenticator.key !== this.selectedAuthenticator.key;
122
+ });
123
+ return { ...this.values,
124
+ authenticators
125
+ };
126
+ }
127
+
128
128
  }
129
129
 
130
130
  exports.SelectAuthenticator = SelectAuthenticator;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../lib/idx/remediators/Base/SelectAuthenticator.ts"],"names":["findMatchedOption","authenticators","options","option","authenticator","find","relatesTo","key","SelectAuthenticator","Remediator","constructor","remediation","values","selectedAuthenticator","hasSelectedAuthenticatorInList","some","canRemediate","authenticatorFromRemediation","length","matchedOption","getNextStep","common","map","label","value","mapAuthenticator","remediationValue","selectedOption","id","form","name","getInputAuthenticator"],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator, RemediationValues } from './Remediator';\nimport { getAuthenticatorFromRemediation } from '../util';\nimport { IdxRemediation, IdxRemediationValue } from '../../types/idx-js';\nimport { Authenticator } from '../../types';\n\n// Find matched authenticator in provided order\nfunction findMatchedOption(authenticators, options) {\n let option;\n for (let authenticator of authenticators) {\n option = options\n .find(({ relatesTo }) => relatesTo.key === authenticator.key);\n if (option) {\n break;\n }\n }\n return option;\n}\n\nexport type SelectAuthenticatorValues = RemediationValues & {\n authenticator?: string;\n};\n\n// Base class - DO NOT expose static remediationName\nexport class SelectAuthenticator extends Remediator {\n values: SelectAuthenticatorValues;\n matchedOption: IdxRemediation;\n \n map = {\n authenticator: []\n }\n\n constructor(remediation: IdxRemediation, values: SelectAuthenticatorValues = {}) {\n super(remediation, values);\n \n // Unify authenticator input type\n const { authenticator: selectedAuthenticator, authenticators } = this.values;\n const hasSelectedAuthenticatorInList = authenticators\n ?.some((authenticator => authenticator.key === selectedAuthenticator));\n if (selectedAuthenticator && !hasSelectedAuthenticatorInList) {\n // add selected authenticator to list\n this.values.authenticators = [\n ...(authenticators || []), \n { key: selectedAuthenticator }\n ] as Authenticator[];\n }\n }\n\n canRemediate() {\n const { authenticators } = this.values;\n const authenticatorFromRemediation = getAuthenticatorFromRemediation(this.remediation);\n const { options } = authenticatorFromRemediation;\n // Let users select authenticator if no input is provided\n if (!authenticators || !authenticators.length) {\n return false;\n }\n // Proceed with provided authenticators\n const matchedOption = findMatchedOption(authenticators, options);\n if (matchedOption) {\n return true;\n }\n \n return false;\n }\n\n getNextStep() {\n const common = super.getNextStep();\n const authenticatorFromRemediation = getAuthenticatorFromRemediation(this.remediation);\n const options = authenticatorFromRemediation.options.map(option => {\n const { \n label, \n relatesTo: { key } \n } = option;\n return { label, value: key };\n });\n return { ...common, options };\n }\n\n mapAuthenticator(remediationValue: IdxRemediationValue) {\n const { authenticators } = this.values;\n const { options } = remediationValue;\n const selectedOption = findMatchedOption(authenticators, options);\n return {\n id: selectedOption?.value.form.value.find(({ name }) => name === 'id').value\n };\n }\n\n getInputAuthenticator() {\n return { name: 'authenticator', key: 'string' };\n }\n\n}\n"],"file":"SelectAuthenticator.js"}
1
+ {"version":3,"sources":["../../../../../lib/idx/remediators/Base/SelectAuthenticator.ts"],"names":["findMatchedOption","authenticators","options","option","authenticator","find","relatesTo","key","SelectAuthenticator","Remediator","canRemediate","values","authenticatorFromRemediation","remediation","length","matchedOption","getNextStep","common","map","label","value","mapAuthenticator","remediationValue","selectedOption","selectedAuthenticator","id","form","name","getInputAuthenticator","getValuesAfterProceed","filter"],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator, RemediationValues } from './Remediator';\nimport { getAuthenticatorFromRemediation } from '../util';\nimport { IdxAuthenticator, IdxRemediationValue } from '../../types/idx-js';\nimport { Authenticator } from '../../types';\n\n// Find matched authenticator in provided order\nfunction findMatchedOption(authenticators, options) {\n let option;\n for (let authenticator of authenticators) {\n option = options\n .find(({ relatesTo }) => relatesTo.key === authenticator.key);\n if (option) {\n break;\n }\n }\n return option;\n}\n\nexport type SelectAuthenticatorValues = RemediationValues & {\n authenticator?: string;\n};\n\n// Base class - DO NOT expose static remediationName\nexport class SelectAuthenticator extends Remediator {\n values: SelectAuthenticatorValues;\n selectedAuthenticator: IdxAuthenticator;\n \n map = {\n authenticator: []\n }\n\n canRemediate() {\n const { authenticators } = this.values;\n const authenticatorFromRemediation = getAuthenticatorFromRemediation(this.remediation);\n const { options } = authenticatorFromRemediation;\n // Let users select authenticator if no input is provided\n if (!authenticators || !authenticators.length) {\n return false;\n }\n // Proceed with provided authenticators\n const matchedOption = findMatchedOption(authenticators, options);\n if (matchedOption) {\n return true;\n }\n \n return false;\n }\n\n getNextStep() {\n const common = super.getNextStep();\n const authenticatorFromRemediation = getAuthenticatorFromRemediation(this.remediation);\n const options = authenticatorFromRemediation.options.map(option => {\n const { \n label, \n relatesTo: { key } \n } = option;\n return { label, value: key };\n });\n return { ...common, options };\n }\n\n mapAuthenticator(remediationValue: IdxRemediationValue) {\n const { authenticators } = this.values;\n const { options } = remediationValue;\n const selectedOption = findMatchedOption(authenticators, options);\n // track the selected authenticator\n this.selectedAuthenticator = selectedOption.relatesTo;\n return {\n id: selectedOption?.value.form.value.find(({ name }) => name === 'id').value\n };\n }\n\n getInputAuthenticator() {\n return { name: 'authenticator', key: 'string' };\n }\n\n getValuesAfterProceed(): RemediationValues {\n this.values = super.getValuesAfterProceed();\n // remove used authenticators\n const authenticators = (this.values.authenticators as Authenticator[])\n .filter(authenticator => {\n return authenticator.key !== this.selectedAuthenticator.key; \n });\n return { ...this.values, authenticators };\n }\n\n}\n"],"file":"SelectAuthenticator.js"}
@@ -8,6 +8,8 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
8
8
 
9
9
  var _Remediator = require("./Remediator");
10
10
 
11
+ var _authenticator = require("../../authenticator");
12
+
11
13
  /*!
12
14
  * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.
13
15
  * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
@@ -21,46 +23,24 @@ var _Remediator = require("./Remediator");
21
23
  */
22
24
  // Base class - DO NOT expose static remediationName
23
25
  class VerifyAuthenticator extends _Remediator.Remediator {
24
- constructor(...args) {
25
- super(...args);
26
+ constructor(remediation, values = {}) {
27
+ super(remediation, values);
26
28
  (0, _defineProperty2.default)(this, "map", {
27
29
  'credentials': []
28
30
  });
31
+ this.authenticator = (0, _authenticator.getAuthenticator)(remediation);
29
32
  }
30
33
 
31
34
  canRemediate() {
32
- return !!(this.values.password || this.values.verificationCode);
35
+ return this.authenticator.canVerify(this.values);
33
36
  }
34
37
 
35
38
  mapCredentials() {
36
- return {
37
- passcode: this.values.verificationCode || this.values.password
38
- };
39
+ return this.authenticator.mapCredentials(this.values);
39
40
  }
40
41
 
41
42
  getInputCredentials(input) {
42
- var _input$form;
43
-
44
- const challengeType = this.getAuthenticator().type;
45
- const name = challengeType === 'password' ? 'password' : 'verificationCode';
46
- return { ...((_input$form = input.form) === null || _input$form === void 0 ? void 0 : _input$form.value[0]),
47
- name,
48
- type: 'string',
49
- required: input.required
50
- };
51
- }
52
-
53
- getValuesAfterProceed() {
54
- let values = super.getValuesAfterProceed();
55
- const authenticator = this.getAuthenticator();
56
-
57
- if (authenticator.type === 'password') {
58
- delete values.password;
59
- } else {
60
- delete values.verificationCode;
61
- }
62
-
63
- return values;
43
+ return this.authenticator.getInputs(input);
64
44
  }
65
45
 
66
46
  }