@okta/okta-auth-js 6.4.4 → 6.5.1

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 (84) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/README.md +1 -1
  3. package/cjs/OktaUserAgent.js +2 -2
  4. package/cjs/idx/flow/AuthenticationFlow.js.map +1 -1
  5. package/cjs/idx/idxState/v1/idxResponseParser.js +10 -5
  6. package/cjs/idx/idxState/v1/idxResponseParser.js.map +1 -1
  7. package/cjs/idx/idxState/v1/makeIdxState.js +6 -0
  8. package/cjs/idx/idxState/v1/makeIdxState.js.map +1 -1
  9. package/cjs/idx/interact.js +16 -16
  10. package/cjs/idx/interact.js.map +1 -1
  11. package/cjs/idx/remediate.js +9 -9
  12. package/cjs/idx/remediate.js.map +1 -1
  13. package/cjs/idx/remediators/AuthenticatorEnrollmentData.js +17 -8
  14. package/cjs/idx/remediators/AuthenticatorEnrollmentData.js.map +1 -1
  15. package/cjs/idx/remediators/AuthenticatorVerificationData.js +2 -1
  16. package/cjs/idx/remediators/AuthenticatorVerificationData.js.map +1 -1
  17. package/cjs/idx/remediators/Base/AuthenticatorData.js +4 -3
  18. package/cjs/idx/remediators/Base/AuthenticatorData.js.map +1 -1
  19. package/cjs/idx/remediators/Base/Remediator.js +1 -1
  20. package/cjs/idx/remediators/Base/Remediator.js.map +1 -1
  21. package/cjs/idx/remediators/Base/SelectAuthenticator.js +20 -7
  22. package/cjs/idx/remediators/Base/SelectAuthenticator.js.map +1 -1
  23. package/cjs/idx/remediators/Base/VerifyAuthenticator.js +2 -2
  24. package/cjs/idx/remediators/Base/VerifyAuthenticator.js.map +1 -1
  25. package/cjs/idx/remediators/EnrollPoll.js +2 -2
  26. package/cjs/idx/remediators/EnrollPoll.js.map +1 -1
  27. package/cjs/idx/remediators/EnrollmentChannelData.js +2 -2
  28. package/cjs/idx/remediators/EnrollmentChannelData.js.map +1 -1
  29. package/cjs/idx/remediators/GenericRemediator/GenericRemediator.js +103 -0
  30. package/cjs/idx/remediators/GenericRemediator/GenericRemediator.js.map +1 -0
  31. package/cjs/idx/remediators/GenericRemediator/index.js +17 -0
  32. package/cjs/idx/remediators/GenericRemediator/index.js.map +1 -0
  33. package/cjs/idx/remediators/GenericRemediator/util.js +141 -0
  34. package/cjs/idx/remediators/GenericRemediator/util.js.map +1 -0
  35. package/cjs/idx/remediators/Identify.js.map +1 -1
  36. package/cjs/idx/remediators/SelectAuthenticatorAuthenticate.js.map +1 -1
  37. package/cjs/idx/remediators/SelectAuthenticatorUnlockAccount.js +1 -1
  38. package/cjs/idx/remediators/SelectAuthenticatorUnlockAccount.js.map +1 -1
  39. package/cjs/idx/remediators/SelectEnrollmentChannel.js +3 -2
  40. package/cjs/idx/remediators/SelectEnrollmentChannel.js.map +1 -1
  41. package/cjs/idx/remediators/index.js +13 -0
  42. package/cjs/idx/remediators/index.js.map +1 -1
  43. package/cjs/idx/run.js +27 -14
  44. package/cjs/idx/run.js.map +1 -1
  45. package/cjs/idx/transactionMeta.js +4 -2
  46. package/cjs/idx/transactionMeta.js.map +1 -1
  47. package/cjs/idx/types/api.js.map +1 -1
  48. package/cjs/idx/types/idx-js.js.map +1 -1
  49. package/cjs/idx/types/index.js.map +1 -1
  50. package/cjs/idx/util.js +70 -22
  51. package/cjs/idx/util.js.map +1 -1
  52. package/cjs/options/index.js +6 -0
  53. package/cjs/options/index.js.map +1 -1
  54. package/dist/okta-auth-js.min.js +1 -1
  55. package/dist/okta-auth-js.min.js.map +1 -1
  56. package/dist/okta-auth-js.umd.js +1 -1
  57. package/dist/okta-auth-js.umd.js.map +1 -1
  58. package/esm/esm.browser.js +533 -257
  59. package/esm/esm.browser.js.map +1 -1
  60. package/esm/esm.node.mjs +533 -257
  61. package/esm/esm.node.mjs.map +1 -1
  62. package/lib/idx/interact.d.ts +1 -0
  63. package/lib/idx/remediate.d.ts +2 -1
  64. package/lib/idx/remediators/AuthenticatorEnrollmentData.d.ts +1 -11
  65. package/lib/idx/remediators/AuthenticatorVerificationData.d.ts +1 -0
  66. package/lib/idx/remediators/Base/AuthenticatorData.d.ts +5 -1
  67. package/lib/idx/remediators/Base/Remediator.d.ts +4 -3
  68. package/lib/idx/remediators/Base/SelectAuthenticator.d.ts +8 -3
  69. package/lib/idx/remediators/Base/VerifyAuthenticator.d.ts +2 -1
  70. package/lib/idx/remediators/EnrollPoll.d.ts +2 -2
  71. package/lib/idx/remediators/EnrollmentChannelData.d.ts +7 -3
  72. package/lib/idx/remediators/GenericRemediator/GenericRemediator.d.ts +9 -0
  73. package/lib/idx/remediators/GenericRemediator/index.d.ts +1 -0
  74. package/lib/idx/remediators/GenericRemediator/util.d.ts +3 -0
  75. package/lib/idx/remediators/SelectAuthenticatorUnlockAccount.d.ts +1 -1
  76. package/lib/idx/remediators/SelectEnrollmentChannel.d.ts +7 -3
  77. package/lib/idx/remediators/index.d.ts +1 -0
  78. package/lib/idx/types/api.d.ts +12 -2
  79. package/lib/idx/types/idx-js.d.ts +6 -2
  80. package/lib/idx/types/index.d.ts +1 -1
  81. package/lib/idx/types/options.d.ts +2 -0
  82. package/lib/idx/util.d.ts +4 -3
  83. package/lib/types/OktaAuthOptions.d.ts +1 -0
  84. package/package.json +5 -5
package/CHANGELOG.md CHANGED
@@ -1,7 +1,36 @@
1
1
  # Changelog
2
2
 
3
+ ## 6.5.1
4
+
5
+ ### Fixes
6
+
7
+ - [#1200](https://github.com/okta/okta-auth-js/pull/1200) Fixes `canRemediate` logic in GenericRemediator (beta) to handle nested fields
8
+ - [1207](https://github.com/okta/okta-auth-js/pull/1207) Fixes `canRemediate` logic in GenericRemediator (beta) to handle `options` fields
9
+
10
+ ### Other
11
+
12
+ - [#1200](https://github.com/okta/okta-auth-js/pull/1200) Adds missing fields to `Input` type in `idx` module
13
+
14
+ ## 6.5.0
15
+
16
+ ### Features
17
+
18
+ - [#1186](https://github.com/okta/okta-auth-js/pull/1186) Supports `maxAge` param in interaction code flow. This parameter can be passed in from either SDK level options or `idx.interact` options.
19
+ - [#1189](https://github.com/okta/okta-auth-js/pull/1189) IDX: includes `options` field in `inputs` scope, and deprecated top level `options` from `nextStep` field of the response (removal will happen in the next major version).
20
+
21
+ ### Fixes
22
+
23
+ - [#1189](https://github.com/okta/okta-auth-js/pull/1189) IDX: fixes `input` type indicator's field name for `username` and `authenticator`. Before the indicator was named as `key`, now it's fixed to `type` to follow input metadata with all other inputs.
24
+ ## 6.4.5
25
+
26
+ ### Fixes
27
+
28
+ - [#1240](https://github.com/okta/okta-auth-js/pull/1204) Fixes Apple SSO flow: includes `stepUp` on returned `IdxTransaction`
29
+
3
30
  ## 6.4.4
4
31
 
32
+ ### Fixes
33
+
5
34
  - [#1199](https://github.com/okta/okta-auth-js/pull/1199) Fixes webauthn enrollment/verification to accept `credentials` object
6
35
 
7
36
  ## 6.4.3
package/README.md CHANGED
@@ -826,7 +826,7 @@ In version `6.X`, the `autoRenew` configuration was set in `config.tokenManager`
826
826
  When `tokenManager.autoRenew` is `true` both renew strategies are enabled. To disable the `active` strategy, set `tokenManager.autoRenew` to `true` and `services.autoRenew` to `false`. To disable both renew strategies set either `tokenManager.autoRenew` or `services.autoRenew` to `false`
827
827
 
828
828
  #### `autoRemove`
829
- By default, the library will attempt to remove expired tokens when `autoRenew` is `false`. If you wish to disable auto removal of tokens, set `autoRemove` to `false`.
829
+ By default, the library will attempt to remove expired tokens when `autoRemove` is `true`. If you wish to disable auto removal of tokens, set `autoRemove` to `false`.
830
830
 
831
831
  #### `syncStorage`
832
832
  Automatically syncs tokens across browser tabs when token storage is `localStorage`. To disable this behavior, set `syncStorage` to false.
@@ -21,7 +21,7 @@ var _features = require("./features");
21
21
  class OktaUserAgent {
22
22
  constructor() {
23
23
  // add base sdk env
24
- this.environments = [`okta-auth-js/${"6.4.4"}`];
24
+ this.environments = [`okta-auth-js/${"6.5.1"}`];
25
25
  }
26
26
 
27
27
  addEnvironment(env) {
@@ -36,7 +36,7 @@ class OktaUserAgent {
36
36
  }
37
37
 
38
38
  getVersion() {
39
- return "6.4.4";
39
+ return "6.5.1";
40
40
  }
41
41
 
42
42
  maybeAddNodeEnvironment() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../lib/idx/flow/AuthenticationFlow.ts"],"names":["AuthenticationFlow","Identify","SelectAuthenticatorAuthenticate","SelectAuthenticatorEnroll","AuthenticatorEnrollmentData","AuthenticatorVerificationData","EnrollAuthenticator","ChallengeAuthenticator","ChallengePoll","ReEnrollAuthenticator","EnrollPoll","RedirectIdp","Skip"],"mappings":";;;;AAcA;;AAdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAkBO,MAAMA,kBAAmC,GAAG;AACjD,cAAYC,qBADqC;AAEjD,uCAAqCC,4CAFY;AAGjD,iCAA+BC,sCAHkB;AAIjD,mCAAiCC,wCAJgB;AAKjD,qCAAmCC,0CALc;AAMjD,0BAAwBC,gCANyB;AAOjD,6BAA2BC,mCAPsB;AAQjD,oBAAkBC,0BAR+B;AASjD,4BAA0BC,kCATuB;AAUjD,iBAAeC,uBAVkC;AAWjD,kBAAgBC,wBAXiC;AAYjD,UAAQC;AAZyC,CAA5C","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 { RemediationFlow } from './RemediationFlow';\nimport { \n Identify,\n SelectAuthenticatorAuthenticate,\n ChallengeAuthenticator,\n ReEnrollAuthenticator,\n RedirectIdp,\n AuthenticatorEnrollmentData,\n SelectAuthenticatorEnroll,\n EnrollAuthenticator,\n AuthenticatorVerificationData,\n EnrollPoll,\n ChallengePoll, Skip\n} from '../remediators';\n\nexport const AuthenticationFlow: RemediationFlow = {\n 'identify': Identify,\n 'select-authenticator-authenticate': SelectAuthenticatorAuthenticate,\n 'select-authenticator-enroll': SelectAuthenticatorEnroll,\n 'authenticator-enrollment-data': AuthenticatorEnrollmentData,\n 'authenticator-verification-data': AuthenticatorVerificationData,\n 'enroll-authenticator': EnrollAuthenticator,\n 'challenge-authenticator': ChallengeAuthenticator,\n 'challenge-poll': ChallengePoll,\n 'reenroll-authenticator': ReEnrollAuthenticator,\n 'enroll-poll': EnrollPoll,\n 'redirect-idp': RedirectIdp,\n 'skip': Skip,\n};\n"],"file":"AuthenticationFlow.js"}
1
+ {"version":3,"sources":["../../../../lib/idx/flow/AuthenticationFlow.ts"],"names":["AuthenticationFlow","Identify","SelectAuthenticatorAuthenticate","SelectAuthenticatorEnroll","AuthenticatorEnrollmentData","AuthenticatorVerificationData","EnrollAuthenticator","ChallengeAuthenticator","ChallengePoll","ReEnrollAuthenticator","EnrollPoll","RedirectIdp","Skip"],"mappings":";;;;AAcA;;AAdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAmBO,MAAMA,kBAAmC,GAAG;AACjD,cAAYC,qBADqC;AAEjD,uCAAqCC,4CAFY;AAGjD,iCAA+BC,sCAHkB;AAIjD,mCAAiCC,wCAJgB;AAKjD,qCAAmCC,0CALc;AAMjD,0BAAwBC,gCANyB;AAOjD,6BAA2BC,mCAPsB;AAQjD,oBAAkBC,0BAR+B;AASjD,4BAA0BC,kCATuB;AAUjD,iBAAeC,uBAVkC;AAWjD,kBAAgBC,wBAXiC;AAYjD,UAAQC;AAZyC,CAA5C","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 { RemediationFlow } from './RemediationFlow';\nimport { \n Identify,\n SelectAuthenticatorAuthenticate,\n ChallengeAuthenticator,\n ReEnrollAuthenticator,\n RedirectIdp,\n AuthenticatorEnrollmentData,\n SelectAuthenticatorEnroll,\n EnrollAuthenticator,\n AuthenticatorVerificationData,\n EnrollPoll,\n ChallengePoll, \n Skip\n} from '../remediators';\n\nexport const AuthenticationFlow: RemediationFlow = {\n 'identify': Identify,\n 'select-authenticator-authenticate': SelectAuthenticatorAuthenticate,\n 'select-authenticator-enroll': SelectAuthenticatorEnroll,\n 'authenticator-enrollment-data': AuthenticatorEnrollmentData,\n 'authenticator-verification-data': AuthenticatorVerificationData,\n 'enroll-authenticator': EnrollAuthenticator,\n 'challenge-authenticator': ChallengeAuthenticator,\n 'challenge-poll': ChallengePoll,\n 'reenroll-authenticator': ReEnrollAuthenticator,\n 'enroll-poll': EnrollPoll,\n 'redirect-idp': RedirectIdp,\n 'skip': Skip,\n};\n"],"file":"AuthenticationFlow.js"}
@@ -109,11 +109,16 @@ const expandRelatesTo = (idxResponse, value) => {
109
109
  };
110
110
 
111
111
  const convertRemediationAction = (authClient, remediation, toPersist) => {
112
- const remediationActions = (0, _remediationParser.generateRemediationFunctions)(authClient, [remediation], toPersist);
113
- const actionFn = remediationActions[remediation.name];
114
- return { ...remediation,
115
- action: actionFn
116
- };
112
+ // Only remediation that has `rel` field (indicator for form submission) can have http action
113
+ if (remediation.rel) {
114
+ const remediationActions = (0, _remediationParser.generateRemediationFunctions)(authClient, [remediation], toPersist);
115
+ const actionFn = remediationActions[remediation.name];
116
+ return { ...remediation,
117
+ action: actionFn
118
+ };
119
+ }
120
+
121
+ return remediation;
117
122
  };
118
123
 
119
124
  const parseIdxResponse = function parseIdxResponse(authClient, idxResponse, toPersist = {}) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../lib/idx/idxState/v1/idxResponseParser.ts"],"names":["SKIP_FIELDS","field","parseNonRemediations","authClient","idxResponse","toPersist","actions","context","forEach","fieldIsObject","rel","name","value","fieldValue","type","info","subField","expandRelatesTo","k","query","Array","isArray","result","path","json","innerValue","convertRemediationAction","remediation","remediationActions","actionFn","action","parseIdxResponse","remediationData","remediations"],"mappings":";;;;;;;;;;;;;;;;AAgBA;;AACA;;AACA;;;;AAEA,MAAMA,WAAW,GAAG,0BAAmB,8BACrC,aADqC,EACtB;AACf,SAFqC,CAE1B;AAF0B,kBAG/BC,KAAD,IAAW,CAAEA,KAAF,EAAS,CAAC,CAAC,iBAAX,CAHqB,CAAnB,CAApB;;AAKO,MAAMC,oBAAoB,GAAG,SAASA,oBAAT,CAA+BC,UAA/B,EAA8DC,WAA9D,EAA2EC,SAAS,GAAG,EAAvF,EAA4F;AAAA;;AAC9H,QAAMC,OAAO,GAAG,EAAhB;AACA,QAAMC,OAAO,GAAG,EAAhB;AAEA,sDAAYH,WAAZ,mBACWH,KAAK,IAAI,CAACD,WAAW,CAACC,KAAD,CADhC,EAEGO,OAFH,CAEYP,KAAK,IAAI;AACjB,UAAMQ,aAAa,GAAG,OAAOL,WAAW,CAACH,KAAD,CAAlB,KAA8B,QAA9B,IAA0C,CAAC,CAACG,WAAW,CAACH,KAAD,CAA7E;;AAEA,QAAK,CAACQ,aAAN,EAAsB;AACpB;AACAF,MAAAA,OAAO,CAACN,KAAD,CAAP,GAAiBG,WAAW,CAACH,KAAD,CAA5B;AACA;AACD;;AAED,QAAKG,WAAW,CAACH,KAAD,CAAX,CAAmBS,GAAxB,EAA8B;AAC5B;AACAJ,MAAAA,OAAO,CAACF,WAAW,CAACH,KAAD,CAAX,CAAmBU,IAApB,CAAP,GAAmC,gCAAkBR,UAAlB,EAA8BC,WAAW,CAACH,KAAD,CAAzC,EAAkDI,SAAlD,CAAnC;AACA;AACD;;AAED,UAAM;AAAEO,MAAAA,KAAK,EAAEC,UAAT;AAAqBC,MAAAA,IAArB;AAA2B,SAAGC;AAA9B,QAAsCX,WAAW,CAACH,KAAD,CAAvD;AACAM,IAAAA,OAAO,CAACN,KAAD,CAAP,GAAiB;AAAEa,MAAAA,IAAF;AAAQ,SAAGC;AAAX,KAAjB,CAhBiB,CAgBkB;;AAEnC,QAAKD,IAAI,KAAK,QAAd,EAAyB;AACvB;AACAP,MAAAA,OAAO,CAACN,KAAD,CAAP,CAAeW,KAAf,GAAuBC,UAAvB;AACA;AACD,KAtBgB,CAwBjB;;;AACAN,IAAAA,OAAO,CAACN,KAAD,CAAP,CAAeW,KAAf,GAAuB,EAAvB;AACA,0BAAeC,UAAf,EACGL,OADH,CACY,CAAC,CAACQ,QAAD,EAAWJ,KAAX,CAAD,KAAuB;AAC/B,UAAIA,KAAK,CAACF,GAAV,EAAe;AAAE;AACf;AACAJ,QAAAA,OAAO,CAAE,GAAEL,KAAM,IAAGe,QAAQ,CAACL,IAAT,IAAiBK,QAAS,EAAvC,CAAP,GAAmD,gCAAkBb,UAAlB,EAA8BS,KAA9B,EAAqCP,SAArC,CAAnD;AACD,OAHD,MAGO;AACL;AACAE,QAAAA,OAAO,CAACN,KAAD,CAAP,CAAeW,KAAf,CAAqBI,QAArB,IAAiCJ,KAAjC;AACD;AACF,KATH;AAUD,GAtCH;AAwCA,SAAO;AAAEL,IAAAA,OAAF;AAAWD,IAAAA;AAAX,GAAP;AACD,CA7CM;;;;AA+CP,MAAMW,eAAe,GAAG,CAACb,WAAD,EAAcQ,KAAd,KAAwB;AAC9C,qBAAYA,KAAZ,EAAmBJ,OAAnB,CAA2BU,CAAC,IAAI;AAC9B,QAAIA,CAAC,KAAK,WAAV,EAAuB;AACrB,YAAMC,KAAK,GAAGC,KAAK,CAACC,OAAN,CAAcT,KAAK,CAACM,CAAD,CAAnB,IAA0BN,KAAK,CAACM,CAAD,CAAL,CAAS,CAAT,CAA1B,GAAwCN,KAAK,CAACM,CAAD,CAA3D;;AACA,UAAI,OAAOC,KAAP,KAAiB,QAArB,EAA+B;AAC7B;AACA,cAAMG,MAAM,GAAG,4BAAS;AAAEC,UAAAA,IAAI,EAAEJ,KAAR;AAAeK,UAAAA,IAAI,EAAEpB;AAArB,SAAT,EAA6C,CAA7C,CAAf;;AACA,YAAIkB,MAAJ,EAAY;AACVV,UAAAA,KAAK,CAACM,CAAD,CAAL,GAAWI,MAAX;AACA;AACD;AACF;AACF;;AACD,QAAIF,KAAK,CAACC,OAAN,CAAcT,KAAK,CAACM,CAAD,CAAnB,CAAJ,EAA6B;AAC3BN,MAAAA,KAAK,CAACM,CAAD,CAAL,CAASV,OAAT,CAAiBiB,UAAU,IAAIR,eAAe,CAACb,WAAD,EAAcqB,UAAd,CAA9C;AACD;AACF,GAfD;AAgBD,CAjBD;;AAmBA,MAAMC,wBAAwB,GAAG,CAACvB,UAAD,EAAgCwB,WAAhC,EAA6CtB,SAA7C,KAA2D;AAC1F,QAAMuB,kBAAkB,GAAG,qDAA8BzB,UAA9B,EAA0C,CAACwB,WAAD,CAA1C,EAAyDtB,SAAzD,CAA3B;AACA,QAAMwB,QAAQ,GAAGD,kBAAkB,CAACD,WAAW,CAAChB,IAAb,CAAnC;AACA,SAAO,EACL,GAAGgB,WADE;AAELG,IAAAA,MAAM,EAAED;AAFH,GAAP;AAID,CAPD;;AASO,MAAME,gBAAgB,GAAG,SAASA,gBAAT,CAA2B5B,UAA3B,EAA0DC,WAA1D,EAAuEC,SAAS,GAAG,EAAnF,EAI9B;AAAA;;AACA,QAAM2B,eAAe,GAAG,0BAAA5B,WAAW,CAACuB,WAAZ,gFAAyBf,KAAzB,KAAkC,EAA1D;AAEAoB,EAAAA,eAAe,CAACxB,OAAhB,CACEmB,WAAW,IAAIV,eAAe,CAACb,WAAD,EAAcuB,WAAd,CADhC;AAIA,QAAMM,YAAY,GAAG,kBAAAD,eAAe,MAAf,CAAAA,eAAe,EAAKL,WAAW,IAAID,wBAAwB,CAAEvB,UAAF,EAAcwB,WAAd,EAA2BtB,SAA3B,CAA5C,CAApC;AAEA,QAAM;AAAEE,IAAAA,OAAF;AAAWD,IAAAA;AAAX,MAAuBJ,oBAAoB,CAAEC,UAAF,EAAcC,WAAd,EAA2BC,SAA3B,CAAjD;AAEA,SAAO;AACL4B,IAAAA,YADK;AAEL1B,IAAAA,OAFK;AAGLD,IAAAA;AAHK,GAAP;AAKD,CApBM","sourcesContent":["/*!\n * Copyright (c) 2021-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/* eslint-disable max-len */\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nimport { OktaAuthInterface } from '../../../types'; // auth-js/types\nimport { generateRemediationFunctions } from './remediationParser';\nimport generateIdxAction from './generateIdxAction';\nimport { JSONPath } from 'jsonpath-plus';\n\nconst SKIP_FIELDS = Object.fromEntries([\n 'remediation', // remediations are put into proceed/neededToProceed\n 'context', // the API response of 'context' isn't externally useful. We ignore it and put all non-action (contextual) info into idxState.context\n].map( (field) => [ field, !!'skip this field' ] ));\n\nexport const parseNonRemediations = function parseNonRemediations( authClient: OktaAuthInterface, idxResponse, toPersist = {} ) {\n const actions = {};\n const context = {};\n\n Object.keys(idxResponse)\n .filter( field => !SKIP_FIELDS[field])\n .forEach( field => {\n const fieldIsObject = typeof idxResponse[field] === 'object' && !!idxResponse[field];\n\n if ( !fieldIsObject ) {\n // simple fields are contextual info\n context[field] = idxResponse[field];\n return;\n }\n\n if ( idxResponse[field].rel ) {\n // top level actions\n actions[idxResponse[field].name] = generateIdxAction(authClient, idxResponse[field], toPersist);\n return;\n }\n\n const { value: fieldValue, type, ...info} = idxResponse[field];\n context[field] = { type, ...info}; // add the non-action parts as context\n\n if ( type !== 'object' ) {\n // only object values hold actions\n context[field].value = fieldValue;\n return;\n }\n\n // We are an object field containing an object value\n context[field].value = {};\n Object.entries(fieldValue)\n .forEach( ([subField, value]) => {\n if (value.rel) { // is [field].value[subField] an action?\n // add any \"action\" value subfields to actions\n actions[`${field}-${subField.name || subField}`] = generateIdxAction(authClient, value, toPersist);\n } else {\n // add non-action value subfields to context\n context[field].value[subField] = value;\n }\n });\n });\n\n return { context, actions };\n};\n\nconst expandRelatesTo = (idxResponse, value) => {\n Object.keys(value).forEach(k => {\n if (k === 'relatesTo') {\n const query = Array.isArray(value[k]) ? value[k][0] : value[k];\n if (typeof query === 'string') {\n // eslint-disable-next-line new-cap\n const result = JSONPath({ path: query, json: idxResponse })[0];\n if (result) {\n value[k] = result;\n return;\n }\n }\n }\n if (Array.isArray(value[k])) {\n value[k].forEach(innerValue => expandRelatesTo(idxResponse, innerValue));\n }\n });\n};\n\nconst convertRemediationAction = (authClient: OktaAuthInterface, remediation, toPersist) => {\n const remediationActions = generateRemediationFunctions( authClient, [remediation], toPersist );\n const actionFn = remediationActions[remediation.name];\n return {\n ...remediation,\n action: actionFn,\n };\n};\n\nexport const parseIdxResponse = function parseIdxResponse( authClient: OktaAuthInterface, idxResponse, toPersist = {} ): {\n remediations: IdxRemediation[];\n context: IdxContext;\n actions: IdxActions;\n} {\n const remediationData = idxResponse.remediation?.value || [];\n\n remediationData.forEach(\n remediation => expandRelatesTo(idxResponse, remediation)\n );\n\n const remediations = remediationData.map(remediation => convertRemediationAction( authClient, remediation, toPersist ));\n\n const { context, actions } = parseNonRemediations( authClient, idxResponse, toPersist );\n\n return {\n remediations,\n context,\n actions,\n };\n};\n"],"file":"idxResponseParser.js"}
1
+ {"version":3,"sources":["../../../../../lib/idx/idxState/v1/idxResponseParser.ts"],"names":["SKIP_FIELDS","field","parseNonRemediations","authClient","idxResponse","toPersist","actions","context","forEach","fieldIsObject","rel","name","value","fieldValue","type","info","subField","expandRelatesTo","k","query","Array","isArray","result","path","json","innerValue","convertRemediationAction","remediation","remediationActions","actionFn","action","parseIdxResponse","remediationData","remediations"],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) 2021-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/* eslint-disable max-len */\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nimport { OktaAuthInterface } from '../../../types'; // auth-js/types\nimport { generateRemediationFunctions } from './remediationParser';\nimport generateIdxAction from './generateIdxAction';\nimport { JSONPath } from 'jsonpath-plus';\n\nconst SKIP_FIELDS = Object.fromEntries([\n 'remediation', // remediations are put into proceed/neededToProceed\n 'context', // the API response of 'context' isn't externally useful. We ignore it and put all non-action (contextual) info into idxState.context\n].map( (field) => [ field, !!'skip this field' ] ));\n\nexport const parseNonRemediations = function parseNonRemediations( authClient: OktaAuthInterface, idxResponse, toPersist = {} ) {\n const actions = {};\n const context = {};\n\n Object.keys(idxResponse)\n .filter( field => !SKIP_FIELDS[field])\n .forEach( field => {\n const fieldIsObject = typeof idxResponse[field] === 'object' && !!idxResponse[field];\n\n if ( !fieldIsObject ) {\n // simple fields are contextual info\n context[field] = idxResponse[field];\n return;\n }\n\n if ( idxResponse[field].rel ) {\n // top level actions\n actions[idxResponse[field].name] = generateIdxAction(authClient, idxResponse[field], toPersist);\n return;\n }\n\n const { value: fieldValue, type, ...info} = idxResponse[field];\n context[field] = { type, ...info}; // add the non-action parts as context\n\n if ( type !== 'object' ) {\n // only object values hold actions\n context[field].value = fieldValue;\n return;\n }\n\n // We are an object field containing an object value\n context[field].value = {};\n Object.entries(fieldValue)\n .forEach( ([subField, value]) => {\n if (value.rel) { // is [field].value[subField] an action?\n // add any \"action\" value subfields to actions\n actions[`${field}-${subField.name || subField}`] = generateIdxAction(authClient, value, toPersist);\n } else {\n // add non-action value subfields to context\n context[field].value[subField] = value;\n }\n });\n });\n\n return { context, actions };\n};\n\nconst expandRelatesTo = (idxResponse, value) => {\n Object.keys(value).forEach(k => {\n if (k === 'relatesTo') {\n const query = Array.isArray(value[k]) ? value[k][0] : value[k];\n if (typeof query === 'string') {\n // eslint-disable-next-line new-cap\n const result = JSONPath({ path: query, json: idxResponse })[0];\n if (result) {\n value[k] = result;\n return;\n }\n }\n }\n if (Array.isArray(value[k])) {\n value[k].forEach(innerValue => expandRelatesTo(idxResponse, innerValue));\n }\n });\n};\n\nconst convertRemediationAction = (authClient: OktaAuthInterface, remediation, toPersist) => {\n // Only remediation that has `rel` field (indicator for form submission) can have http action\n if (remediation.rel) {\n const remediationActions = generateRemediationFunctions( authClient, [remediation], toPersist );\n const actionFn = remediationActions[remediation.name];\n return {\n ...remediation,\n action: actionFn,\n };\n }\n \n return remediation;\n};\n\nexport const parseIdxResponse = function parseIdxResponse( authClient: OktaAuthInterface, idxResponse, toPersist = {} ): {\n remediations: IdxRemediation[];\n context: IdxContext;\n actions: IdxActions;\n} {\n const remediationData = idxResponse.remediation?.value || [];\n\n remediationData.forEach(\n remediation => expandRelatesTo(idxResponse, remediation)\n );\n\n const remediations = remediationData.map(remediation => convertRemediationAction( authClient, remediation, toPersist ));\n\n const { context, actions } = parseNonRemediations( authClient, idxResponse, toPersist );\n\n return {\n remediations,\n context,\n actions,\n };\n};\n"],"file":"idxResponseParser.js"}
@@ -46,6 +46,12 @@ function makeIdxState(authClient, idxResponse, toPersist, requestDidSucceed) {
46
46
  return _promise.default.reject(`Unknown remediation choice: [${remediationChoice}]`);
47
47
  }
48
48
 
49
+ const actionFn = remediationChoiceObject.action;
50
+
51
+ if (typeof actionFn !== 'function') {
52
+ return _promise.default.reject(`Current remediation cannot make form submit action: [${remediationChoice}]`);
53
+ }
54
+
49
55
  return remediationChoiceObject.action(paramsFromUser);
50
56
  };
51
57
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../lib/idx/idxState/v1/makeIdxState.ts"],"names":["makeIdxState","authClient","idxResponse","toPersist","requestDidSucceed","rawIdxResponse","remediations","context","actions","neededToProceed","proceed","remediationChoice","paramsFromUser","remediationChoiceObject","remediation","name","reject","action","findCode","item","interactionCode","successWithInteractionCode","value","rawIdxState"],"mappings":";;;;;;;;;;AAcA;;AAdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGuE;AAGhE,SAASA,YAAT,CACLC,UADK,EAELC,WAFK,EAGLC,SAHK,EAILC,iBAJK,EAKQ;AAAA;;AACb,QAAMC,cAAc,GAAIH,WAAxB;AACA,QAAM;AAAEI,IAAAA,YAAF;AAAgBC,IAAAA,OAAhB;AAAyBC,IAAAA;AAAzB,MAAqC,yCAAkBP,UAAlB,EAA8BC,WAA9B,EAA2CC,SAA3C,CAA3C;AACA,QAAMM,eAAe,GAAG,CAAC,GAAGH,YAAJ,CAAxB;;AAEA,QAAMI,OAA+B,GAAG,gBAAgBC,iBAAhB,EAAmCC,cAAc,GAAG,EAApD,EAAyD;AAC/F;AACJ;AACA;AACA;AACA;AACA;AACI,UAAMC,uBAAuB,GAAG,mBAAAP,YAAY,MAAZ,CAAAA,YAAY,EAAOQ,WAAD,IAAiBA,WAAW,CAACC,IAAZ,KAAqBJ,iBAA5C,CAA5C;;AACA,QAAK,CAACE,uBAAN,EAAgC;AAC9B,aAAO,iBAAQG,MAAR,CAAgB,gCAA+BL,iBAAkB,GAAjE,CAAP;AACD;;AAED,WAAOE,uBAAuB,CAACI,MAAxB,CAA+BL,cAA/B,CAAP;AACD,GAbD;;AAeA,QAAMM,QAAQ,GAAGC,IAAI,IAAIA,IAAI,CAACJ,IAAL,KAAc,kBAAvC;;AACA,QAAMK,eAAe,4BAAGf,cAAc,CAACgB,0BAAlB,oFAAG,sBAA2CC,KAA9C,qFAAG,wEAAwDJ,QAAxD,CAAH,2DAAG,uBAAoEI,KAA5F;AAEA,SAAO;AACLZ,IAAAA,OADK;AAELD,IAAAA,eAFK;AAGLD,IAAAA,OAHK;AAILD,IAAAA,OAJK;AAKLgB,IAAAA,WAAW,EAAElB,cALR;AAMLe,IAAAA,eANK;AAOLjB,IAAAA,SAPK;AAQLC,IAAAA;AARK,GAAP;AAUD","sourcesContent":["/*!\n * Copyright (c) 2021-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\nimport { IdxResponse } from '../../types/idx-js';\nimport { OktaAuthInterface, RawIdxResponse } from '../../../types'; // auth-js/types\nimport { parseIdxResponse } from './idxResponseParser';\n\nexport function makeIdxState( \n authClient: OktaAuthInterface,\n idxResponse: RawIdxResponse,\n toPersist,\n requestDidSucceed: boolean\n): IdxResponse {\n const rawIdxResponse = idxResponse;\n const { remediations, context, actions } = parseIdxResponse( authClient, idxResponse, toPersist );\n const neededToProceed = [...remediations];\n\n const proceed: IdxResponse['proceed'] = async function( remediationChoice, paramsFromUser = {} ) {\n /*\n remediationChoice is the name attribute on each form\n name should remain unique for items inside the remediation that are considered forms(identify, select-factor)\n name can be duplicate for items like redirect where its not considered a form(redirect)\n when names are not unique its a redirect to a href, so widget wont POST to idx-js layer.\n */\n const remediationChoiceObject = remediations.find((remediation) => remediation.name === remediationChoice);\n if ( !remediationChoiceObject ) {\n return Promise.reject(`Unknown remediation choice: [${remediationChoice}]`);\n }\n\n return remediationChoiceObject.action(paramsFromUser);\n };\n\n const findCode = item => item.name === 'interaction_code';\n const interactionCode = rawIdxResponse.successWithInteractionCode?.value?.find( findCode )?.value as string;\n\n return {\n proceed,\n neededToProceed,\n actions,\n context,\n rawIdxState: rawIdxResponse,\n interactionCode,\n toPersist,\n requestDidSucceed,\n };\n}\n"],"file":"makeIdxState.js"}
1
+ {"version":3,"sources":["../../../../../lib/idx/idxState/v1/makeIdxState.ts"],"names":["makeIdxState","authClient","idxResponse","toPersist","requestDidSucceed","rawIdxResponse","remediations","context","actions","neededToProceed","proceed","remediationChoice","paramsFromUser","remediationChoiceObject","remediation","name","reject","actionFn","action","findCode","item","interactionCode","successWithInteractionCode","value","rawIdxState"],"mappings":";;;;;;;;;;AAcA;;AAdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGuE;AAGhE,SAASA,YAAT,CACLC,UADK,EAELC,WAFK,EAGLC,SAHK,EAILC,iBAJK,EAKQ;AAAA;;AACb,QAAMC,cAAc,GAAIH,WAAxB;AACA,QAAM;AAAEI,IAAAA,YAAF;AAAgBC,IAAAA,OAAhB;AAAyBC,IAAAA;AAAzB,MAAqC,yCAAkBP,UAAlB,EAA8BC,WAA9B,EAA2CC,SAA3C,CAA3C;AACA,QAAMM,eAAe,GAAG,CAAC,GAAGH,YAAJ,CAAxB;;AAEA,QAAMI,OAA+B,GAAG,gBAAgBC,iBAAhB,EAAmCC,cAAc,GAAG,EAApD,EAAyD;AAC/F;AACJ;AACA;AACA;AACA;AACA;AACI,UAAMC,uBAAuB,GAAG,mBAAAP,YAAY,MAAZ,CAAAA,YAAY,EAAOQ,WAAD,IAAiBA,WAAW,CAACC,IAAZ,KAAqBJ,iBAA5C,CAA5C;;AACA,QAAK,CAACE,uBAAN,EAAgC;AAC9B,aAAO,iBAAQG,MAAR,CAAgB,gCAA+BL,iBAAkB,GAAjE,CAAP;AACD;;AAED,UAAMM,QAAQ,GAAGJ,uBAAuB,CAACK,MAAzC;;AACA,QAAI,OAAOD,QAAP,KAAoB,UAAxB,EAAoC;AAClC,aAAO,iBAAQD,MAAR,CAAgB,wDAAuDL,iBAAkB,GAAzF,CAAP;AACD;;AAED,WAAOE,uBAAuB,CAACK,MAAxB,CAA+BN,cAA/B,CAAP;AACD,GAlBD;;AAoBA,QAAMO,QAAQ,GAAGC,IAAI,IAAIA,IAAI,CAACL,IAAL,KAAc,kBAAvC;;AACA,QAAMM,eAAe,4BAAGhB,cAAc,CAACiB,0BAAlB,oFAAG,sBAA2CC,KAA9C,qFAAG,wEAAwDJ,QAAxD,CAAH,2DAAG,uBAAoEI,KAA5F;AAEA,SAAO;AACLb,IAAAA,OADK;AAELD,IAAAA,eAFK;AAGLD,IAAAA,OAHK;AAILD,IAAAA,OAJK;AAKLiB,IAAAA,WAAW,EAAEnB,cALR;AAMLgB,IAAAA,eANK;AAOLlB,IAAAA,SAPK;AAQLC,IAAAA;AARK,GAAP;AAUD","sourcesContent":["/*!\n * Copyright (c) 2021-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\nimport { IdxResponse } from '../../types/idx-js';\nimport { OktaAuthInterface, RawIdxResponse } from '../../../types'; // auth-js/types\nimport { parseIdxResponse } from './idxResponseParser';\n\nexport function makeIdxState( \n authClient: OktaAuthInterface,\n idxResponse: RawIdxResponse,\n toPersist,\n requestDidSucceed: boolean\n): IdxResponse {\n const rawIdxResponse = idxResponse;\n const { remediations, context, actions } = parseIdxResponse( authClient, idxResponse, toPersist );\n const neededToProceed = [...remediations];\n\n const proceed: IdxResponse['proceed'] = async function( remediationChoice, paramsFromUser = {} ) {\n /*\n remediationChoice is the name attribute on each form\n name should remain unique for items inside the remediation that are considered forms(identify, select-factor)\n name can be duplicate for items like redirect where its not considered a form(redirect)\n when names are not unique its a redirect to a href, so widget wont POST to idx-js layer.\n */\n const remediationChoiceObject = remediations.find((remediation) => remediation.name === remediationChoice);\n if ( !remediationChoiceObject ) {\n return Promise.reject(`Unknown remediation choice: [${remediationChoice}]`);\n }\n\n const actionFn = remediationChoiceObject.action;\n if (typeof actionFn !== 'function') {\n return Promise.reject(`Current remediation cannot make form submit action: [${remediationChoice}]`);\n }\n\n return remediationChoiceObject.action(paramsFromUser);\n };\n\n const findCode = item => item.name === 'interaction_code';\n const interactionCode = rawIdxResponse.successWithInteractionCode?.value?.find( findCode )?.value as string;\n\n return {\n proceed,\n neededToProceed,\n actions,\n context,\n rawIdxState: rawIdxResponse,\n interactionCode,\n toPersist,\n requestDidSucceed,\n };\n}\n"],"file":"makeIdxState.js"}
@@ -62,7 +62,8 @@ async function interact(authClient, options = {}) {
62
62
  codeChallenge,
63
63
  codeChallengeMethod,
64
64
  activationToken,
65
- recoveryToken
65
+ recoveryToken,
66
+ maxAge
66
67
  } = meta;
67
68
  const clientSecret = options.clientSecret || authClient.options.clientSecret;
68
69
  withCredentials = (_withCredentials = withCredentials) !== null && _withCredentials !== void 0 ? _withCredentials : true;
@@ -75,26 +76,25 @@ async function interact(authClient, options = {}) {
75
76
  redirect_uri: redirectUri,
76
77
  code_challenge: codeChallenge,
77
78
  code_challenge_method: codeChallengeMethod,
78
- state
79
- };
80
-
81
- if (activationToken) {
82
- params.activation_token = activationToken;
83
- }
84
-
85
- if (recoveryToken) {
86
- params.recovery_token = recoveryToken;
87
- }
88
-
89
- if (clientSecret) {
79
+ state,
80
+ ...(activationToken && {
81
+ activation_token: activationToken
82
+ }),
83
+ ...(recoveryToken && {
84
+ recovery_token: recoveryToken
85
+ }),
90
86
  // X-Device-Token header need to pair with `client_secret`
91
87
  // eslint-disable-next-line max-len
92
88
  // https://oktawiki.atlassian.net/wiki/spaces/eng/pages/2445902453/Support+Device+Binding+in+interact#Scenario-1%3A-Non-User-Agent-with-Confidential-Client-(top-priority)
93
- params.client_secret = clientSecret;
94
- }
89
+ ...(clientSecret && {
90
+ client_secret: clientSecret
91
+ }),
92
+ ...(maxAge && {
93
+ max_age: maxAge
94
+ })
95
+ };
95
96
  /* eslint-enable camelcase */
96
97
 
97
-
98
98
  const headers = {
99
99
  'Content-Type': 'application/x-www-form-urlencoded'
100
100
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../lib/idx/interact.ts"],"names":["getResponse","meta","interactionHandle","state","interact","authClient","options","baseUrl","clientId","redirectUri","scopes","withCredentials","codeChallenge","codeChallengeMethod","activationToken","recoveryToken","clientSecret","url","params","client_id","scope","join","redirect_uri","code_challenge","code_challenge_method","activation_token","recovery_token","client_secret","headers","resp","method","args","interaction_handle","newMeta"],"mappings":";;;;AAcA;;AACA;;AACA;;AACA;;AACA;;AAlBA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;;AAqBA;AAEA,SAASA,WAAT,CAAqBC,IAArB,EAAiE;AAC/D,SAAO;AACLA,IAAAA,IADK;AAELC,IAAAA,iBAAiB,EAAED,IAAI,CAACC,iBAFnB;AAGLC,IAAAA,KAAK,EAAEF,IAAI,CAACE;AAHP,GAAP;AAKD,C,CAED;;;AACO,eAAeC,QAAf,CACLC,UADK,EAELC,OAAwB,GAAG,EAFtB,EAGsB;AAAA;;AAC3BA,EAAAA,OAAO,GAAG,sBAAWA,OAAX,CAAV;AAEA,MAAIL,IAAI,GAAG,8CAAwBI,UAAxB,EAAoCC,OAApC,CAAX,CAH2B,CAI3B;;AAEA,eAAIL,IAAJ,kCAAI,MAAMC,iBAAV,EAA6B;AAC3B,WAAOF,WAAW,CAACC,IAAD,CAAlB,CAD2B,CACD;AAC3B,GAR0B,CAU3B;;;AACAA,EAAAA,IAAI,GAAG,MAAM,6BAAsBI,UAAtB,EAAkC,EAAE,GAAGJ,IAAL;AAAW,OAAGK;AAAd,GAAlC,CAAb;AACA,QAAMC,OAAO,GAAG,2BAAgBF,UAAhB,CAAhB;AACA,MAAI;AACFG,IAAAA,QADE;AAEFC,IAAAA,WAFE;AAGFN,IAAAA,KAHE;AAIFO,IAAAA,MAJE;AAKFC,IAAAA,eALE;AAMFC,IAAAA,aANE;AAOFC,IAAAA,mBAPE;AAQFC,IAAAA,eARE;AASFC,IAAAA;AATE,MAUAd,IAVJ;AAWA,QAAMe,YAAY,GAAGV,OAAO,CAACU,YAAR,IAAwBX,UAAU,CAACC,OAAX,CAAmBU,YAAhE;AACAL,EAAAA,eAAe,uBAAGA,eAAH,+DAAsB,IAArC;AAEA;;AACA,QAAMM,GAAG,GAAI,GAAEV,OAAQ,cAAvB;AACA,QAAMW,MAAM,GAAG;AACbC,IAAAA,SAAS,EAAEX,QADE;AAEbY,IAAAA,KAAK,EAAEV,MAAM,CAAEW,IAAR,CAAa,GAAb,CAFM;AAGbC,IAAAA,YAAY,EAAEb,WAHD;AAIbc,IAAAA,cAAc,EAAEX,aAJH;AAKbY,IAAAA,qBAAqB,EAAEX,mBALV;AAMbV,IAAAA;AANa,GAAf;;AAQA,MAAIW,eAAJ,EAAqB;AACnBI,IAAAA,MAAM,CAACO,gBAAP,GAA0BX,eAA1B;AACD;;AACD,MAAIC,aAAJ,EAAmB;AACjBG,IAAAA,MAAM,CAACQ,cAAP,GAAwBX,aAAxB;AACD;;AACD,MAAIC,YAAJ,EAAkB;AAClB;AACA;AACA;AACEE,IAAAA,MAAM,CAACS,aAAP,GAAuBX,YAAvB;AACD;AACD;;;AAEA,QAAMY,OAAO,GAAG;AACd,oBAAgB;AADF,GAAhB;AAIA,QAAMC,IAAI,GAAG,MAAM,uBAAYxB,UAAZ,EAAwB;AACzCyB,IAAAA,MAAM,EAAE,MADiC;AAEzCb,IAAAA,GAFyC;AAGzCW,IAAAA,OAHyC;AAIzCjB,IAAAA,eAJyC;AAKzCoB,IAAAA,IAAI,EAAEb;AALmC,GAAxB,CAAnB;AAOA,QAAMhB,iBAAiB,GAAG2B,IAAI,CAACG,kBAA/B;AAEA,QAAMC,OAAO,GAAG,EACd,GAAGhC,IADW;AAEdC,IAAAA,iBAFc;AAId;AACAS,IAAAA,eALc;AAMdR,IAAAA,KANc;AAOdO,IAAAA,MAPc;AAQdK,IAAAA,aARc;AASdD,IAAAA;AATc,GAAhB,CAhE2B,CA2E3B;;AACA,4CAAoBT,UAApB,EAAgC4B,OAAhC;AAEA,SAAOjC,WAAW,CAACiC,OAAD,CAAlB;AACD","sourcesContent":["/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2021, 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/* eslint complexity:[0,8] */\nimport { OktaAuthInterface, IdxTransactionMeta, InteractOptions, InteractResponse } from '../types';\nimport { getSavedTransactionMeta, saveTransactionMeta } from './transactionMeta';\nimport { getOAuthBaseUrl } from '../oidc';\nimport { createTransactionMeta } from '.';\nimport { removeNils } from '../util';\nimport { httpRequest } from '../http';\n\n\n/* eslint-disable camelcase */\nexport interface InteractParams {\n client_id: string;\n scope: string;\n redirect_uri: string;\n code_challenge: string;\n code_challenge_method: string;\n state: string;\n activation_token?: string;\n recovery_token?: string;\n client_secret?: string;\n}\n/* eslint-enable camelcase */\n\nfunction getResponse(meta: IdxTransactionMeta): InteractResponse {\n return {\n meta,\n interactionHandle: meta.interactionHandle!,\n state: meta.state\n };\n}\n\n// Begin or resume a transaction. Returns an interaction handle\nexport async function interact (\n authClient: OktaAuthInterface, \n options: InteractOptions = {}\n): Promise<InteractResponse> {\n options = removeNils(options);\n\n let meta = getSavedTransactionMeta(authClient, options);\n // If meta exists, it has been validated against all options\n\n if (meta?.interactionHandle) {\n return getResponse(meta); // Saved transaction, return meta\n }\n\n // Create new meta, respecting previous meta if it has been set and is not overridden\n meta = await createTransactionMeta(authClient, { ...meta, ...options });\n const baseUrl = getOAuthBaseUrl(authClient);\n let {\n clientId,\n redirectUri,\n state,\n scopes,\n withCredentials,\n codeChallenge,\n codeChallengeMethod,\n activationToken,\n recoveryToken,\n } = meta as IdxTransactionMeta;\n const clientSecret = options.clientSecret || authClient.options.clientSecret;\n withCredentials = withCredentials ?? true;\n\n /* eslint-disable camelcase */\n const url = `${baseUrl}/v1/interact`;\n const params = {\n client_id: clientId,\n scope: scopes!.join(' '),\n redirect_uri: redirectUri,\n code_challenge: codeChallenge,\n code_challenge_method: codeChallengeMethod,\n state,\n } as InteractParams;\n if (activationToken) {\n params.activation_token = activationToken;\n }\n if (recoveryToken) {\n params.recovery_token = recoveryToken;\n }\n if (clientSecret) {\n // X-Device-Token header need to pair with `client_secret`\n // eslint-disable-next-line max-len\n // https://oktawiki.atlassian.net/wiki/spaces/eng/pages/2445902453/Support+Device+Binding+in+interact#Scenario-1%3A-Non-User-Agent-with-Confidential-Client-(top-priority)\n params.client_secret = clientSecret;\n }\n /* eslint-enable camelcase */\n\n const headers = {\n 'Content-Type': 'application/x-www-form-urlencoded',\n };\n\n const resp = await httpRequest(authClient, {\n method: 'POST',\n url,\n headers,\n withCredentials,\n args: params\n });\n const interactionHandle = resp.interaction_handle;\n\n const newMeta = {\n ...meta,\n interactionHandle,\n \n // Options which can be passed into interact() should be saved in the meta\n withCredentials,\n state,\n scopes,\n recoveryToken,\n activationToken\n };\n // Save transaction meta so it can be resumed\n saveTransactionMeta(authClient, newMeta);\n\n return getResponse(newMeta);\n}\n"],"file":"interact.js"}
1
+ {"version":3,"sources":["../../../lib/idx/interact.ts"],"names":["getResponse","meta","interactionHandle","state","interact","authClient","options","baseUrl","clientId","redirectUri","scopes","withCredentials","codeChallenge","codeChallengeMethod","activationToken","recoveryToken","maxAge","clientSecret","url","params","client_id","scope","join","redirect_uri","code_challenge","code_challenge_method","activation_token","recovery_token","client_secret","max_age","headers","resp","method","args","interaction_handle","newMeta"],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2021, 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/* eslint complexity:[0,8] */\nimport { OktaAuthInterface, IdxTransactionMeta, InteractOptions, InteractResponse } from '../types';\nimport { getSavedTransactionMeta, saveTransactionMeta } from './transactionMeta';\nimport { getOAuthBaseUrl } from '../oidc';\nimport { createTransactionMeta } from '.';\nimport { removeNils } from '../util';\nimport { httpRequest } from '../http';\n\n\n/* eslint-disable camelcase */\nexport interface InteractParams {\n client_id: string;\n scope: string;\n redirect_uri: string;\n code_challenge: string;\n code_challenge_method: string;\n state: string;\n activation_token?: string;\n recovery_token?: string;\n client_secret?: string;\n max_age?: string | number;\n}\n/* eslint-enable camelcase */\n\nfunction getResponse(meta: IdxTransactionMeta): InteractResponse {\n return {\n meta,\n interactionHandle: meta.interactionHandle!,\n state: meta.state\n };\n}\n\n// Begin or resume a transaction. Returns an interaction handle\nexport async function interact (\n authClient: OktaAuthInterface, \n options: InteractOptions = {}\n): Promise<InteractResponse> {\n options = removeNils(options);\n\n let meta = getSavedTransactionMeta(authClient, options);\n // If meta exists, it has been validated against all options\n\n if (meta?.interactionHandle) {\n return getResponse(meta); // Saved transaction, return meta\n }\n\n // Create new meta, respecting previous meta if it has been set and is not overridden\n meta = await createTransactionMeta(authClient, { ...meta, ...options });\n const baseUrl = getOAuthBaseUrl(authClient);\n let {\n clientId,\n redirectUri,\n state,\n scopes,\n withCredentials,\n codeChallenge,\n codeChallengeMethod,\n activationToken,\n recoveryToken,\n maxAge\n } = meta as IdxTransactionMeta;\n const clientSecret = options.clientSecret || authClient.options.clientSecret;\n withCredentials = withCredentials ?? true;\n\n /* eslint-disable camelcase */\n const url = `${baseUrl}/v1/interact`;\n const params = {\n client_id: clientId,\n scope: scopes!.join(' '),\n redirect_uri: redirectUri,\n code_challenge: codeChallenge,\n code_challenge_method: codeChallengeMethod,\n state,\n ...(activationToken && { activation_token: activationToken }),\n ...(recoveryToken && { recovery_token: recoveryToken }),\n // X-Device-Token header need to pair with `client_secret`\n // eslint-disable-next-line max-len\n // https://oktawiki.atlassian.net/wiki/spaces/eng/pages/2445902453/Support+Device+Binding+in+interact#Scenario-1%3A-Non-User-Agent-with-Confidential-Client-(top-priority)\n ...(clientSecret && { client_secret: clientSecret }),\n ...(maxAge && { max_age: maxAge })\n } as InteractParams;\n /* eslint-enable camelcase */\n\n const headers = {\n 'Content-Type': 'application/x-www-form-urlencoded',\n };\n\n const resp = await httpRequest(authClient, {\n method: 'POST',\n url,\n headers,\n withCredentials,\n args: params\n });\n const interactionHandle = resp.interaction_handle;\n\n const newMeta = {\n ...meta,\n interactionHandle,\n \n // Options which can be passed into interact() should be saved in the meta\n withCredentials,\n state,\n scopes,\n recoveryToken,\n activationToken\n };\n // Save transaction meta so it can be resumed\n saveTransactionMeta(authClient, newMeta);\n\n return getResponse(newMeta);\n}\n"],"file":"interact.js"}
@@ -60,7 +60,7 @@ function removeActionFromOptions(options, actionName) {
60
60
  } // This function is called recursively until it reaches success or cannot be remediated
61
61
 
62
62
 
63
- async function remediate(idxResponse, values, options) {
63
+ async function remediate(authClient, idxResponse, values, options) {
64
64
  let {
65
65
  neededToProceed,
66
66
  interactionCode
@@ -101,7 +101,7 @@ async function remediate(idxResponse, values, options) {
101
101
  requestDidSucceed: true
102
102
  };
103
103
  } catch (e) {
104
- return (0, _util.handleIdxError)(e, remediator);
104
+ return (0, _util.handleIdxError)(authClient, e, remediator);
105
105
  }
106
106
 
107
107
  if (action === 'cancel') {
@@ -111,7 +111,7 @@ async function remediate(idxResponse, values, options) {
111
111
  };
112
112
  }
113
113
 
114
- return remediate(idxResponse, valuesWithoutExecutedAction, optionsWithoutExecutedAction); // recursive call
114
+ return remediate(authClient, idxResponse, valuesWithoutExecutedAction, optionsWithoutExecutedAction); // recursive call
115
115
  } // search for action in remediation list
116
116
 
117
117
 
@@ -126,10 +126,10 @@ async function remediate(idxResponse, values, options) {
126
126
  requestDidSucceed: true
127
127
  };
128
128
  } catch (e) {
129
- return (0, _util.handleIdxError)(e, remediator);
129
+ return (0, _util.handleIdxError)(authClient, e, remediator);
130
130
  }
131
131
 
132
- return remediate(idxResponse, values, optionsWithoutExecutedAction); // recursive call
132
+ return remediate(authClient, idxResponse, values, optionsWithoutExecutedAction); // recursive call
133
133
  }
134
134
  }
135
135
  } // Do not attempt to remediate if response is in terminal state
@@ -159,7 +159,7 @@ async function remediate(idxResponse, values, options) {
159
159
  idxResponse
160
160
  };
161
161
  } catch (e) {
162
- return (0, _util.handleIdxError)(e);
162
+ return (0, _util.handleIdxError)(authClient, e);
163
163
  }
164
164
  }
165
165
 
@@ -177,7 +177,7 @@ async function remediate(idxResponse, values, options) {
177
177
 
178
178
 
179
179
  if (!remediator.canRemediate()) {
180
- const nextStep = (0, _util.getNextStep)(remediator, idxResponse);
180
+ const nextStep = (0, _util.getNextStep)(authClient, remediator, idxResponse);
181
181
  return {
182
182
  idxResponse,
183
183
  nextStep,
@@ -200,9 +200,9 @@ async function remediate(idxResponse, values, options) {
200
200
  step: undefined
201
201
  }; // do not re-use the step
202
202
 
203
- return remediate(idxResponse, values, options); // recursive call
203
+ return remediate(authClient, idxResponse, values, options); // recursive call
204
204
  } catch (e) {
205
- return (0, _util.handleIdxError)(e, remediator);
205
+ return (0, _util.handleIdxError)(authClient, e, remediator);
206
206
  }
207
207
  }
208
208
  //# sourceMappingURL=remediate.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../lib/idx/remediate.ts"],"names":["getActionFromValues","values","idxResponse","actions","action","resend","removeActionFromValues","undefined","removeActionFromOptions","options","actionName","entry","name","remediate","neededToProceed","interactionCode","flow","remediator","actionFromValues","actionFromOptions","params","valuesWithoutExecutedAction","optionsWithoutExecutedAction","requestDidSucceed","e","canceled","remediationAction","proceed","terminal","messages","step","AuthSdkError","acc","curr","canRemediate","nextStep","length","getName","data","getData","getValuesAfterProceed"],"mappings":";;;;;;;;;;;;;;;;AAcA;;AAOA;;AArBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AAyBA,SAASA,mBAAT,CAA6BC,MAA7B,EAAwDC,WAAxD,EAAsG;AAAA;;AACpG;AACA,SAAO,iDAAYA,WAAW,CAACC,OAAxB,kBAAsCC,MAAM,IAAI,CAAC,CAACH,MAAM,CAACI,MAAT,IAAmB,uBAAAD,MAAM,MAAN,CAAAA,MAAM,EAAU,SAAV,CAAzE,CAAP;AACD;;AAED,SAASE,sBAAT,CAAgCL,MAAhC,EAA8E;AAC5E;AACA,SAAO,EACL,GAAGA,MADE;AAELI,IAAAA,MAAM,EAAEE;AAFH,GAAP;AAID;;AAED,SAASC,uBAAT,CAAiCC,OAAjC,EAA4DC,UAA5D,EAAkG;AAChG,MAAIP,OAAO,GAAGM,OAAO,CAACN,OAAR,IAAmB,EAAjC;AACAA,EAAAA,OAAO,GAAG,qBAAAA,OAAO,MAAP,CAAAA,OAAO,EAAQQ,KAAK,IAAI;AAChC,QAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AAC7B,aAAOA,KAAK,KAAKD,UAAjB;AACD;;AACD,WAAOC,KAAK,CAACC,IAAN,KAAeF,UAAtB;AACD,GALgB,CAAjB;AAOA,SAAO,EAAE,GAAGD,OAAL;AAAcN,IAAAA;AAAd,GAAP;AACD,C,CAED;;;AACO,eAAeU,SAAf,CACLX,WADK,EAELD,MAFK,EAGLQ,OAHK,EAIyB;AAC9B,MAAI;AAAEK,IAAAA,eAAF;AAAmBC,IAAAA;AAAnB,MAAuCb,WAA3C;AACA,QAAM;AAAEc,IAAAA;AAAF,MAAWP,OAAjB,CAF8B,CAI9B;;AACA,MAAIM,eAAJ,EAAqB;AACnB,WAAO;AAAEb,MAAAA;AAAF,KAAP;AACD;;AAED,QAAMe,UAAU,GAAG,yBAAcH,eAAd,EAA+Bb,MAA/B,EAAuCQ,OAAvC,CAAnB,CAT8B,CAW9B;;AACA,QAAMS,gBAAgB,GAAGlB,mBAAmB,CAACC,MAAD,EAASC,WAAT,CAA5C;AACA,QAAMiB,iBAAiB,GAAGV,OAAO,CAACN,OAAR,IAAmB,EAA7C;AACA,QAAMA,OAAO,GAAG,CACd,GAAGgB,iBADW,EAEd,IAAID,gBAAgB,IAAI,CAACA,gBAAD,CAApB,IAA0C,EAA9C,CAFc,CAAhB;;AAIA,MAAIf,OAAJ,EAAa;AACX,SAAK,IAAIC,MAAT,IAAmBD,OAAnB,EAA4B;AAC1B;AACA,UAAIiB,MAAuB,GAAG,EAA9B;;AACA,UAAI,OAAOhB,MAAP,KAAkB,QAAtB,EAAgC;AAC9BgB,QAAAA,MAAM,GAAGhB,MAAM,CAACgB,MAAP,IAAiB,EAA1B;AACAhB,QAAAA,MAAM,GAAGA,MAAM,CAACQ,IAAhB;AACD;;AACD,UAAIS,2BAA2B,GAAGf,sBAAsB,CAACL,MAAD,CAAxD;AACA,UAAIqB,4BAA4B,GAAGd,uBAAuB,CAACC,OAAD,EAAUL,MAAV,CAA1D;;AAEA,UAAI,OAAOF,WAAW,CAACC,OAAZ,CAAoBC,MAApB,CAAP,KAAuC,UAA3C,EAAuD;AACrD,YAAI;AACFF,UAAAA,WAAW,GAAG,MAAMA,WAAW,CAACC,OAAZ,CAAoBC,MAApB,EAA4BgB,MAA5B,CAApB;AACAlB,UAAAA,WAAW,GAAG,EAAE,GAAGA,WAAL;AAAkBqB,YAAAA,iBAAiB,EAAE;AAArC,WAAd;AACD,SAHD,CAGE,OAAOC,CAAP,EAAU;AACV,iBAAO,0BAAeA,CAAf,EAAkBP,UAAlB,CAAP;AACD;;AACD,YAAIb,MAAM,KAAK,QAAf,EAAyB;AACvB,iBAAO;AAAEF,YAAAA,WAAF;AAAeuB,YAAAA,QAAQ,EAAE;AAAzB,WAAP;AACD;;AACD,eAAOZ,SAAS,CAACX,WAAD,EAAcmB,2BAAd,EAA2CC,4BAA3C,CAAhB,CAVqD,CAUqC;AAC3F,OArByB,CAuB1B;;;AACA,YAAMI,iBAAiB,GAAG,mBAAAZ,eAAe,MAAf,CAAAA,eAAe,EAAM,CAAC;AAAEF,QAAAA;AAAF,OAAD,KAAcA,IAAI,KAAKR,MAA7B,CAAzC;;AACA,UAAIsB,iBAAJ,EAAuB;AACrB,YAAI;AACFxB,UAAAA,WAAW,GAAG,MAAMA,WAAW,CAACyB,OAAZ,CAAoBvB,MAApB,EAA4BgB,MAA5B,CAApB;AACAlB,UAAAA,WAAW,GAAG,EAAE,GAAGA,WAAL;AAAkBqB,YAAAA,iBAAiB,EAAE;AAArC,WAAd;AACD,SAHD,CAIA,OAAOC,CAAP,EAAU;AACR,iBAAO,0BAAeA,CAAf,EAAkBP,UAAlB,CAAP;AACD;;AAED,eAAOJ,SAAS,CAACX,WAAD,EAAcD,MAAd,EAAsBqB,4BAAtB,CAAhB,CATqB,CASgD;AACtE;AACF;AACF,GAxD6B,CA0D9B;;;AACA,QAAMM,QAAQ,GAAG,8BAAmB1B,WAAnB,CAAjB;AACA,QAAM2B,QAAQ,GAAG,mCAAwB3B,WAAxB,CAAjB;;AACA,MAAI0B,QAAJ,EAAc;AACZ,WAAO;AAAE1B,MAAAA,WAAF;AAAe0B,MAAAA,QAAf;AAAyBC,MAAAA;AAAzB,KAAP;AACD;;AAED,MAAI,CAACZ,UAAL,EAAiB;AACf,QAAIR,OAAO,CAACqB,IAAZ,EAAkB;AAChB7B,MAAAA,MAAM,GAAG,sCAA2BC,WAA3B,EAAwCO,OAAO,CAACqB,IAAhD,EAAsD7B,MAAtD,CAAT,CADgB,CACwD;;AACxE,UAAI;AACFC,QAAAA,WAAW,GAAG,MAAMA,WAAW,CAACyB,OAAZ,CAAoBlB,OAAO,CAACqB,IAA5B,EAAkC7B,MAAlC,CAApB;AACAC,QAAAA,WAAW,GAAG,EAAE,GAAGA,WAAL;AAAkBqB,UAAAA,iBAAiB,EAAE;AAArC,SAAd;AACA,eAAO;AAAErB,UAAAA;AAAF,SAAP;AACD,OAJD,CAIE,OAAMsB,CAAN,EAAS;AACT,eAAO,0BAAeA,CAAf,CAAP;AACD;AACF;;AACD,QAAIR,IAAI,KAAK,SAAb,EAAwB;AACtB,aAAO;AAAEd,QAAAA;AAAF,OAAP;AACD;;AACD,UAAM,IAAI6B,oBAAJ,CAAkB;AAC5B;AACA,uBAAuB,qBAAAjB,eAAe,MAAf,CAAAA,eAAe,EAAQ,CAACkB,GAAD,EAAMC,IAAN,KAAeD,GAAG,GAAGA,GAAG,GAAG,IAAN,GAAaC,IAAI,CAACrB,IAArB,GAA4BqB,IAAI,CAACrB,IAA3D,EAAiE,EAAjE,CAAqE;AAC3G,KAHU,CAAN;AAID,GAnF6B,CAqF9B;;;AACA,MAAI,CAACK,UAAU,CAACiB,YAAX,EAAL,EAAgC;AAC9B,UAAMC,QAAQ,GAAG,uBAAYlB,UAAZ,EAAwBf,WAAxB,CAAjB;AACA,WAAO;AACLA,MAAAA,WADK;AAELiC,MAAAA,QAFK;AAGLN,MAAAA,QAAQ,EAAEA,QAAQ,CAACO,MAAT,GAAkBP,QAAlB,GAA4BtB;AAHjC,KAAP;AAKD;;AAED,QAAMK,IAAI,GAAGK,UAAU,CAACoB,OAAX,EAAb;AACA,QAAMC,IAAI,GAAGrB,UAAU,CAACsB,OAAX,EAAb;;AACA,MAAI;AACFrC,IAAAA,WAAW,GAAG,MAAMA,WAAW,CAACyB,OAAZ,CAAoBf,IAApB,EAA0B0B,IAA1B,CAApB;AACApC,IAAAA,WAAW,GAAG,EAAE,GAAGA,WAAL;AAAkBqB,MAAAA,iBAAiB,EAAE;AAArC,KAAd,CAFE,CAGF;AACA;;AACAtB,IAAAA,MAAM,GAAGgB,UAAU,CAACuB,qBAAX,EAAT;AACA/B,IAAAA,OAAO,GAAG,EAAE,GAAGA,OAAL;AAAcqB,MAAAA,IAAI,EAAEvB;AAApB,KAAV,CANE,CAMyC;;AAC3C,WAAOM,SAAS,CAACX,WAAD,EAAcD,MAAd,EAAsBQ,OAAtB,CAAhB,CAPE,CAO8C;AACjD,GARD,CAQE,OAAOe,CAAP,EAAU;AACV,WAAO,0BAAeA,CAAf,EAAkBP,UAAlB,CAAP;AACD;AACF","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 max-statements, max-depth, complexity */\nimport { AuthSdkError } from '../errors';\nimport { RemediationValues } from './remediators';\nimport { RemediateOptions, RemediationResponse } from './types';\nimport { \n IdxResponse,\n IdxActionParams, \n} from './types/idx-js';\nimport {\n getMessagesFromResponse,\n isTerminalResponse,\n filterValuesForRemediation,\n getRemediator,\n getNextStep,\n handleIdxError\n} from './util';\n\nexport interface RemediateActionWithOptionalParams {\n name: string;\n params?: IdxActionParams;\n}\n\nexport type RemediateAction = string | RemediateActionWithOptionalParams;\n\n\nfunction getActionFromValues(values: RemediationValues, idxResponse: IdxResponse): string | undefined {\n // Currently support resend actions only\n return Object.keys(idxResponse.actions).find(action => !!values.resend && action.includes('-resend'));\n}\n\nfunction removeActionFromValues(values: RemediationValues): RemediationValues {\n // Currently support resend actions only\n return {\n ...values,\n resend: undefined\n };\n}\n\nfunction removeActionFromOptions(options: RemediateOptions, actionName: string): RemediateOptions {\n let actions = options.actions || [];\n actions = actions.filter(entry => {\n if (typeof entry === 'string') {\n return entry !== actionName;\n }\n return entry.name !== actionName;\n });\n\n return { ...options, actions };\n}\n\n// This function is called recursively until it reaches success or cannot be remediated\nexport async function remediate(\n idxResponse: IdxResponse,\n values: RemediationValues,\n options: RemediateOptions\n): Promise<RemediationResponse> {\n let { neededToProceed, interactionCode } = idxResponse;\n const { flow } = options;\n\n // If the response contains an interaction code, there is no need to remediate\n if (interactionCode) {\n return { idxResponse };\n }\n\n const remediator = getRemediator(neededToProceed, values, options);\n\n // Try actions in idxResponse first\n const actionFromValues = getActionFromValues(values, idxResponse);\n const actionFromOptions = options.actions || [];\n const actions = [\n ...actionFromOptions,\n ...(actionFromValues && [actionFromValues] || []),\n ];\n if (actions) {\n for (let action of actions) {\n // Action can either be specified as a string, or as an object with name and optional params\n let params: IdxActionParams = {};\n if (typeof action !== 'string') {\n params = action.params || {};\n action = action.name;\n }\n let valuesWithoutExecutedAction = removeActionFromValues(values);\n let optionsWithoutExecutedAction = removeActionFromOptions(options, action);\n\n if (typeof idxResponse.actions[action] === 'function') {\n try {\n idxResponse = await idxResponse.actions[action](params);\n idxResponse = { ...idxResponse, requestDidSucceed: true };\n } catch (e) {\n return handleIdxError(e, remediator);\n }\n if (action === 'cancel') {\n return { idxResponse, canceled: true };\n }\n return remediate(idxResponse, valuesWithoutExecutedAction, optionsWithoutExecutedAction); // recursive call\n }\n\n // search for action in remediation list\n const remediationAction = neededToProceed.find(({ name }) => name === action);\n if (remediationAction) {\n try {\n idxResponse = await idxResponse.proceed(action, params);\n idxResponse = { ...idxResponse, requestDidSucceed: true };\n }\n catch (e) {\n return handleIdxError(e, remediator);\n }\n\n return remediate(idxResponse, values, optionsWithoutExecutedAction); // recursive call\n }\n }\n }\n\n // Do not attempt to remediate if response is in terminal state\n const terminal = isTerminalResponse(idxResponse);\n const messages = getMessagesFromResponse(idxResponse);\n if (terminal) {\n return { idxResponse, terminal, messages };\n }\n\n if (!remediator) {\n if (options.step) {\n values = filterValuesForRemediation(idxResponse, options.step, values); // include only requested values\n try {\n idxResponse = await idxResponse.proceed(options.step, values);\n idxResponse = { ...idxResponse, requestDidSucceed: true };\n return { idxResponse };\n } catch(e) {\n return handleIdxError(e);\n }\n }\n if (flow === 'default') {\n return { idxResponse };\n }\n throw new AuthSdkError(`\n No remediation can match current flow, check policy settings in your org.\n Remediations: [${neededToProceed.reduce((acc, curr) => acc ? acc + ' ,' + curr.name : curr.name, '')}]\n `);\n }\n\n // Return next step to the caller\n if (!remediator.canRemediate()) {\n const nextStep = getNextStep(remediator, idxResponse);\n return {\n idxResponse,\n nextStep,\n messages: messages.length ? messages: undefined\n };\n }\n\n const name = remediator.getName();\n const data = remediator.getData();\n try {\n idxResponse = await idxResponse.proceed(name, data);\n idxResponse = { ...idxResponse, requestDidSucceed: true };\n // We may want to trim the values bag for the next remediation\n // Let the remediator decide what the values should be (default to current values)\n values = remediator.getValuesAfterProceed();\n options = { ...options, step: undefined }; // do not re-use the step\n return remediate(idxResponse, values, options); // recursive call\n } catch (e) {\n return handleIdxError(e, remediator);\n }\n}\n"],"file":"remediate.js"}
1
+ {"version":3,"sources":["../../../lib/idx/remediate.ts"],"names":["getActionFromValues","values","idxResponse","actions","action","resend","removeActionFromValues","undefined","removeActionFromOptions","options","actionName","entry","name","remediate","authClient","neededToProceed","interactionCode","flow","remediator","actionFromValues","actionFromOptions","params","valuesWithoutExecutedAction","optionsWithoutExecutedAction","requestDidSucceed","e","canceled","remediationAction","proceed","terminal","messages","step","AuthSdkError","acc","curr","canRemediate","nextStep","length","getName","data","getData","getValuesAfterProceed"],"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 max-statements, max-depth, complexity */\nimport { OktaAuthInterface } from '../types';\nimport { AuthSdkError } from '../errors';\nimport { RemediationValues } from './remediators';\nimport { RemediateOptions, RemediationResponse } from './types';\nimport { \n IdxResponse,\n IdxActionParams, \n} from './types/idx-js';\nimport {\n getMessagesFromResponse,\n isTerminalResponse,\n filterValuesForRemediation,\n getRemediator,\n getNextStep,\n handleIdxError\n} from './util';\n\nexport interface RemediateActionWithOptionalParams {\n name: string;\n params?: IdxActionParams;\n}\n\nexport type RemediateAction = string | RemediateActionWithOptionalParams;\n\n\nfunction getActionFromValues(values: RemediationValues, idxResponse: IdxResponse): string | undefined {\n // Currently support resend actions only\n return Object.keys(idxResponse.actions).find(action => !!values.resend && action.includes('-resend'));\n}\n\nfunction removeActionFromValues(values: RemediationValues): RemediationValues {\n // Currently support resend actions only\n return {\n ...values,\n resend: undefined\n };\n}\n\nfunction removeActionFromOptions(options: RemediateOptions, actionName: string): RemediateOptions {\n let actions = options.actions || [];\n actions = actions.filter(entry => {\n if (typeof entry === 'string') {\n return entry !== actionName;\n }\n return entry.name !== actionName;\n });\n\n return { ...options, actions };\n}\n\n// This function is called recursively until it reaches success or cannot be remediated\nexport async function remediate(\n authClient: OktaAuthInterface,\n idxResponse: IdxResponse,\n values: RemediationValues,\n options: RemediateOptions\n): Promise<RemediationResponse> {\n let { neededToProceed, interactionCode } = idxResponse;\n const { flow } = options;\n\n // If the response contains an interaction code, there is no need to remediate\n if (interactionCode) {\n return { idxResponse };\n }\n\n const remediator = getRemediator(neededToProceed, values, options);\n\n // Try actions in idxResponse first\n const actionFromValues = getActionFromValues(values, idxResponse);\n const actionFromOptions = options.actions || [];\n const actions = [\n ...actionFromOptions,\n ...(actionFromValues && [actionFromValues] || []),\n ];\n if (actions) {\n for (let action of actions) {\n // Action can either be specified as a string, or as an object with name and optional params\n let params: IdxActionParams = {};\n if (typeof action !== 'string') {\n params = action.params || {};\n action = action.name;\n }\n let valuesWithoutExecutedAction = removeActionFromValues(values);\n let optionsWithoutExecutedAction = removeActionFromOptions(options, action);\n\n if (typeof idxResponse.actions[action] === 'function') {\n try {\n idxResponse = await idxResponse.actions[action](params);\n idxResponse = { ...idxResponse, requestDidSucceed: true };\n } catch (e) {\n return handleIdxError(authClient, e, remediator);\n }\n if (action === 'cancel') {\n return { idxResponse, canceled: true };\n }\n return remediate(\n authClient, \n idxResponse, \n valuesWithoutExecutedAction, \n optionsWithoutExecutedAction\n ); // recursive call\n }\n\n // search for action in remediation list\n const remediationAction = neededToProceed.find(({ name }) => name === action);\n if (remediationAction) {\n try {\n idxResponse = await idxResponse.proceed(action, params);\n idxResponse = { ...idxResponse, requestDidSucceed: true };\n }\n catch (e) {\n return handleIdxError(authClient, e, remediator);\n }\n\n return remediate(authClient, idxResponse, values, optionsWithoutExecutedAction); // recursive call\n }\n }\n }\n\n // Do not attempt to remediate if response is in terminal state\n const terminal = isTerminalResponse(idxResponse);\n const messages = getMessagesFromResponse(idxResponse);\n if (terminal) {\n return { idxResponse, terminal, messages };\n }\n\n if (!remediator) {\n if (options.step) {\n values = filterValuesForRemediation(idxResponse, options.step, values); // include only requested values\n try {\n idxResponse = await idxResponse.proceed(options.step, values);\n idxResponse = { ...idxResponse, requestDidSucceed: true };\n return { idxResponse };\n } catch(e) {\n return handleIdxError(authClient, e);\n }\n }\n if (flow === 'default') {\n return { idxResponse };\n }\n throw new AuthSdkError(`\n No remediation can match current flow, check policy settings in your org.\n Remediations: [${neededToProceed.reduce((acc, curr) => acc ? acc + ' ,' + curr.name : curr.name, '')}]\n `);\n }\n\n // Return next step to the caller\n if (!remediator.canRemediate()) {\n const nextStep = getNextStep(authClient, remediator, idxResponse);\n return {\n idxResponse,\n nextStep,\n messages: messages.length ? messages: undefined\n };\n }\n\n const name = remediator.getName();\n const data = remediator.getData();\n try {\n idxResponse = await idxResponse.proceed(name, data);\n idxResponse = { ...idxResponse, requestDidSucceed: true };\n // We may want to trim the values bag for the next remediation\n // Let the remediator decide what the values should be (default to current values)\n values = remediator.getValuesAfterProceed();\n options = { ...options, step: undefined }; // do not re-use the step\n return remediate(authClient, idxResponse, values, options); // recursive call\n } catch (e) {\n return handleIdxError(authClient, e, remediator);\n }\n}\n"],"file":"remediate.js"}
@@ -6,6 +6,8 @@ exports.AuthenticatorEnrollmentData = void 0;
6
6
 
7
7
  var _find = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/find"));
8
8
 
9
+ var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
10
+
9
11
  var _values = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/values"));
10
12
 
11
13
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
@@ -42,17 +44,24 @@ class AuthenticatorEnrollmentData extends _AuthenticatorData.AuthenticatorData {
42
44
  };
43
45
  }
44
46
 
45
- getInputAuthenticator() {
46
- return [{
47
+ getInputAuthenticator(remediation) {
48
+ var _context2;
49
+
50
+ return (0, _map.default)(_context2 = [{
47
51
  name: 'methodType',
48
- type: 'string',
49
- required: true
52
+ type: 'string'
50
53
  }, {
51
54
  name: 'phoneNumber',
52
- type: 'string',
53
- required: true,
54
- label: 'Phone Number'
55
- }];
55
+ label: 'Phone Number',
56
+ type: 'string'
57
+ }]).call(_context2, item => {
58
+ var _context3;
59
+
60
+ const value = (0, _find.default)(_context3 = remediation.form.value).call(_context3, val => val.name === item.name);
61
+ return { ...value,
62
+ ...item
63
+ };
64
+ });
56
65
  }
57
66
 
58
67
  mapAuthenticatorDataFromValues(data) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../lib/idx/remediators/AuthenticatorEnrollmentData.ts"],"names":["AuthenticatorEnrollmentData","AuthenticatorData","mapAuthenticator","authenticatorData","getAuthenticatorData","authenticatorFromRemediation","remediation","id","form","value","name","methodType","phoneNumber","getInputAuthenticator","type","required","label","mapAuthenticatorDataFromValues","data"],"mappings":";;;;;;;;;;;;AAcA;;AACA;;AAfA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAUO,MAAMA,2BAAN,SAA0CC,oCAA1C,CAA+F;AAGpGC,EAAAA,gBAAgB,GAAG;AAAA;;AACjB,UAAMC,iBAAiB,GAAG,KAAKC,oBAAL,EAA1B;AACA,UAAMC,4BAA4B,GAAG,2CAAgC,KAAKC,WAArC,CAArC;AACA,WAAO;AACLC,MAAAA,EAAE,EAAE,8BAAAF,4BAA4B,CAACG,IAA7B,CAAmCC,KAAnC,iBACI,CAAC;AAAEC,QAAAA;AAAF,OAAD,KAAcA,IAAI,KAAK,IAD3B,EACkCD,KAFjC;AAGLE,MAAAA,UAAU,EAAER,iBAAiB,CAAEQ,UAH1B;AAILC,MAAAA,WAAW,EAAET,iBAAiB,CAAES;AAJ3B,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,6BAAkB,IAAlB,CAAN;;AACA,QAAI,CAACM,IAAD,IAAS,CAACN,WAAd,EAA2B;AACzB;AACD;;AAED,WAAO,EACL,IAAIM,IAAI,IAAIA,IAAZ,CADK;AAEL,UAAIN,WAAW,IAAI;AAAEA,QAAAA;AAAF,OAAnB;AAFK,KAAP;AAID;;AAlCmG;;;8BAAzFZ,2B,qBACc,+B","sourcesContent":["/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\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<AuthenticatorEnrollmentDataValues> {\n static remediationName = 'authenticator-enrollment-data';\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 if (!data && !phoneNumber) {\n return;\n }\n\n return { \n ...(data && data), \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","name","methodType","phoneNumber","getInputAuthenticator","type","label","item","val","mapAuthenticatorDataFromValues","data"],"mappings":";;;;;;;;;;;;;;AAcA;;AACA;;AAfA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAUO,MAAMA,2BAAN,SAA0CC,oCAA1C,CAA+F;AAGpGC,EAAAA,gBAAgB,GAAG;AAAA;;AACjB,UAAMC,iBAAiB,GAAG,KAAKC,oBAAL,EAA1B;AACA,UAAMC,4BAA4B,GAAG,2CAAgC,KAAKC,WAArC,CAArC;AACA,WAAO;AACLC,MAAAA,EAAE,EAAE,8BAAAF,4BAA4B,CAACG,IAA7B,CAAmCC,KAAnC,iBACI,CAAC;AAAEC,QAAAA;AAAF,OAAD,KAAcA,IAAI,KAAK,IAD3B,EACkCD,KAFjC;AAGLE,MAAAA,UAAU,EAAER,iBAAiB,CAAEQ,UAH1B;AAILC,MAAAA,WAAW,EAAET,iBAAiB,CAAES;AAJ3B,KAAP;AAMD;;AAEDC,EAAAA,qBAAqB,CAACP,WAAD,EAAc;AAAA;;AACjC,WAAO,+BACL;AAAEI,MAAAA,IAAI,EAAE,YAAR;AAAsBI,MAAAA,IAAI,EAAE;AAA5B,KADK,EAEL;AAAEJ,MAAAA,IAAI,EAAE,aAAR;AAAuBK,MAAAA,KAAK,EAAE,cAA9B;AAA8CD,MAAAA,IAAI,EAAE;AAApD,KAFK,mBAGDE,IAAI,IAAI;AAAA;;AACZ,YAAMP,KAAK,GAAG,+BAAAH,WAAW,CAACE,IAAZ,CAAiBC,KAAjB,kBAA4BQ,GAAG,IAAIA,GAAG,CAACP,IAAJ,KAAaM,IAAI,CAACN,IAArD,CAAd;AACA,aAAO,EAAE,GAAGD,KAAL;AAAY,WAAGO;AAAf,OAAP;AACD,KANM,CAAP;AAOD;;AAESE,EAAAA,8BAA8B,CAACC,IAAD,EAAQ;AAC9C;AACAA,IAAAA,IAAI,GAAG,MAAMD,8BAAN,CAAqCC,IAArC,CAAP,CAF8C,CAG9C;;AACA,UAAM;AAAEP,MAAAA;AAAF,6BAAkB,IAAlB,CAAN;;AACA,QAAI,CAACO,IAAD,IAAS,CAACP,WAAd,EAA2B;AACzB;AACD;;AAED,WAAO,EACL,IAAIO,IAAI,IAAIA,IAAZ,CADK;AAEL,UAAIP,WAAW,IAAI;AAAEA,QAAAA;AAAF,OAAnB;AAFK,KAAP;AAID;;AArCmG;;;8BAAzFZ,2B,qBACc,+B","sourcesContent":["/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\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<AuthenticatorEnrollmentDataValues> {\n static remediationName = 'authenticator-enrollment-data';\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(remediation) {\n return [\n { name: 'methodType', type: 'string' }, \n { name: 'phoneNumber', label: 'Phone Number', type: 'string' }\n ].map(item => {\n const value = remediation.form.value.find(val => val.name === item.name);\n return { ...value, ...item };\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 if (!data && !phoneNumber) {\n return;\n }\n\n return { \n ...(data && data), \n ...(phoneNumber && { phoneNumber }) \n };\n }\n\n}\n"],"file":"AuthenticatorEnrollmentData.js"}
@@ -84,7 +84,8 @@ class AuthenticatorVerificationData extends _AuthenticatorData.AuthenticatorData
84
84
  return {
85
85
  name: 'methodType',
86
86
  type: 'string',
87
- required: true
87
+ required: true,
88
+ options: methodType.options
88
89
  };
89
90
  } // no methodType, then return form values
90
91
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../lib/idx/remediators/AuthenticatorVerificationData.ts"],"names":["AuthenticatorVerificationData","AuthenticatorData","constructor","remediation","values","options","shouldProceedWithEmailAuthenticator","authenticator","methods","length","type","canRemediate","mapAuthenticator","authenticatorFromRemediation","getAuthenticatorFromRemediation","form","value","acc","curr","name","AuthSdkError","getAuthenticatorData","getInputAuthenticator","methodType","required","inputs","getValuesAfterProceed","trimmedValues","valueKey"],"mappings":";;;;;;;;;;;;;;;;;;AAcA;;AACA;;AAfA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AASO,MAAMA,6BAAN,SAA4CC,oCAA5C,CAAmG;AAG1D;AAE9CC,EAAAA,WAAW,CAACC,WAAD,EAA8BC,MAA+B,GAAG,EAAhE,EAAoEC,OAAyB,GAAG,EAAhG,EAAoG;AAC7G,UAAMF,WAAN,EAAmBC,MAAnB,EAD6G,CAG7G;;AACA,SAAKE,mCAAL,GAA2CD,OAAO,CAACC,mCAAR,KAAgD,KAAhD,IACtC,KAAKC,aAAL,CAAmBC,OAAnB,CAA2BC,MAA3B,KAAsC,CADA,IAEtC,KAAKF,aAAL,CAAmBC,OAAnB,CAA2B,CAA3B,EAA8BE,IAA9B,KAAuC,OAF5C;AAGD;;AAEDC,EAAAA,YAAY,GAAG;AACb;AACA,QAAI,KAAKL,mCAAL,KAA6C,KAAjD,EAAwD;AACtD,aAAO,IAAP;AACD;;AACD,WAAO,MAAMK,YAAN,EAAP;AACD;;AAEDC,EAAAA,gBAAgB,GAAG;AACjB;AACA,QAAI,KAAKN,mCAAL,KAA6C,KAAjD,EAAwD;AAAA;;AACtD,YAAMO,4BAA4B,GAAG,KAAKC,+BAAL,EAArC;AACA,sCAAOD,4BAA4B,CAACE,IAApC,0DAAO,sDAAmCC,KAAnC,iBAAgD,CAACC,GAAD,EAAMC,IAAN,KAAe;AACpE,YAAIA,IAAI,CAACF,KAAT,EAAgB;AACdC,UAAAA,GAAG,CAACC,IAAI,CAACC,IAAN,CAAH,GAAiBD,IAAI,CAACF,KAAtB;AACD,SAFD,MAEO,IAAIE,IAAI,CAACb,OAAT,EAAkB;AACvBY,UAAAA,GAAG,CAACC,IAAI,CAACC,IAAN,CAAH,GAAiBD,IAAI,CAACb,OAAL,CAAc,CAAd,EAAiBW,KAAlC;AACD,SAFM,MAEA;AACL,gBAAM,IAAII,oBAAJ,CAAkB,wCAAuCF,IAAK,EAA9D,CAAN;AACD;;AACD,eAAOD,GAAP;AACD,OATM,EASJ,EATI,CAAP;AAUD;;AAED,WAAO,KAAKI,oBAAL,EAAP;AACD;;AAEDC,EAAAA,qBAAqB,GAAG;AAAA;;AACtB,UAAMf,aAAa,GAAG,KAAKO,+BAAL,EAAtB;AACA,UAAMS,UAAU,GAAG,+BAAAhB,aAAa,CAACQ,IAAd,CAAoBC,KAApB,kBAA+B,CAAC;AAAEG,MAAAA;AAAF,KAAD,KAAcA,IAAI,KAAK,YAAtD,CAAnB,CAFsB,CAGtB;;AACA,QAAII,UAAU,IAAIA,UAAU,CAAClB,OAA7B,EAAsC;AACpC,aAAO;AAAEc,QAAAA,IAAI,EAAE,YAAR;AAAsBT,QAAAA,IAAI,EAAE,QAA5B;AAAsCc,QAAAA,QAAQ,EAAE;AAAhD,OAAP;AACD,KANqB,CAOtB;;;AACA,UAAMC,MAAM,GAAG,CAAC,GAAGlB,aAAa,CAACQ,IAAd,CAAoBC,KAAxB,CAAf;AACA,WAAOS,MAAP;AACD;;AAEDC,EAAAA,qBAAqB,GAAwC;AAAA;;AAC3D,SAAKtB,MAAL,GAAc,MAAMsB,qBAAN,EAAd;AACA,QAAIC,aAAa,GAAG,yEAAY,IAAZ,oBAAgCC,QAAQ,IAAIA,QAAQ,KAAK,eAAzD,CAApB;AACA,WAAO,qBAAAD,aAAa,MAAb,CAAAA,aAAa,EAAQ,CAACvB,MAAD,EAASwB,QAAT,MAAuB,EAAC,GAAGxB,MAAJ;AAAY,OAACwB,QAAD,GAAY,2BAAYA,QAAZ;AAAxB,KAAvB,CAAR,EAAgF,EAAhF,CAApB;AACD;;AAzDuG;;;8BAA7F5B,6B,qBACc,iC","sourcesContent":["/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\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 { AuthSdkError } from '../../errors';\nimport { AuthenticatorData, AuthenticatorDataValues } from './Base/AuthenticatorData';\nimport { IdxRemediation, RemediateOptions } from '../types';\n\nexport type AuthenticatorVerificationDataValues = AuthenticatorDataValues;\n\nexport class AuthenticatorVerificationData extends AuthenticatorData<AuthenticatorVerificationDataValues> {\n static remediationName = 'authenticator-verification-data';\n\n shouldProceedWithEmailAuthenticator: boolean; // will be removed in next major version\n\n constructor(remediation: IdxRemediation, values: AuthenticatorDataValues = {}, options: RemediateOptions = {}) {\n super(remediation, values);\n\n // will be removed in next major version\n this.shouldProceedWithEmailAuthenticator = options.shouldProceedWithEmailAuthenticator !== false\n && this.authenticator.methods.length === 1 \n && this.authenticator.methods[0].type === 'email';\n }\n\n canRemediate() {\n // auto proceed if there is only one method (will be removed in next major version)\n if (this.shouldProceedWithEmailAuthenticator !== false) {\n return true;\n }\n return super.canRemediate();\n }\n\n mapAuthenticator() {\n // auto proceed with the only methodType option\n if (this.shouldProceedWithEmailAuthenticator !== false) {\n const authenticatorFromRemediation = this.getAuthenticatorFromRemediation();\n return authenticatorFromRemediation.form?.value.reduce((acc, curr) => {\n if (curr.value) {\n acc[curr.name] = curr.value;\n } else if (curr.options) {\n acc[curr.name] = curr.options![0].value;\n } else {\n throw new AuthSdkError(`Unsupported authenticator data type: ${curr}`);\n }\n return acc;\n }, {});\n }\n\n return this.getAuthenticatorData();\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 getValuesAfterProceed(): AuthenticatorVerificationDataValues {\n this.values = super.getValuesAfterProceed();\n let trimmedValues = Object.keys(this.values).filter(valueKey => valueKey !== 'authenticator');\n return trimmedValues.reduce((values, valueKey) => ({...values, [valueKey]: this.values[valueKey]}), {});\n }\n}\n"],"file":"AuthenticatorVerificationData.js"}
1
+ {"version":3,"sources":["../../../../lib/idx/remediators/AuthenticatorVerificationData.ts"],"names":["AuthenticatorVerificationData","AuthenticatorData","constructor","remediation","values","options","shouldProceedWithEmailAuthenticator","authenticator","methods","length","type","canRemediate","mapAuthenticator","authenticatorFromRemediation","getAuthenticatorFromRemediation","form","value","acc","curr","name","AuthSdkError","getAuthenticatorData","getInputAuthenticator","methodType","required","inputs","getValuesAfterProceed","trimmedValues","valueKey"],"mappings":";;;;;;;;;;;;;;;;;;AAcA;;AACA;;AAfA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AASO,MAAMA,6BAAN,SAA4CC,oCAA5C,CAAmG;AAG1D;AAE9CC,EAAAA,WAAW,CACTC,WADS,EAETC,MAA+B,GAAG,EAFzB,EAGTC,OAAyB,GAAG,EAHnB,EAIT;AACA,UAAMF,WAAN,EAAmBC,MAAnB,EADA,CAGA;;AACA,SAAKE,mCAAL,GAA2CD,OAAO,CAACC,mCAAR,KAAgD,KAAhD,IACtC,KAAKC,aAAL,CAAmBC,OAAnB,CAA2BC,MAA3B,KAAsC,CADA,IAEtC,KAAKF,aAAL,CAAmBC,OAAnB,CAA2B,CAA3B,EAA8BE,IAA9B,KAAuC,OAF5C;AAGD;;AAEDC,EAAAA,YAAY,GAAG;AACb;AACA,QAAI,KAAKL,mCAAL,KAA6C,KAAjD,EAAwD;AACtD,aAAO,IAAP;AACD;;AACD,WAAO,MAAMK,YAAN,EAAP;AACD;;AAEDC,EAAAA,gBAAgB,GAAG;AACjB;AACA,QAAI,KAAKN,mCAAL,KAA6C,KAAjD,EAAwD;AAAA;;AACtD,YAAMO,4BAA4B,GAAG,KAAKC,+BAAL,EAArC;AACA,sCAAOD,4BAA4B,CAACE,IAApC,0DAAO,sDAAmCC,KAAnC,iBAAgD,CAACC,GAAD,EAAMC,IAAN,KAAe;AACpE,YAAIA,IAAI,CAACF,KAAT,EAAgB;AACdC,UAAAA,GAAG,CAACC,IAAI,CAACC,IAAN,CAAH,GAAiBD,IAAI,CAACF,KAAtB;AACD,SAFD,MAEO,IAAIE,IAAI,CAACb,OAAT,EAAkB;AACvBY,UAAAA,GAAG,CAACC,IAAI,CAACC,IAAN,CAAH,GAAiBD,IAAI,CAACb,OAAL,CAAc,CAAd,EAAiBW,KAAlC;AACD,SAFM,MAEA;AACL,gBAAM,IAAII,oBAAJ,CAAkB,wCAAuCF,IAAK,EAA9D,CAAN;AACD;;AACD,eAAOD,GAAP;AACD,OATM,EASJ,EATI,CAAP;AAUD;;AAED,WAAO,KAAKI,oBAAL,EAAP;AACD;;AAEDC,EAAAA,qBAAqB,GAAG;AAAA;;AACtB,UAAMf,aAAa,GAAG,KAAKO,+BAAL,EAAtB;AACA,UAAMS,UAAU,GAAG,+BAAAhB,aAAa,CAACQ,IAAd,CAAoBC,KAApB,kBAA+B,CAAC;AAAEG,MAAAA;AAAF,KAAD,KAAcA,IAAI,KAAK,YAAtD,CAAnB,CAFsB,CAGtB;;AACA,QAAII,UAAU,IAAIA,UAAU,CAAClB,OAA7B,EAAsC;AACpC,aAAO;AACLc,QAAAA,IAAI,EAAE,YADD;AAELT,QAAAA,IAAI,EAAE,QAFD;AAGLc,QAAAA,QAAQ,EAAE,IAHL;AAILnB,QAAAA,OAAO,EAAEkB,UAAU,CAAClB;AAJf,OAAP;AAMD,KAXqB,CAYtB;;;AACA,UAAMoB,MAAM,GAAG,CAAC,GAAGlB,aAAa,CAACQ,IAAd,CAAoBC,KAAxB,CAAf;AACA,WAAOS,MAAP;AACD;;AAEDC,EAAAA,qBAAqB,GAAwC;AAAA;;AAC3D,SAAKtB,MAAL,GAAc,MAAMsB,qBAAN,EAAd;AACA,QAAIC,aAAa,GAAG,yEAAY,IAAZ,oBAAgCC,QAAQ,IAAIA,QAAQ,KAAK,eAAzD,CAApB;AACA,WAAO,qBAAAD,aAAa,MAAb,CAAAA,aAAa,EAAQ,CAACvB,MAAD,EAASwB,QAAT,MAAuB,EAAC,GAAGxB,MAAJ;AAAY,OAACwB,QAAD,GAAY,2BAAYA,QAAZ;AAAxB,KAAvB,CAAR,EAAgF,EAAhF,CAApB;AACD;;AAlEuG;;;8BAA7F5B,6B,qBACc,iC","sourcesContent":["/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\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 { AuthSdkError } from '../../errors';\nimport { AuthenticatorData, AuthenticatorDataValues } from './Base/AuthenticatorData';\nimport { IdxRemediation, RemediateOptions } from '../types';\n\nexport type AuthenticatorVerificationDataValues = AuthenticatorDataValues;\n\nexport class AuthenticatorVerificationData extends AuthenticatorData<AuthenticatorVerificationDataValues> {\n static remediationName = 'authenticator-verification-data';\n\n shouldProceedWithEmailAuthenticator: boolean; // will be removed in next major version\n\n constructor(\n remediation: IdxRemediation, \n values: AuthenticatorDataValues = {}, \n options: RemediateOptions = {}\n ) {\n super(remediation, values);\n\n // will be removed in next major version\n this.shouldProceedWithEmailAuthenticator = options.shouldProceedWithEmailAuthenticator !== false\n && this.authenticator.methods.length === 1 \n && this.authenticator.methods[0].type === 'email';\n }\n\n canRemediate() {\n // auto proceed if there is only one method (will be removed in next major version)\n if (this.shouldProceedWithEmailAuthenticator !== false) {\n return true;\n }\n return super.canRemediate();\n }\n\n mapAuthenticator() {\n // auto proceed with the only methodType option\n if (this.shouldProceedWithEmailAuthenticator !== false) {\n const authenticatorFromRemediation = this.getAuthenticatorFromRemediation();\n return authenticatorFromRemediation.form?.value.reduce((acc, curr) => {\n if (curr.value) {\n acc[curr.name] = curr.value;\n } else if (curr.options) {\n acc[curr.name] = curr.options![0].value;\n } else {\n throw new AuthSdkError(`Unsupported authenticator data type: ${curr}`);\n }\n return acc;\n }, {});\n }\n\n return this.getAuthenticatorData();\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 { \n name: 'methodType', \n type: 'string', \n required: true, \n options: methodType.options \n };\n }\n // no methodType, then return form values\n const inputs = [...authenticator.form!.value];\n return inputs;\n }\n\n getValuesAfterProceed(): AuthenticatorVerificationDataValues {\n this.values = super.getValuesAfterProceed();\n let trimmedValues = Object.keys(this.values).filter(valueKey => valueKey !== 'authenticator');\n return trimmedValues.reduce((values, valueKey) => ({...values, [valueKey]: this.values[valueKey]}), {});\n }\n}\n"],"file":"AuthenticatorVerificationData.js"}
@@ -70,10 +70,11 @@ class AuthenticatorData extends _Remediator.Remediator {
70
70
 
71
71
  canRemediate() {
72
72
  return (0, _values.default)(this).authenticatorsData.some(data => (0, _util.compareAuthenticators)(this.authenticator, data));
73
- }
73
+ } // TODO: remove this override method in the next major version - OKTA-491236
74
+
74
75
 
75
- getNextStep() {
76
- const common = super.getNextStep();
76
+ getNextStep(authClient) {
77
+ const common = super.getNextStep(authClient);
77
78
  const options = this.getMethodTypes();
78
79
  return { ...common,
79
80
  ...(options && {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../lib/idx/remediators/Base/AuthenticatorData.ts"],"names":["AuthenticatorData","Remediator","constructor","remediation","values","authenticator","getAuthenticator","formatAuthenticatorData","authenticatorData","getAuthenticatorData","authenticatorsData","data","mapAuthenticatorDataFromValues","push","canRemediate","some","getNextStep","common","options","getMethodTypes","methodType","id","enrollmentId","getAuthenticatorFromRemediation","value","name","form","getValuesAfterProceed"],"mappings":";;;;;;;;;;;;;;AAcA;;AAEA;;AACA;;AAjBA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAYA;AACO,MAAMA,iBAAN,SAA6FC,sBAA7F,CAA2G;AAGhHC,EAAAA,WAAW,CAACC,WAAD,EAA8BC,MAAS,GAAG,EAA1C,EAAmD;AAC5D,UAAMD,WAAN,EAAmBC,MAAnB,EAD4D,CAG5D;;AACA,SAAKC,aAAL,GAAqB,KAAKC,gBAAL,EAArB;AAEA,SAAKC,uBAAL;AACD;;AAESA,EAAAA,uBAAuB,GAAG;AAClC,UAAMC,iBAAiB,GAAG,KAAKC,oBAAL,EAA1B;;AACA,QAAID,iBAAJ,EAAuB;AAAA;;AACrB,iCAAYE,kBAAZ,GAAiC,wDAAYA,kBAAZ,iBAAoCC,IAAI,IAAI;AAC3E,YAAI,iCAAsB,KAAKN,aAA3B,EAA0CM,IAA1C,CAAJ,EAAqD;AACnD,iBAAO,KAAKC,8BAAL,CAAoCD,IAApC,CAAP;AACD;;AACD,eAAOA,IAAP;AACD,OALgC,CAAjC;AAMD,KAPD,MAOO;AACL,YAAMA,IAAI,GAAG,KAAKC,8BAAL,EAAb;;AACA,UAAID,IAAJ,EAAU;AACR,mCAAYD,kBAAZ,CAAgCG,IAAhC,CAAqCF,IAArC;AACD;AACF;AACF;;AAESF,EAAAA,oBAAoB,GAAG;AAAA;;AAC/B,WAAO,0DAAYC,kBAAZ,kBACEC,IAAD,IAAU,iCAAsB,KAAKN,aAA3B,EAA0CM,IAA1C,CADX,CAAP;AAED;;AAEDG,EAAAA,YAAY,GAAG;AACb,WAAO,2BAAYJ,kBAAZ,CACJK,IADI,CACCJ,IAAI,IAAI,iCAAsB,KAAKN,aAA3B,EAA0CM,IAA1C,CADT,CAAP;AAED;;AAEDK,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;;AAESN,EAAAA,8BAA8B,CAACJ,iBAAD,EAAqB;AAC3D;AACA,QAAI;AAAEY,MAAAA,UAAF;AAAcf,MAAAA;AAAd,6BAAgC,IAAhC,CAAJ;;AACA,QAAI,CAACe,UAAD,IAAe,4BAAgBf,aAAhB,CAAnB,EAAmD;AAClDe,MAAAA,UAAU,GAAGf,aAAH,aAAGA,aAAH,uBAAGA,aAAa,CAAEe,UAA5B;AACA;;AAED,UAAM;AAAEC,MAAAA,EAAF;AAAMC,MAAAA;AAAN,QAAuB,KAAKjB,aAAlC;AACA,UAAMM,IAAI,GAAG;AACXU,MAAAA,EADW;AAEXC,MAAAA,YAFW;AAGX,UAAId,iBAAiB,IAAIA,iBAAzB,CAHW;AAIX,UAAIY,UAAU,IAAI;AAAEA,QAAAA;AAAF,OAAlB;AAJW,KAAb;AAOA,WAAOT,IAAI,CAACS,UAAL,GAAkBT,IAAlB,GAAyB,IAAhC;AACD;;AAESY,EAAAA,+BAA+B,GAAwB;AAAA;;AAC/D,UAAMlB,aAAa,GAAG,oCAAKF,WAAL,CAAiBqB,KAAjB,kBACd,CAAC;AAAEC,MAAAA;AAAF,KAAD,KAAcA,IAAI,KAAK,eADT,CAAtB;AAEA,WAAOpB,aAAP;AACD;;AAEOc,EAAAA,cAAc,GAAgB;AAAA;;AACpC,UAAMd,aAAkC,GAAG,KAAKkB,+BAAL,EAA3C;AACA,0BAAO,+BAAAlB,aAAa,CAACqB,IAAd,CAAoBF,KAApB,kBAA+B,CAAC;AAAEC,MAAAA;AAAF,KAAD,KAAcA,IAAI,KAAK,YAAtD,CAAP,gDAAO,YAAqEP,OAA5E;AACD;;AAEDS,EAAAA,qBAAqB,GAAM;AAAA;;AACzB,SAAKvB,MAAL,GAAc,MAAMuB,qBAAN,EAAd,CADyB,CAEzB;;AACA,UAAMjB,kBAAkB,GAAG,4DAAYA,kBAAZ,kBACjBC,IAAI,IAAI,iCAAsB,KAAKN,aAA3B,EAA0CM,IAA1C,MAAoD,IAD3C,CAA3B;AAEA,WAAO,EAAE,wBAAG,IAAH,CAAF;AAAkBD,MAAAA;AAAlB,KAAP;AACD;;AAnF+G","sourcesContent":["/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\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, IdxAuthenticator } from '../../types/idx-js';\nimport { isAuthenticator } from '../../types';\nimport { compareAuthenticators } from '../../authenticator/util';\n\nexport type AuthenticatorDataValues = RemediationValues & {\n methodType?: string;\n};\n\n// Base class - DO NOT expose static remediationName\nexport class AuthenticatorData<T extends AuthenticatorDataValues = AuthenticatorDataValues> extends Remediator<T> {\n authenticator: IdxAuthenticator;\n\n constructor(remediation: IdxRemediation, values: T = {} as T) {\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 (compareAuthenticators(this.authenticator, data)) {\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((data) => compareAuthenticators(this.authenticator, data));\n }\n\n canRemediate() {\n return this.values.authenticatorsData!\n .some(data => compareAuthenticators(this.authenticator, data));\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 let { methodType, authenticator } = this.values;\n if (!methodType && isAuthenticator(authenticator)) {\n methodType = authenticator?.methodType;\n }\n \n const { id, enrollmentId } = this.authenticator;\n const data = { \n id,\n enrollmentId,\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') as IdxRemediationValue;\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 as IdxOption[];\n }\n\n getValuesAfterProceed(): T {\n this.values = super.getValuesAfterProceed();\n // remove used authenticatorData\n const authenticatorsData = this.values.authenticatorsData!\n .filter(data => compareAuthenticators(this.authenticator, data) !== true);\n return { ...this.values, authenticatorsData };\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","data","mapAuthenticatorDataFromValues","push","canRemediate","some","getNextStep","authClient","common","options","getMethodTypes","methodType","id","enrollmentId","getAuthenticatorFromRemediation","value","name","form","getValuesAfterProceed"],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\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, IdxAuthenticator } from '../../types/idx-js';\nimport { isAuthenticator } from '../../types';\nimport { compareAuthenticators } from '../../authenticator/util';\nimport { OktaAuthInterface } from '../../../types';\n\nexport type AuthenticatorDataValues = RemediationValues & {\n methodType?: string;\n};\n\n// Base class - DO NOT expose static remediationName\nexport class AuthenticatorData<T extends AuthenticatorDataValues = AuthenticatorDataValues> extends Remediator<T> {\n authenticator: IdxAuthenticator;\n\n constructor(remediation: IdxRemediation, values: T = {} as T) {\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 (compareAuthenticators(this.authenticator, data)) {\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((data) => compareAuthenticators(this.authenticator, data));\n }\n\n canRemediate() {\n return this.values.authenticatorsData!\n .some(data => compareAuthenticators(this.authenticator, data));\n }\n\n // TODO: remove this override method in the next major version - OKTA-491236\n getNextStep(authClient: OktaAuthInterface) {\n const common = super.getNextStep(authClient);\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 let { methodType, authenticator } = this.values;\n if (!methodType && isAuthenticator(authenticator)) {\n methodType = authenticator?.methodType;\n }\n \n const { id, enrollmentId } = this.authenticator;\n const data = { \n id,\n enrollmentId,\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') as IdxRemediationValue;\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 as IdxOption[];\n }\n\n getValuesAfterProceed(): T {\n this.values = super.getValuesAfterProceed();\n // remove used authenticatorData\n const authenticatorsData = this.values.authenticatorsData!\n .filter(data => compareAuthenticators(this.authenticator, data) !== true);\n return { ...this.values, authenticatorsData };\n }\n}\n"],"file":"AuthenticatorData.js"}
@@ -148,7 +148,7 @@ class Remediator {
148
148
  return !!this.getData(key);
149
149
  }
150
150
 
151
- getNextStep(_context) {
151
+ getNextStep(_authClient, _context) {
152
152
  const name = this.getName();
153
153
  const inputs = this.getInputs();
154
154
  const authenticator = this.getAuthenticator(); // TODO: remove type field in the next major version change