@okta/okta-auth-js 5.4.3 → 5.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (202) hide show
  1. package/CHANGELOG.md +59 -4
  2. package/README.md +66 -977
  3. package/cjs/AuthStateManager.js +5 -0
  4. package/cjs/AuthStateManager.js.map +1 -1
  5. package/cjs/OktaAuth.js +74 -29
  6. package/cjs/OktaAuth.js.map +1 -1
  7. package/cjs/OktaUserAgent.js +2 -2
  8. package/cjs/StorageManager.js +16 -0
  9. package/cjs/StorageManager.js.map +1 -1
  10. package/cjs/TransactionManager.js +44 -8
  11. package/cjs/TransactionManager.js.map +1 -1
  12. package/cjs/browser/browserStorage.js +5 -5
  13. package/cjs/browser/browserStorage.js.map +1 -1
  14. package/cjs/builderUtil.js +6 -0
  15. package/cjs/builderUtil.js.map +1 -1
  16. package/cjs/constants.js +5 -1
  17. package/cjs/constants.js.map +1 -1
  18. package/cjs/fetch/fetchRequest.js +10 -3
  19. package/cjs/fetch/fetchRequest.js.map +1 -1
  20. package/cjs/http/request.js +4 -0
  21. package/cjs/http/request.js.map +1 -1
  22. package/cjs/idx/interact.js +5 -2
  23. package/cjs/idx/interact.js.map +1 -1
  24. package/cjs/idx/introspect.js +24 -7
  25. package/cjs/idx/introspect.js.map +1 -1
  26. package/cjs/idx/remediate.js +35 -41
  27. package/cjs/idx/remediate.js.map +1 -1
  28. package/cjs/idx/remediators/Base/AuthenticatorData.js +7 -7
  29. package/cjs/idx/remediators/Base/AuthenticatorData.js.map +1 -1
  30. package/cjs/idx/remediators/Base/Remediator.js +13 -7
  31. package/cjs/idx/remediators/Base/Remediator.js.map +1 -1
  32. package/cjs/idx/remediators/Base/SelectAuthenticator.js +6 -6
  33. package/cjs/idx/remediators/Base/SelectAuthenticator.js.map +1 -1
  34. package/cjs/idx/remediators/Base/VerifyAuthenticator.js +18 -14
  35. package/cjs/idx/remediators/Base/VerifyAuthenticator.js.map +1 -1
  36. package/cjs/idx/remediators/EnrollProfile.js +14 -0
  37. package/cjs/idx/remediators/EnrollProfile.js.map +1 -1
  38. package/cjs/idx/remediators/Identify.js +5 -2
  39. package/cjs/idx/remediators/Identify.js.map +1 -1
  40. package/cjs/idx/remediators/ReEnrollAuthenticator.js +1 -1
  41. package/cjs/idx/remediators/ReEnrollAuthenticator.js.map +1 -1
  42. package/cjs/idx/run.js +28 -6
  43. package/cjs/idx/run.js.map +1 -1
  44. package/cjs/idx/transactionMeta.js +24 -9
  45. package/cjs/idx/transactionMeta.js.map +1 -1
  46. package/cjs/idx/types/idx-js.js +5 -0
  47. package/cjs/idx/types/idx-js.js.map +1 -1
  48. package/cjs/idx/types/index.js +17 -6
  49. package/cjs/idx/types/index.js.map +1 -1
  50. package/cjs/oidc/getToken.js +14 -9
  51. package/cjs/oidc/getToken.js.map +1 -1
  52. package/cjs/oidc/getWithPopup.js +9 -2
  53. package/cjs/oidc/getWithPopup.js.map +1 -1
  54. package/cjs/oidc/getWithRedirect.js.map +1 -1
  55. package/cjs/oidc/parseFromUrl.js +59 -20
  56. package/cjs/oidc/parseFromUrl.js.map +1 -1
  57. package/cjs/oidc/renewTokens.js +28 -5
  58. package/cjs/oidc/renewTokens.js.map +1 -1
  59. package/cjs/oidc/util/browser.js +1 -13
  60. package/cjs/oidc/util/browser.js.map +1 -1
  61. package/cjs/oidc/util/loginRedirect.js +9 -5
  62. package/cjs/oidc/util/loginRedirect.js.map +1 -1
  63. package/cjs/oidc/util/urlParams.js +1 -1
  64. package/cjs/oidc/util/urlParams.js.map +1 -1
  65. package/cjs/oidc/util/validateClaims.js +8 -6
  66. package/cjs/oidc/util/validateClaims.js.map +1 -1
  67. package/cjs/options.js +15 -2
  68. package/cjs/options.js.map +1 -1
  69. package/cjs/server/serverStorage.js +2 -1
  70. package/cjs/server/serverStorage.js.map +1 -1
  71. package/cjs/tx/AuthTransaction.js +1 -3
  72. package/cjs/tx/AuthTransaction.js.map +1 -1
  73. package/cjs/tx/api.js +3 -0
  74. package/cjs/tx/api.js.map +1 -1
  75. package/cjs/types/Transaction.js.map +1 -1
  76. package/cjs/util/emailVerify.js +28 -0
  77. package/cjs/util/emailVerify.js.map +1 -0
  78. package/cjs/util/index.js +13 -0
  79. package/cjs/util/index.js.map +1 -1
  80. package/cjs/util/sharedStorage.js +54 -0
  81. package/cjs/util/sharedStorage.js.map +1 -0
  82. package/dist/okta-auth-js.min.js +2 -74
  83. package/dist/okta-auth-js.min.js.LICENSE.txt +32 -0
  84. package/dist/okta-auth-js.min.js.map +1 -1
  85. package/dist/okta-auth-js.polyfill.js +2 -18
  86. package/dist/okta-auth-js.polyfill.js.LICENSE.txt +18 -0
  87. package/dist/okta-auth-js.polyfill.js.map +1 -1
  88. package/dist/okta-auth-js.umd.js +2 -74
  89. package/dist/okta-auth-js.umd.js.LICENSE.txt +32 -0
  90. package/dist/okta-auth-js.umd.js.map +1 -1
  91. package/esm/AuthStateManager.js +5 -0
  92. package/esm/AuthStateManager.js.map +1 -1
  93. package/esm/OktaAuth.js +75 -31
  94. package/esm/OktaAuth.js.map +1 -1
  95. package/esm/OktaUserAgent.js +2 -2
  96. package/esm/StorageManager.js +17 -1
  97. package/esm/StorageManager.js.map +1 -1
  98. package/esm/TransactionManager.js +43 -8
  99. package/esm/TransactionManager.js.map +1 -1
  100. package/esm/browser/browserStorage.js +5 -5
  101. package/esm/browser/browserStorage.js.map +1 -1
  102. package/esm/builderUtil.js +6 -0
  103. package/esm/builderUtil.js.map +1 -1
  104. package/esm/constants.js +2 -0
  105. package/esm/constants.js.map +1 -1
  106. package/esm/fetch/fetchRequest.js +10 -3
  107. package/esm/fetch/fetchRequest.js.map +1 -1
  108. package/esm/http/request.js +4 -0
  109. package/esm/http/request.js.map +1 -1
  110. package/esm/idx/interact.js +5 -2
  111. package/esm/idx/interact.js.map +1 -1
  112. package/esm/idx/introspect.js +22 -6
  113. package/esm/idx/introspect.js.map +1 -1
  114. package/esm/idx/remediate.js +36 -37
  115. package/esm/idx/remediate.js.map +1 -1
  116. package/esm/idx/remediators/Base/AuthenticatorData.js +7 -7
  117. package/esm/idx/remediators/Base/AuthenticatorData.js.map +1 -1
  118. package/esm/idx/remediators/Base/Remediator.js +13 -8
  119. package/esm/idx/remediators/Base/Remediator.js.map +1 -1
  120. package/esm/idx/remediators/Base/SelectAuthenticator.js +6 -6
  121. package/esm/idx/remediators/Base/SelectAuthenticator.js.map +1 -1
  122. package/esm/idx/remediators/Base/VerifyAuthenticator.js +18 -15
  123. package/esm/idx/remediators/Base/VerifyAuthenticator.js.map +1 -1
  124. package/esm/idx/remediators/EnrollProfile.js +21 -4
  125. package/esm/idx/remediators/EnrollProfile.js.map +1 -1
  126. package/esm/idx/remediators/Identify.js +4 -2
  127. package/esm/idx/remediators/Identify.js.map +1 -1
  128. package/esm/idx/remediators/ReEnrollAuthenticator.js +1 -1
  129. package/esm/idx/remediators/ReEnrollAuthenticator.js.map +1 -1
  130. package/esm/idx/run.js +27 -6
  131. package/esm/idx/run.js.map +1 -1
  132. package/esm/idx/transactionMeta.js +23 -10
  133. package/esm/idx/transactionMeta.js.map +1 -1
  134. package/esm/idx/types/idx-js.js +3 -0
  135. package/esm/idx/types/idx-js.js.map +1 -1
  136. package/esm/idx/types/index.js +15 -5
  137. package/esm/idx/types/index.js.map +1 -1
  138. package/esm/oidc/getToken.js +15 -10
  139. package/esm/oidc/getToken.js.map +1 -1
  140. package/esm/oidc/getWithPopup.js +8 -2
  141. package/esm/oidc/getWithPopup.js.map +1 -1
  142. package/esm/oidc/getWithRedirect.js.map +1 -1
  143. package/esm/oidc/parseFromUrl.js +59 -17
  144. package/esm/oidc/parseFromUrl.js.map +1 -1
  145. package/esm/oidc/renewTokens.js +27 -5
  146. package/esm/oidc/renewTokens.js.map +1 -1
  147. package/esm/oidc/util/browser.js +1 -12
  148. package/esm/oidc/util/browser.js.map +1 -1
  149. package/esm/oidc/util/loginRedirect.js +9 -5
  150. package/esm/oidc/util/loginRedirect.js.map +1 -1
  151. package/esm/oidc/util/urlParams.js +1 -1
  152. package/esm/oidc/util/urlParams.js.map +1 -1
  153. package/esm/oidc/util/validateClaims.js +8 -6
  154. package/esm/oidc/util/validateClaims.js.map +1 -1
  155. package/esm/options.js +15 -2
  156. package/esm/options.js.map +1 -1
  157. package/esm/server/serverStorage.js +2 -1
  158. package/esm/server/serverStorage.js.map +1 -1
  159. package/esm/tx/AuthTransaction.js +1 -3
  160. package/esm/tx/AuthTransaction.js.map +1 -1
  161. package/esm/tx/api.js +3 -0
  162. package/esm/tx/api.js.map +1 -1
  163. package/esm/types/Transaction.js.map +1 -1
  164. package/esm/util/emailVerify.js +21 -0
  165. package/esm/util/emailVerify.js.map +1 -0
  166. package/esm/util/index.js +1 -0
  167. package/esm/util/index.js.map +1 -1
  168. package/esm/util/sharedStorage.js +43 -0
  169. package/esm/util/sharedStorage.js.map +1 -0
  170. package/lib/AuthStateManager.d.ts +4 -2
  171. package/lib/OktaAuth.d.ts +9 -5
  172. package/lib/StorageManager.d.ts +2 -0
  173. package/lib/TransactionManager.d.ts +5 -1
  174. package/lib/constants.d.ts +2 -0
  175. package/lib/crypto/base64.d.ts +2 -2
  176. package/lib/crypto/oidcHash.d.ts +1 -1
  177. package/lib/crypto/verifyToken.d.ts +1 -1
  178. package/lib/idx/introspect.d.ts +2 -1
  179. package/lib/idx/remediators/Base/AuthenticatorData.d.ts +2 -5
  180. package/lib/idx/remediators/Base/Remediator.d.ts +3 -6
  181. package/lib/idx/remediators/Base/SelectAuthenticator.d.ts +3 -6
  182. package/lib/idx/remediators/Base/VerifyAuthenticator.d.ts +1 -1
  183. package/lib/idx/remediators/EnrollProfile.d.ts +1 -0
  184. package/lib/idx/remediators/Identify.d.ts +1 -5
  185. package/lib/idx/run.d.ts +1 -0
  186. package/lib/idx/transactionMeta.d.ts +4 -3
  187. package/lib/idx/types/idx-js.d.ts +2 -0
  188. package/lib/idx/types/index.d.ts +20 -9
  189. package/lib/oidc/getToken.d.ts +2 -2
  190. package/lib/oidc/parseFromUrl.d.ts +4 -1
  191. package/lib/oidc/renewTokens.d.ts +0 -12
  192. package/lib/oidc/util/loginRedirect.d.ts +1 -1
  193. package/lib/types/AuthState.d.ts +1 -0
  194. package/lib/types/OktaAuthOptions.d.ts +2 -1
  195. package/lib/types/Storage.d.ts +3 -0
  196. package/lib/types/Transaction.d.ts +5 -1
  197. package/lib/types/api.d.ts +9 -4
  198. package/lib/types/http.d.ts +1 -0
  199. package/lib/util/emailVerify.d.ts +17 -0
  200. package/lib/util/index.d.ts +1 -0
  201. package/lib/util/sharedStorage.d.ts +6 -0
  202. package/package.json +12 -10
@@ -18,13 +18,8 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
18
18
  */
19
19
 
20
20
  /* eslint-disable max-statements, max-depth, complexity */
21
- import idx from '@okta/okta-idx-js';
22
21
  import { AuthSdkError } from '../errors';
23
- import { isRawIdxResponse } from './types/idx-js';
24
- var actionsTriggeredByValues = {
25
- resend: 'currentAuthenticatorEnrollment-resend' // assuming only one '-resend' action is present in response
26
-
27
- };
22
+ import { isIdxResponse } from './types/idx-js';
28
23
  // Return first match idxRemediation in allowed remediators
29
24
  export function getRemediator(idxRemediations, values, options) {
30
25
  var {
@@ -95,6 +90,11 @@ function getIdxMessages(idxResponse, flow) {
95
90
  var _rawIdxState$messages;
96
91
 
97
92
  var messages = [];
93
+
94
+ if (!flow) {
95
+ return messages;
96
+ }
97
+
98
98
  var {
99
99
  rawIdxState,
100
100
  neededToProceed
@@ -138,41 +138,40 @@ function getNextStep(remediator, idxResponse) {
138
138
 
139
139
  function handleIdxError(e, flow, remediator) {
140
140
  // Handle idx messages
141
- if (isRawIdxResponse(e)) {
142
- var idxState = idx.makeIdxState(e);
143
- var terminal = isTerminalResponse(idxState);
144
- var messages = getIdxMessages(idxState, flow);
145
-
146
- if (terminal) {
147
- return {
148
- terminal,
149
- messages
150
- };
151
- } else {
152
- var nextStep = remediator && getNextStep(remediator, idxState);
153
- return _objectSpread({
154
- messages
155
- }, nextStep && {
156
- nextStep
157
- });
158
- }
159
- } // Thrown error terminates the interaction with idx
141
+ var idxState = isIdxResponse(e) ? e : null;
160
142
 
143
+ if (!idxState) {
144
+ // Thrown error terminates the interaction with idx
145
+ throw e;
146
+ }
161
147
 
162
- throw e;
148
+ var terminal = isTerminalResponse(idxState);
149
+ var messages = getIdxMessages(idxState, flow);
150
+
151
+ if (terminal) {
152
+ return {
153
+ terminal,
154
+ messages
155
+ };
156
+ } else {
157
+ var nextStep = remediator && getNextStep(remediator, idxState);
158
+ return _objectSpread({
159
+ messages
160
+ }, nextStep && {
161
+ nextStep
162
+ });
163
+ }
163
164
  }
164
165
 
165
- function getActionFromValues(values) {
166
- var valueName = Object.keys(values).find(valueName => actionsTriggeredByValues[valueName]);
167
- return actionsTriggeredByValues[valueName];
166
+ function getActionFromValues(values, idxResponse) {
167
+ // Currently support resend actions only
168
+ return Object.keys(idxResponse.actions).find(action => !!values.resend && action.includes('-resend'));
168
169
  }
169
170
 
170
- function removeActionFromValues(values, action) {
171
- var executedActionValue = Object.keys(actionsTriggeredByValues).find(valueName => actionsTriggeredByValues[valueName] === action);
172
- return Object.keys(values).filter(valueName => valueName !== executedActionValue).reduce((newValues, valueName) => {
173
- newValues[valueName] = values[valueName];
174
- return newValues;
175
- }, {});
171
+ function removeActionFromValues(values) {
172
+ // Currently support resend actions only
173
+ values.resend = undefined;
174
+ return values;
176
175
  } // This function is called recursively until it reaches success or cannot be remediated
177
176
 
178
177
 
@@ -209,12 +208,12 @@ function _remediate() {
209
208
  } // Try actions in idxResponse first
210
209
 
211
210
 
212
- var actionFromValues = getActionFromValues(values);
211
+ var actionFromValues = getActionFromValues(values, idxResponse);
213
212
  var actions = [...(options.actions || []), ...(actionFromValues && [actionFromValues] || [])];
214
213
 
215
214
  if (actions) {
216
215
  for (var action of actions) {
217
- var valuesWithoutExecutedAction = removeActionFromValues(values, action);
216
+ var valuesWithoutExecutedAction = removeActionFromValues(values);
218
217
 
219
218
  if (typeof idxResponse.actions[action] === 'function') {
220
219
  try {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../lib/idx/remediate.ts"],"names":["idx","AuthSdkError","isRawIdxResponse","actionsTriggeredByValues","resend","getRemediator","idxRemediations","values","options","flow","flowMonitor","remediator","remediatorCandidates","remediation","isRemeditionInFlow","Object","keys","includes","name","T","isRemediatorCandidate","canRemediate","push","isTerminalResponse","idxResponse","neededToProceed","interactionCode","length","canSkipFn","some","canResendFn","actions","actionName","getIdxMessages","messages","rawIdxState","globalMessages","value","map","message","fieldMessages","getMessages","getNextStep","nextStep","canSkip","canResend","handleIdxError","e","idxState","makeIdxState","terminal","getActionFromValues","valueName","find","removeActionFromValues","action","executedActionValue","filter","reduce","newValues","remediate","actionFromValues","valuesWithoutExecutedAction","canceled","acc","curr","loopDetected","getName","data","getData","proceed","trackRemediations","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 idx from '@okta/okta-idx-js';\nimport { AuthSdkError } from '../errors';\nimport { Remediator, RemediationValues } from './remediators';\nimport { RunOptions, RemediationFlow } from './run';\nimport { NextStep, IdxMessage } from './types';\nimport { \n IdxResponse, \n isRawIdxResponse, \n IdxRemediation, \n} from './types/idx-js';\n\nconst actionsTriggeredByValues = {\n resend: 'currentAuthenticatorEnrollment-resend' // assuming only one '-resend' action is present in response\n};\n\ninterface RemediationResponse {\n idxResponse?: IdxResponse;\n nextStep?: NextStep;\n messages?: IdxMessage[];\n terminal?: boolean;\n canceled?: boolean;\n}\n// Return first match idxRemediation in allowed remediators\nexport function getRemediator(\n idxRemediations: IdxRemediation[],\n values: RemediationValues,\n options: RunOptions,\n): Remediator {\n const { flow, flowMonitor } = options;\n\n let remediator;\n const remediatorCandidates = [];\n for (let remediation of idxRemediations) {\n const isRemeditionInFlow = Object.keys(flow).includes(remediation.name);\n if (!isRemeditionInFlow) {\n continue;\n }\n \n const T = flow[remediation.name];\n remediator = new T(remediation, values);\n if (flowMonitor.isRemediatorCandidate(remediator, idxRemediations, values)) {\n if (remediator.canRemediate()) {\n // found the remediator\n return remediator;\n }\n // remediator cannot handle the current values\n // maybe return for next step\n remediatorCandidates.push(remediator); \n }\n }\n \n // TODO: why is it a problem to have multiple remediations? \n // JIRA: https://oktainc.atlassian.net/browse/OKTA-400758\n // if (remediatorCandidates.length > 1) {\n // const remediationNames = remediatorCandidates.reduce((acc, curr) => {\n // const name = curr.getName();\n // return acc ? `${acc}, ${name}` : name;\n // }, '');\n // throw new AuthSdkError(`\n // More than one remediation can match the current input, remediations: ${remediationNames}\n // `);\n // }\n\n return remediatorCandidates[0];\n}\n\nfunction isTerminalResponse(idxResponse: IdxResponse) {\n const { neededToProceed, interactionCode } = idxResponse;\n return !neededToProceed.length && !interactionCode;\n}\n\nfunction canSkipFn(idxResponse: IdxResponse) {\n return idxResponse.neededToProceed.some(({ name }) => name === 'skip');\n}\n\nfunction canResendFn(idxResponse: IdxResponse) {\n return Object.keys(idxResponse.actions).some(actionName => actionName.includes('resend'));\n}\n\nfunction getIdxMessages(\n idxResponse: IdxResponse, flow: RemediationFlow\n): IdxMessage[] {\n let messages = [];\n const { rawIdxState, neededToProceed } = idxResponse;\n\n // Handle global messages\n const globalMessages = rawIdxState.messages?.value.map(message => message);\n if (globalMessages) {\n messages = [...messages, ...globalMessages];\n }\n\n // Handle field messages for current flow\n for (let remediation of neededToProceed) {\n const T = flow[remediation.name];\n if (!T) {\n continue;\n }\n const remediator = new T(remediation);\n const fieldMessages = remediator.getMessages();\n if (fieldMessages) {\n messages = [...messages, ...fieldMessages];\n }\n }\n\n return messages;\n}\n\nfunction getNextStep(\n remediator: Remediator, idxResponse: IdxResponse\n): NextStep {\n const nextStep = remediator.getNextStep();\n const canSkip = canSkipFn(idxResponse);\n const canResend = canResendFn(idxResponse);\n return {\n ...nextStep,\n ...(canSkip && {canSkip}),\n ...(canResend && {canResend}),\n };\n}\n\nfunction handleIdxError(e, flow, remediator?) {\n // Handle idx messages\n if (isRawIdxResponse(e)) {\n const idxState = idx.makeIdxState(e);\n const terminal = isTerminalResponse(idxState);\n const messages = getIdxMessages(idxState, flow);\n if (terminal) {\n return { terminal, messages };\n } else {\n const nextStep = remediator && getNextStep(remediator, idxState);\n return { \n messages, \n ...(nextStep && { nextStep }) \n };\n }\n }\n // Thrown error terminates the interaction with idx\n throw e;\n}\n\nfunction getActionFromValues(values): string | undefined{\n const valueName = Object.keys(values).find(valueName => actionsTriggeredByValues[valueName]);\n return actionsTriggeredByValues[valueName];\n}\n\nfunction removeActionFromValues(values, action) {\n const executedActionValue = Object.keys(actionsTriggeredByValues).find(\n valueName => actionsTriggeredByValues[valueName] === action);\n return Object.keys(values).filter(valueName => valueName !== executedActionValue)\n .reduce((newValues, valueName) => {\n newValues[valueName] = values[valueName];\n return newValues;\n }, {});\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: RunOptions\n): Promise<RemediationResponse> {\n let { neededToProceed, interactionCode } = idxResponse;\n const { flow, flowMonitor } = 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 // Reach to terminal state\n const terminal = isTerminalResponse(idxResponse);\n const messages = getIdxMessages(idxResponse, flow);\n if (terminal) {\n return { terminal, messages };\n }\n \n // Try actions in idxResponse first\n const actionFromValues = getActionFromValues(values);\n const actions = [\n ...options.actions || [],\n ...(actionFromValues && [actionFromValues] || []),\n ];\n if (actions) {\n for (let action of actions) {\n let valuesWithoutExecutedAction = removeActionFromValues(values, action);\n if (typeof idxResponse.actions[action] === 'function') {\n try {\n idxResponse = await idxResponse.actions[action]();\n } catch (e) {\n return handleIdxError(e, flow);\n }\n if (action === 'cancel') {\n return { canceled: true };\n }\n return remediate(idxResponse, valuesWithoutExecutedAction, options); // recursive call\n }\n }\n }\n\n const remediator = getRemediator(neededToProceed, values, options);\n \n if (!remediator) {\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 if (flowMonitor.loopDetected(remediator)) {\n throw new AuthSdkError(`\n Remediation run into loop, break!!! remediation: ${remediator.getName()}\n `);\n }\n\n // Recursive loop breaker\n // Return next step to the caller\n if (!remediator.canRemediate()) {\n const nextStep = getNextStep(remediator, idxResponse);\n return { idxResponse, nextStep };\n }\n\n const name = remediator.getName();\n const data = remediator.getData();\n try {\n idxResponse = await idxResponse.proceed(name, data);\n\n // Track succeed remediations in the current transaction\n await flowMonitor.trackRemediations(name);\n \n // Successfully get interaction code\n if (idxResponse.interactionCode) {\n return { idxResponse };\n }\n\n // Reach to terminal state\n const terminal = isTerminalResponse(idxResponse);\n const messages = getIdxMessages(idxResponse, flow);\n if (terminal) {\n return { terminal, messages };\n }\n\n // Handle idx message in nextStep\n if (messages.length) {\n const nextStep = getNextStep(remediator, idxResponse);\n return { nextStep, messages };\n }\n \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 return remediate(idxResponse, values, options); // recursive call\n } catch (e) {\n return handleIdxError(e, flow, remediator);\n }\n}\n"],"file":"remediate.js"}
1
+ {"version":3,"sources":["../../../lib/idx/remediate.ts"],"names":["AuthSdkError","isIdxResponse","getRemediator","idxRemediations","values","options","flow","flowMonitor","remediator","remediatorCandidates","remediation","isRemeditionInFlow","Object","keys","includes","name","T","isRemediatorCandidate","canRemediate","push","isTerminalResponse","idxResponse","neededToProceed","interactionCode","length","canSkipFn","some","canResendFn","actions","actionName","getIdxMessages","messages","rawIdxState","globalMessages","value","map","message","fieldMessages","getMessages","getNextStep","nextStep","canSkip","canResend","handleIdxError","e","idxState","terminal","getActionFromValues","find","action","resend","removeActionFromValues","undefined","remediate","actionFromValues","valuesWithoutExecutedAction","canceled","reduce","acc","curr","loopDetected","getName","data","getData","proceed","trackRemediations","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 { AuthSdkError } from '../errors';\nimport { Remediator, RemediationValues } from './remediators';\nimport { RunOptions, RemediationFlow } from './run';\nimport { NextStep, IdxMessage } from './types';\nimport { \n IdxResponse, \n IdxRemediation,\n isIdxResponse, \n} from './types/idx-js';\n\ninterface RemediationResponse {\n idxResponse?: IdxResponse;\n nextStep?: NextStep;\n messages?: IdxMessage[];\n terminal?: boolean;\n canceled?: boolean;\n}\n// Return first match idxRemediation in allowed remediators\nexport function getRemediator(\n idxRemediations: IdxRemediation[],\n values: RemediationValues,\n options: RunOptions,\n): Remediator {\n const { flow, flowMonitor } = options;\n\n let remediator;\n const remediatorCandidates = [];\n for (let remediation of idxRemediations) {\n const isRemeditionInFlow = Object.keys(flow).includes(remediation.name);\n if (!isRemeditionInFlow) {\n continue;\n }\n \n const T = flow[remediation.name];\n remediator = new T(remediation, values);\n if (flowMonitor.isRemediatorCandidate(remediator, idxRemediations, values)) {\n if (remediator.canRemediate()) {\n // found the remediator\n return remediator;\n }\n // remediator cannot handle the current values\n // maybe return for next step\n remediatorCandidates.push(remediator); \n }\n }\n \n // TODO: why is it a problem to have multiple remediations? \n // JIRA: https://oktainc.atlassian.net/browse/OKTA-400758\n // if (remediatorCandidates.length > 1) {\n // const remediationNames = remediatorCandidates.reduce((acc, curr) => {\n // const name = curr.getName();\n // return acc ? `${acc}, ${name}` : name;\n // }, '');\n // throw new AuthSdkError(`\n // More than one remediation can match the current input, remediations: ${remediationNames}\n // `);\n // }\n\n return remediatorCandidates[0];\n}\n\nfunction isTerminalResponse(idxResponse: IdxResponse) {\n const { neededToProceed, interactionCode } = idxResponse;\n return !neededToProceed.length && !interactionCode;\n}\n\nfunction canSkipFn(idxResponse: IdxResponse) {\n return idxResponse.neededToProceed.some(({ name }) => name === 'skip');\n}\n\nfunction canResendFn(idxResponse: IdxResponse) {\n return Object.keys(idxResponse.actions).some(actionName => actionName.includes('resend'));\n}\n\nfunction getIdxMessages(\n idxResponse: IdxResponse, flow: RemediationFlow\n): IdxMessage[] {\n let messages = [];\n if (!flow) {\n return messages;\n }\n\n const { rawIdxState, neededToProceed } = idxResponse;\n\n // Handle global messages\n const globalMessages = rawIdxState.messages?.value.map(message => message);\n if (globalMessages) {\n messages = [...messages, ...globalMessages];\n }\n\n // Handle field messages for current flow\n for (let remediation of neededToProceed) {\n const T = flow[remediation.name];\n if (!T) {\n continue;\n }\n const remediator = new T(remediation);\n const fieldMessages = remediator.getMessages();\n if (fieldMessages) {\n messages = [...messages, ...fieldMessages];\n }\n }\n\n return messages;\n}\n\nfunction getNextStep(\n remediator: Remediator, idxResponse: IdxResponse\n): NextStep {\n const nextStep = remediator.getNextStep();\n const canSkip = canSkipFn(idxResponse);\n const canResend = canResendFn(idxResponse);\n return {\n ...nextStep,\n ...(canSkip && {canSkip}),\n ...(canResend && {canResend}),\n };\n}\n\nfunction handleIdxError(e, flow, remediator?) {\n // Handle idx messages\n const idxState: IdxResponse = isIdxResponse(e) ? e : null;\n if (!idxState) {\n // Thrown error terminates the interaction with idx\n throw e;\n }\n const terminal = isTerminalResponse(idxState);\n const messages = getIdxMessages(idxState, flow);\n if (terminal) {\n return { terminal, messages };\n } else {\n const nextStep = remediator && getNextStep(remediator, idxState);\n return { \n messages, \n ...(nextStep && { nextStep }) \n };\n }\n}\n\nfunction getActionFromValues(values, 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) {\n // Currently support resend actions only\n values.resend = undefined;\n return values;\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: RunOptions\n): Promise<RemediationResponse> {\n let { neededToProceed, interactionCode } = idxResponse;\n const { flow, flowMonitor } = 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 // Reach to terminal state\n const terminal = isTerminalResponse(idxResponse);\n const messages = getIdxMessages(idxResponse, flow);\n if (terminal) {\n return { terminal, messages };\n }\n \n // Try actions in idxResponse first\n const actionFromValues = getActionFromValues(values, idxResponse);\n const actions = [\n ...options.actions || [],\n ...(actionFromValues && [actionFromValues] || []),\n ];\n if (actions) {\n for (let action of actions) {\n let valuesWithoutExecutedAction = removeActionFromValues(values);\n if (typeof idxResponse.actions[action] === 'function') {\n try {\n idxResponse = await idxResponse.actions[action]();\n } catch (e) {\n return handleIdxError(e, flow);\n }\n if (action === 'cancel') {\n return { canceled: true };\n }\n return remediate(idxResponse, valuesWithoutExecutedAction, options); // recursive call\n }\n }\n }\n\n const remediator = getRemediator(neededToProceed, values, options);\n \n if (!remediator) {\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 if (flowMonitor.loopDetected(remediator)) {\n throw new AuthSdkError(`\n Remediation run into loop, break!!! remediation: ${remediator.getName()}\n `);\n }\n\n // Recursive loop breaker\n // Return next step to the caller\n if (!remediator.canRemediate()) {\n const nextStep = getNextStep(remediator, idxResponse);\n return { idxResponse, nextStep };\n }\n\n const name = remediator.getName();\n const data = remediator.getData();\n try {\n idxResponse = await idxResponse.proceed(name, data);\n\n // Track succeed remediations in the current transaction\n await flowMonitor.trackRemediations(name);\n \n // Successfully get interaction code\n if (idxResponse.interactionCode) {\n return { idxResponse };\n }\n\n // Reach to terminal state\n const terminal = isTerminalResponse(idxResponse);\n const messages = getIdxMessages(idxResponse, flow);\n if (terminal) {\n return { terminal, messages };\n }\n\n // Handle idx message in nextStep\n if (messages.length) {\n const nextStep = getNextStep(remediator, idxResponse);\n return { nextStep, messages };\n }\n \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 return remediate(idxResponse, values, options); // recursive call\n } catch (e) {\n return handleIdxError(e, flow, remediator);\n }\n}\n"],"file":"remediate.js"}
@@ -29,13 +29,13 @@ export class AuthenticatorData extends Remediator {
29
29
  var {
30
30
  authenticators
31
31
  } = this.values;
32
- var authenticatorType = this.getRelatesToType();
33
- var authenticator = authenticators === null || authenticators === void 0 ? void 0 : authenticators.find(authenticator => authenticator.type === authenticatorType);
32
+ var authenticatorKey = this.getAuthenticator().key;
33
+ var authenticator = authenticators === null || authenticators === void 0 ? void 0 : authenticators.find(authenticator => authenticator.key === authenticatorKey);
34
34
 
35
35
  if (authenticator) {
36
36
  // map
37
37
  this.values.authenticators = authenticators.map(authenticator => {
38
- if (authenticatorType === authenticator.type) {
38
+ if (authenticatorKey === authenticator.type) {
39
39
  return this.mapAuthenticatorFromValues(authenticator);
40
40
  }
41
41
 
@@ -61,19 +61,19 @@ export class AuthenticatorData extends Remediator {
61
61
  return null;
62
62
  }
63
63
 
64
- var authenticatorType = this.getRelatesToType();
65
- var authenticator = this.values.authenticators.find(authenticator => authenticator.type === authenticatorType);
64
+ var authenticatorKey = this.getAuthenticator().key;
65
+ var authenticator = this.values.authenticators.find(authenticator => authenticator.key === authenticatorKey);
66
66
  return authenticator;
67
67
  }
68
68
 
69
69
  mapAuthenticatorFromValues(authenticator) {
70
70
  // add methodType to authenticator if it exists in values
71
- var type = this.getRelatesToType();
71
+ var key = this.getAuthenticator().key;
72
72
  var {
73
73
  methodType
74
74
  } = this.values;
75
75
  return _objectSpread(_objectSpread({
76
- type
76
+ key
77
77
  }, authenticator && authenticator), methodType && {
78
78
  methodType
79
79
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../lib/idx/remediators/Base/AuthenticatorData.ts"],"names":["Remediator","AuthenticatorData","constructor","remediation","values","authenticators","authenticatorType","getRelatesToType","authenticator","find","type","map","mapAuthenticatorFromValues","getNextStep","common","options","getMethodTypes","getAuthenticatorFromValues","methodType","getAuthenticatorFromRemediation","value","name","form"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA,SAASA,UAAT,QAA8C,cAA9C;AAQA;AACA,OAAO,MAAMC,iBAAN,SAAgCD,UAAhC,CAA2C;AAQhDE,EAAAA,WAAW,CAACC,WAAD,EAAoE;AAAA,QAAtCC,MAAsC,uEAAJ,EAAI;AAC7E,UAAMD,WAAN,EAAmBC,MAAnB,EAD6E,CAG7E;;AAH6E,iCANzE;AACJ,uBAAiB;AADb,KAMyE;;AAI7E,QAAM;AAAEC,MAAAA;AAAF,QAAqB,KAAKD,MAAhC;AACA,QAAME,iBAAiB,GAAG,KAAKC,gBAAL,EAA1B;AACA,QAAMC,aAAa,GAAIH,cAAJ,aAAIA,cAAJ,uBAAIA,cAAD,CAChBI,IADgB,CACXD,aAAa,IAAIA,aAAa,CAACE,IAAd,KAAuBJ,iBAD7B,CAAtB;;AAEA,QAAIE,aAAJ,EAAmB;AACjB;AACA,WAAKJ,MAAL,CAAYC,cAAZ,GAA6BA,cAAc,CAACM,GAAf,CAAmBH,aAAa,IAAI;AAC/D,YAAIF,iBAAiB,KAAKE,aAAa,CAACE,IAAxC,EAA8C;AAC5C,iBAAO,KAAKE,0BAAL,CAAgCJ,aAAhC,CAAP;AACD;;AACD,eAAOA,aAAP;AACD,OAL4B,CAA7B;AAMD,KARD,MAQO;AACL;AACA,WAAKJ,MAAL,CAAYC,cAAZ,GAA6B,CAC3B,GAAGA,cADwB,EAE3B,KAAKO,0BAAL,EAF2B,CAA7B;AAID;AACF;;AAEDC,EAAAA,WAAW,GAAG;AACZ,QAAMC,MAAM,GAAG,MAAMD,WAAN,EAAf;AACA,QAAME,OAAO,GAAG,KAAKC,cAAL,EAAhB;AACA,2CACKF,MADL,GAEMC,OAAO,IAAI;AAAEA,MAAAA;AAAF,KAFjB;AAID,GAxC+C,CA0ChD;;;AACUE,EAAAA,0BAA0B,GAAkB;AACpD,QAAI,CAAC,KAAKb,MAAL,CAAYC,cAAjB,EAAiC;AAC/B,aAAO,IAAP;AACD;;AAED,QAAMC,iBAAiB,GAAG,KAAKC,gBAAL,EAA1B;AACA,QAAMC,aAAa,GAAI,KAAKJ,MAAL,CAAYC,cAAb,CACnBI,IADmB,CACdD,aAAa,IAAIA,aAAa,CAACE,IAAd,KAAuBJ,iBAD1B,CAAtB;AAEA,WAAOE,aAAP;AACD;;AAESI,EAAAA,0BAA0B,CAACJ,aAAD,EAA+C;AACjF;AACA,QAAME,IAAI,GAAG,KAAKH,gBAAL,EAAb;AACA,QAAM;AAAEW,MAAAA;AAAF,QAAiB,KAAKd,MAA5B;AACA;AACEM,MAAAA;AADF,OAEMF,aAAa,IAAIA,aAFvB,GAGMU,UAAU,IAAI;AAAEA,MAAAA;AAAF,KAHpB;AAKD;;AAESC,EAAAA,+BAA+B,GAAwB;AAC/D,QAAMX,aAAa,GAAG,KAAKL,WAAL,CAAiBiB,KAAjB,CACnBX,IADmB,CACd;AAAA,UAAC;AAAEY,QAAAA;AAAF,OAAD;AAAA,aAAcA,IAAI,KAAK,eAAvB;AAAA,KADc,CAAtB;AAEA,WAAOb,aAAP;AACD;;AAEOQ,EAAAA,cAAc,GAAgB;AAAA;;AACpC,QAAMR,aAAkC,GAAG,KAAKW,+BAAL,EAA3C;AACA,oCAAOX,aAAa,CAACc,IAAd,CAAmBF,KAAnB,CAAyBX,IAAzB,CAA8B;AAAA,UAAC;AAAEY,QAAAA;AAAF,OAAD;AAAA,aAAcA,IAAI,KAAK,YAAvB;AAAA,KAA9B,CAAP,0DAAO,sBAAoEN,OAA3E;AACD;;AA1E+C","sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator, RemediationValues } from './Remediator';\nimport { Authenticator } from '../../types';\nimport { IdxRemediationValue, IdxOption, IdxRemediation } from '../../types/idx-js';\n\nexport type AuthenticatorDataValues = RemediationValues & {\n methodType?: string;\n};\n\n// Base class - DO NOT expose static remediationName\nexport class AuthenticatorData extends Remediator {\n\n map = {\n 'authenticator': []\n };\n\n values: AuthenticatorDataValues;\n\n constructor(remediation: IdxRemediation, values: AuthenticatorDataValues = {}) {\n super(remediation, values);\n\n // Unify authenticator input type\n const { authenticators } = this.values;\n const authenticatorType = this.getRelatesToType();\n const authenticator = (authenticators as Authenticator[])\n ?.find(authenticator => authenticator.type === authenticatorType);\n if (authenticator) {\n // map\n this.values.authenticators = authenticators.map(authenticator => {\n if (authenticatorType === authenticator.type) {\n return this.mapAuthenticatorFromValues(authenticator);\n }\n return authenticator;\n });\n } else {\n // add\n this.values.authenticators = [\n ...authenticators, \n this.mapAuthenticatorFromValues()\n ] as Authenticator[];\n }\n }\n\n getNextStep() {\n const common = super.getNextStep();\n const options = this.getMethodTypes();\n return { \n ...common, \n ...(options && { options }) \n };\n }\n\n // Grab authenticator from authenticators list\n protected getAuthenticatorFromValues(): Authenticator {\n if (!this.values.authenticators) {\n return null;\n }\n\n const authenticatorType = this.getRelatesToType();\n const authenticator = (this.values.authenticators as Authenticator[])\n .find(authenticator => authenticator.type === authenticatorType);\n return authenticator;\n }\n\n protected mapAuthenticatorFromValues(authenticator?: Authenticator): Authenticator {\n // add methodType to authenticator if it exists in values\n const type = this.getRelatesToType();\n const { methodType } = this.values;\n return { \n type, \n ...(authenticator && authenticator),\n ...(methodType && { methodType }) \n };\n }\n\n protected getAuthenticatorFromRemediation(): IdxRemediationValue {\n const authenticator = this.remediation.value\n .find(({ name }) => name === 'authenticator');\n return authenticator;\n }\n\n private getMethodTypes(): IdxOption[] {\n const authenticator: IdxRemediationValue = this.getAuthenticatorFromRemediation();\n return authenticator.form.value.find(({ name }) => name === 'methodType')?.options;\n }\n}\n"],"file":"AuthenticatorData.js"}
1
+ {"version":3,"sources":["../../../../../lib/idx/remediators/Base/AuthenticatorData.ts"],"names":["Remediator","AuthenticatorData","constructor","remediation","values","authenticators","authenticatorKey","getAuthenticator","key","authenticator","find","map","type","mapAuthenticatorFromValues","getNextStep","common","options","getMethodTypes","getAuthenticatorFromValues","methodType","getAuthenticatorFromRemediation","value","name","form"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA,SAASA,UAAT,QAA8C,cAA9C;AAQA;AACA,OAAO,MAAMC,iBAAN,SAAgCD,UAAhC,CAA2C;AAQhDE,EAAAA,WAAW,CAACC,WAAD,EAAoE;AAAA,QAAtCC,MAAsC,uEAAJ,EAAI;AAC7E,UAAMD,WAAN,EAAmBC,MAAnB,EAD6E,CAG7E;;AAH6E,iCANzE;AACJ,uBAAiB;AADb,KAMyE;;AAI7E,QAAM;AAAEC,MAAAA;AAAF,QAAqB,KAAKD,MAAhC;AACA,QAAME,gBAAgB,GAAG,KAAKC,gBAAL,GAAwBC,GAAjD;AACA,QAAMC,aAAa,GAAIJ,cAAJ,aAAIA,cAAJ,uBAAIA,cAAD,CAChBK,IADgB,CACXD,aAAa,IAAIA,aAAa,CAACD,GAAd,KAAsBF,gBAD5B,CAAtB;;AAEA,QAAIG,aAAJ,EAAmB;AACjB;AACA,WAAKL,MAAL,CAAYC,cAAZ,GAA6BA,cAAc,CAACM,GAAf,CAAmBF,aAAa,IAAI;AAC/D,YAAIH,gBAAgB,KAAKG,aAAa,CAACG,IAAvC,EAA6C;AAC3C,iBAAO,KAAKC,0BAAL,CAAgCJ,aAAhC,CAAP;AACD;;AACD,eAAOA,aAAP;AACD,OAL4B,CAA7B;AAMD,KARD,MAQO;AACL;AACA,WAAKL,MAAL,CAAYC,cAAZ,GAA6B,CAC3B,GAAGA,cADwB,EAE3B,KAAKQ,0BAAL,EAF2B,CAA7B;AAID;AACF;;AAEDC,EAAAA,WAAW,GAAG;AACZ,QAAMC,MAAM,GAAG,MAAMD,WAAN,EAAf;AACA,QAAME,OAAO,GAAG,KAAKC,cAAL,EAAhB;AACA,2CACKF,MADL,GAEMC,OAAO,IAAI;AAAEA,MAAAA;AAAF,KAFjB;AAID,GAxC+C,CA0ChD;;;AACUE,EAAAA,0BAA0B,GAAkB;AACpD,QAAI,CAAC,KAAKd,MAAL,CAAYC,cAAjB,EAAiC;AAC/B,aAAO,IAAP;AACD;;AAED,QAAMC,gBAAgB,GAAG,KAAKC,gBAAL,GAAwBC,GAAjD;AACA,QAAMC,aAAa,GAAI,KAAKL,MAAL,CAAYC,cAAb,CACnBK,IADmB,CACdD,aAAa,IAAIA,aAAa,CAACD,GAAd,KAAsBF,gBADzB,CAAtB;AAEA,WAAOG,aAAP;AACD;;AAESI,EAAAA,0BAA0B,CAACJ,aAAD,EAA+C;AACjF;AACA,QAAMD,GAAG,GAAG,KAAKD,gBAAL,GAAwBC,GAApC;AACA,QAAM;AAAEW,MAAAA;AAAF,QAAiB,KAAKf,MAA5B;AACA;AACEI,MAAAA;AADF,OAEMC,aAAa,IAAIA,aAFvB,GAGMU,UAAU,IAAI;AAAEA,MAAAA;AAAF,KAHpB;AAKD;;AAESC,EAAAA,+BAA+B,GAAwB;AAC/D,QAAMX,aAAa,GAAG,KAAKN,WAAL,CAAiBkB,KAAjB,CACnBX,IADmB,CACd;AAAA,UAAC;AAAEY,QAAAA;AAAF,OAAD;AAAA,aAAcA,IAAI,KAAK,eAAvB;AAAA,KADc,CAAtB;AAEA,WAAOb,aAAP;AACD;;AAEOQ,EAAAA,cAAc,GAAgB;AAAA;;AACpC,QAAMR,aAAkC,GAAG,KAAKW,+BAAL,EAA3C;AACA,oCAAOX,aAAa,CAACc,IAAd,CAAmBF,KAAnB,CAAyBX,IAAzB,CAA8B;AAAA,UAAC;AAAEY,QAAAA;AAAF,OAAD;AAAA,aAAcA,IAAI,KAAK,YAAvB;AAAA,KAA9B,CAAP,0DAAO,sBAAoEN,OAA3E;AACD;;AA1E+C","sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator, RemediationValues } from './Remediator';\nimport { Authenticator } from '../../types';\nimport { IdxRemediationValue, IdxOption, IdxRemediation } from '../../types/idx-js';\n\nexport type AuthenticatorDataValues = RemediationValues & {\n methodType?: string;\n};\n\n// Base class - DO NOT expose static remediationName\nexport class AuthenticatorData extends Remediator {\n\n map = {\n 'authenticator': []\n };\n\n values: AuthenticatorDataValues;\n\n constructor(remediation: IdxRemediation, values: AuthenticatorDataValues = {}) {\n super(remediation, values);\n\n // Unify authenticator input type\n const { authenticators } = this.values;\n const authenticatorKey = this.getAuthenticator().key;\n const authenticator = (authenticators as Authenticator[])\n ?.find(authenticator => authenticator.key === authenticatorKey);\n if (authenticator) {\n // map\n this.values.authenticators = authenticators.map(authenticator => {\n if (authenticatorKey === authenticator.type) {\n return this.mapAuthenticatorFromValues(authenticator);\n }\n return authenticator;\n });\n } else {\n // add\n this.values.authenticators = [\n ...authenticators, \n this.mapAuthenticatorFromValues()\n ] as Authenticator[];\n }\n }\n\n getNextStep() {\n const common = super.getNextStep();\n const options = this.getMethodTypes();\n return { \n ...common, \n ...(options && { options }) \n };\n }\n\n // Grab authenticator from authenticators list\n protected getAuthenticatorFromValues(): Authenticator {\n if (!this.values.authenticators) {\n return null;\n }\n\n const authenticatorKey = this.getAuthenticator().key;\n const authenticator = (this.values.authenticators as Authenticator[])\n .find(authenticator => authenticator.key === authenticatorKey);\n return authenticator;\n }\n\n protected mapAuthenticatorFromValues(authenticator?: Authenticator): Authenticator {\n // add methodType to authenticator if it exists in values\n const key = this.getAuthenticator().key;\n const { methodType } = this.values;\n return { \n key, \n ...(authenticator && authenticator),\n ...(methodType && { methodType }) \n };\n }\n\n protected getAuthenticatorFromRemediation(): IdxRemediationValue {\n const authenticator = this.remediation.value\n .find(({ name }) => name === 'authenticator');\n return authenticator;\n }\n\n private getMethodTypes(): IdxOption[] {\n const authenticator: IdxRemediationValue = this.getAuthenticatorFromRemediation();\n return authenticator.form.value.find(({ name }) => name === 'methodType')?.options;\n }\n}\n"],"file":"AuthenticatorData.js"}
@@ -29,7 +29,7 @@ export class Remediator {
29
29
  // map authenticators to Authenticator[] type
30
30
  values.authenticators = ((_values$authenticator = values.authenticators) === null || _values$authenticator === void 0 ? void 0 : _values$authenticator.map(authenticator => {
31
31
  return typeof authenticator === 'string' ? {
32
- type: authenticator
32
+ key: authenticator
33
33
  } : authenticator;
34
34
  })) || []; // assign fields to the instance
35
35
 
@@ -114,13 +114,18 @@ export class Remediator {
114
114
 
115
115
  getNextStep() {
116
116
  var name = this.getName();
117
- var type = this.getRelatesToType();
118
117
  var inputs = this.getInputs();
119
- return _objectSpread({
118
+ var authenticator = this.getAuthenticator(); // TODO: remove type field in the next major version change
119
+ // https://oktainc.atlassian.net/browse/OKTA-431749
120
+
121
+ var type = authenticator === null || authenticator === void 0 ? void 0 : authenticator.type;
122
+ return _objectSpread(_objectSpread({
120
123
  name,
121
124
  inputs
122
125
  }, type && {
123
126
  type
127
+ }), authenticator && {
128
+ authenticator
124
129
  });
125
130
  } // Get inputs for the next step
126
131
 
@@ -197,19 +202,19 @@ export class Remediator {
197
202
 
198
203
 
199
204
  getValuesAfterProceed() {
200
- var _this$values$authenti;
205
+ var _this$getAuthenticato, _this$values$authenti;
201
206
 
202
- var authenticatorType = this.getRelatesToType();
203
- var authenticators = (_this$values$authenti = this.values.authenticators) === null || _this$values$authenti === void 0 ? void 0 : _this$values$authenti.filter(authenticator => authenticator.type !== authenticatorType);
207
+ var authenticatorKey = (_this$getAuthenticato = this.getAuthenticator()) === null || _this$getAuthenticato === void 0 ? void 0 : _this$getAuthenticato.key;
208
+ var authenticators = (_this$values$authenti = this.values.authenticators) === null || _this$values$authenti === void 0 ? void 0 : _this$values$authenti.filter(authenticator => authenticator.key !== authenticatorKey);
204
209
  return _objectSpread(_objectSpread({}, this.values), {}, {
205
210
  authenticators
206
211
  });
207
212
  }
208
213
 
209
- getRelatesToType() {
214
+ getAuthenticator() {
210
215
  var _this$remediation$rel;
211
216
 
212
- return (_this$remediation$rel = this.remediation.relatesTo) === null || _this$remediation$rel === void 0 ? void 0 : _this$remediation$rel.value.type;
217
+ return (_this$remediation$rel = this.remediation.relatesTo) === null || _this$remediation$rel === void 0 ? void 0 : _this$remediation$rel.value;
213
218
  }
214
219
 
215
220
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../lib/idx/remediators/Base/Remediator.ts"],"names":["AuthSdkError","getAllValues","getRequiredValues","titleCase","Remediator","constructor","remediation","values","authenticators","map","authenticator","type","getName","name","canRemediate","required","needed","find","key","hasData","getData","allValues","res","reduce","data","value","entry","i","length","val","Object","keys","getNextStep","getRelatesToType","inputs","getInputs","inputFromRemediation","item","input","aliases","includes","Array","isArray","forEach","push","getMessages","form","messages","field","getValuesAfterProceed","authenticatorType","filter","relatesTo"],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\n/* eslint-disable complexity */\nimport { AuthSdkError } from '../../../errors';\nimport { NextStep, IdxMessage, Authenticator } from '../../types';\nimport { IdxRemediation } from '../../types/idx-js';\nimport { getAllValues, getRequiredValues, titleCase } from '../util';\n\n// A map from IDX data values (server spec) to RemediationValues (client spec)\nexport type IdxToRemediationValueMap = Record<string, string[]>;\n\nexport interface RemediationValues {\n stateHandle?: string;\n authenticators?: Authenticator[] | string[];\n}\n\n// Base class - DO NOT expose static remediationName\nexport class Remediator {\n static remediationName: string;\n\n remediation: IdxRemediation;\n values: RemediationValues;\n map?: IdxToRemediationValueMap;\n\n constructor(remediation: IdxRemediation, values: RemediationValues = {}) {\n // map authenticators to Authenticator[] type\n values.authenticators = (values.authenticators?.map(authenticator => {\n return typeof authenticator === 'string' \n ? { type: authenticator } : authenticator;\n }) || []) as Authenticator[];\n \n // assign fields to the instance\n this.values = values;\n this.remediation = remediation;\n }\n\n getName(): string {\n return this.remediation.name;\n }\n\n // Override this method to provide custom check\n canRemediate(): boolean {\n if (!this.map) {\n return false;\n }\n const required = getRequiredValues(this.remediation);\n const needed = required.find((key) => !this.hasData(key));\n if (needed) {\n return false; // missing data for a required field\n }\n return true; // all required fields have available data\n }\n\n // returns an object for the entire remediation form, or just a part\n getData(key?: string) {\n\n if (!key) {\n let allValues = getAllValues(this.remediation);\n let res = allValues.reduce((data, key) => {\n data[key] = this.getData(key); // recursive\n return data;\n }, {});\n return res;\n }\n\n // Map value by \"map${Property}\" function in each subClass\n if (typeof this[`map${titleCase(key)}`] === 'function') {\n return this[`map${titleCase(key)}`](\n this.remediation.value.find(({name}) => name === key)\n );\n }\n\n if (!this.map) {\n return this.values[key];\n }\n\n // Handle general primitive types\n const entry = this.map[key];\n if (!entry) {\n return this.values[key];\n }\n\n // find the first aliased property that returns a truthy value\n for (let i = 0; i < entry.length; i++) {\n let val = this.values[entry[i]];\n if (val) {\n return val;\n }\n }\n }\n\n hasData(\n key: string // idx name\n ): boolean \n {\n // no attempt to format, we want simple true/false\n\n // First see if the remediation has a mapping for this vale\n const data = this.getData(key);\n if (typeof data === 'object') {\n return !!Object.keys(data).find(key => !!data[key]);\n }\n return !!data;\n }\n\n getNextStep(): NextStep {\n const name = this.getName();\n const type = this.getRelatesToType();\n const inputs = this.getInputs();\n return { name, inputs, ...(type && { type }) };\n }\n\n // Get inputs for the next step\n private getInputs() {\n if (!this.map) {\n return [];\n }\n\n return Object.keys(this.map).reduce((inputs, key) => {\n const inputFromRemediation = this.remediation.value.find(item => item.name === key);\n if (!inputFromRemediation) {\n return inputs;\n }\n\n let input;\n const aliases = this.map[key];\n const { type } = inputFromRemediation;\n if (typeof this[`getInput${titleCase(key)}`] === 'function') {\n input = this[`getInput${titleCase(key)}`](inputFromRemediation);\n } else if (type !== 'object') {\n // handle general primitive types\n let name;\n if (aliases.length === 1) {\n name = aliases[0];\n } else {\n // try find key from values\n name = aliases.find(name => Object.keys(this.values).includes(name));\n }\n if (name) {\n input = { ...inputFromRemediation, name };\n }\n } \n\n if (!input) {\n throw new AuthSdkError(`Missing custom getInput${titleCase(key)} method in Remediator: ${this.getName()}`);\n }\n\n if (Array.isArray(input)) {\n input.forEach(i => inputs.push(i));\n } else {\n inputs.push(input);\n }\n return inputs;\n }, []);\n }\n\n // Override this method to grab messages per remediation\n getMessages(): IdxMessage[] | undefined {\n if (!this.remediation.value) {\n return;\n }\n return this.remediation.value[0]?.form?.value.reduce((messages, field) => {\n if (field.messages) {\n messages = [...messages, ...field.messages.value];\n }\n return messages;\n }, []);\n }\n\n // Prepare values for the next remediation\n // In general, remove finished authenticator from list\n getValuesAfterProceed() {\n const authenticatorType = this.getRelatesToType();\n const authenticators = (this.values.authenticators as Authenticator[])\n ?.filter(authenticator => authenticator.type !== authenticatorType);\n return { ...this.values, authenticators };\n }\n\n protected getRelatesToType() {\n return this.remediation.relatesTo?.value.type;\n }\n\n}\n"],"file":"Remediator.js"}
1
+ {"version":3,"sources":["../../../../../lib/idx/remediators/Base/Remediator.ts"],"names":["AuthSdkError","getAllValues","getRequiredValues","titleCase","Remediator","constructor","remediation","values","authenticators","map","authenticator","key","getName","name","canRemediate","required","needed","find","hasData","getData","allValues","res","reduce","data","value","entry","i","length","val","Object","keys","getNextStep","inputs","getInputs","getAuthenticator","type","inputFromRemediation","item","input","aliases","includes","Array","isArray","forEach","push","getMessages","form","messages","field","getValuesAfterProceed","authenticatorKey","filter","relatesTo"],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\n/* eslint-disable complexity */\nimport { AuthSdkError } from '../../../errors';\nimport { NextStep, IdxMessage, Authenticator, Input } from '../../types';\nimport { IdxAuthenticator, IdxRemediation } from '../../types/idx-js';\nimport { getAllValues, getRequiredValues, titleCase } from '../util';\n\n// A map from IDX data values (server spec) to RemediationValues (client spec)\nexport type IdxToRemediationValueMap = Record<string, string[]>;\n\nexport interface RemediationValues {\n stateHandle?: string;\n authenticators?: Authenticator[] | string[];\n}\n\n// Base class - DO NOT expose static remediationName\nexport class Remediator {\n static remediationName: string;\n\n remediation: IdxRemediation;\n values: RemediationValues;\n map?: IdxToRemediationValueMap;\n\n constructor(remediation: IdxRemediation, values: RemediationValues = {}) {\n // map authenticators to Authenticator[] type\n values.authenticators = (values.authenticators?.map(authenticator => {\n return typeof authenticator === 'string' \n ? { key: authenticator } : authenticator;\n }) || []) as Authenticator[];\n \n // assign fields to the instance\n this.values = values;\n this.remediation = remediation;\n }\n\n getName(): string {\n return this.remediation.name;\n }\n\n // Override this method to provide custom check\n canRemediate(): boolean {\n if (!this.map) {\n return false;\n }\n const required = getRequiredValues(this.remediation);\n const needed = required.find((key) => !this.hasData(key));\n if (needed) {\n return false; // missing data for a required field\n }\n return true; // all required fields have available data\n }\n\n // returns an object for the entire remediation form, or just a part\n getData(key?: string) {\n\n if (!key) {\n let allValues = getAllValues(this.remediation);\n let res = allValues.reduce((data, key) => {\n data[key] = this.getData(key); // recursive\n return data;\n }, {});\n return res;\n }\n\n // Map value by \"map${Property}\" function in each subClass\n if (typeof this[`map${titleCase(key)}`] === 'function') {\n return this[`map${titleCase(key)}`](\n this.remediation.value.find(({name}) => name === key)\n );\n }\n\n if (!this.map) {\n return this.values[key];\n }\n\n // Handle general primitive types\n const entry = this.map[key];\n if (!entry) {\n return this.values[key];\n }\n\n // find the first aliased property that returns a truthy value\n for (let i = 0; i < entry.length; i++) {\n let val = this.values[entry[i]];\n if (val) {\n return val;\n }\n }\n }\n\n hasData(\n key: string // idx name\n ): boolean \n {\n // no attempt to format, we want simple true/false\n\n // First see if the remediation has a mapping for this vale\n const data = this.getData(key);\n if (typeof data === 'object') {\n return !!Object.keys(data).find(key => !!data[key]);\n }\n return !!data;\n }\n\n getNextStep(): NextStep {\n const name = this.getName();\n const inputs = this.getInputs();\n const authenticator = this.getAuthenticator();\n // TODO: remove type field in the next major version change\n // https://oktainc.atlassian.net/browse/OKTA-431749\n const type = authenticator?.type;\n return { \n name, \n inputs, \n ...(type && { type }),\n ...(authenticator && { authenticator }),\n };\n }\n\n // Get inputs for the next step\n private getInputs(): Input[] {\n if (!this.map) {\n return [];\n }\n\n return Object.keys(this.map).reduce((inputs, key) => {\n const inputFromRemediation = this.remediation.value.find(item => item.name === key);\n if (!inputFromRemediation) {\n return inputs;\n }\n\n let input: Input;\n const aliases = this.map[key];\n const { type } = inputFromRemediation;\n if (typeof this[`getInput${titleCase(key)}`] === 'function') {\n input = this[`getInput${titleCase(key)}`](inputFromRemediation);\n } else if (type !== 'object') {\n // handle general primitive types\n let name;\n if (aliases.length === 1) {\n name = aliases[0];\n } else {\n // try find key from values\n name = aliases.find(name => Object.keys(this.values).includes(name));\n }\n if (name) {\n input = { ...inputFromRemediation, name };\n }\n } \n\n if (!input) {\n throw new AuthSdkError(`Missing custom getInput${titleCase(key)} method in Remediator: ${this.getName()}`);\n }\n\n if (Array.isArray(input)) {\n input.forEach(i => inputs.push(i));\n } else {\n inputs.push(input);\n }\n return inputs;\n }, []);\n }\n\n // Override this method to grab messages per remediation\n getMessages(): IdxMessage[] | undefined {\n if (!this.remediation.value) {\n return;\n }\n return this.remediation.value[0]?.form?.value.reduce((messages, field) => {\n if (field.messages) {\n messages = [...messages, ...field.messages.value];\n }\n return messages;\n }, []);\n }\n\n // Prepare values for the next remediation\n // In general, remove finished authenticator from list\n getValuesAfterProceed(): unknown {\n const authenticatorKey = this.getAuthenticator()?.key;\n const authenticators = (this.values.authenticators as Authenticator[])\n ?.filter(authenticator => authenticator.key !== authenticatorKey);\n return { ...this.values, authenticators };\n }\n\n protected getAuthenticator(): IdxAuthenticator | undefined {\n return this.remediation.relatesTo?.value;\n }\n\n}\n"],"file":"Remediator.js"}
@@ -27,7 +27,7 @@ function findMatchedOption(authenticators, options) {
27
27
  var {
28
28
  relatesTo
29
29
  } = _ref;
30
- return relatesTo.type === authenticator.type;
30
+ return relatesTo.key === authenticator.key;
31
31
  });
32
32
 
33
33
  if (option) {
@@ -58,12 +58,12 @@ export class SelectAuthenticator extends Remediator {
58
58
  authenticator: selectedAuthenticator,
59
59
  authenticators
60
60
  } = this.values;
61
- var hasSelectedAuthenticatorInList = authenticators === null || authenticators === void 0 ? void 0 : authenticators.some(authenticator => authenticator.type === selectedAuthenticator);
61
+ var hasSelectedAuthenticatorInList = authenticators === null || authenticators === void 0 ? void 0 : authenticators.some(authenticator => authenticator.key === selectedAuthenticator);
62
62
 
63
63
  if (selectedAuthenticator && !hasSelectedAuthenticatorInList) {
64
64
  // add selected authenticator to list
65
65
  this.values.authenticators = [...(authenticators || []), {
66
- type: selectedAuthenticator
66
+ key: selectedAuthenticator
67
67
  }];
68
68
  }
69
69
  }
@@ -98,12 +98,12 @@ export class SelectAuthenticator extends Remediator {
98
98
  var {
99
99
  label,
100
100
  relatesTo: {
101
- type
101
+ key
102
102
  }
103
103
  } = option;
104
104
  return {
105
105
  label,
106
- value: type
106
+ value: key
107
107
  };
108
108
  });
109
109
  return _objectSpread(_objectSpread({}, common), {}, {
@@ -132,7 +132,7 @@ export class SelectAuthenticator extends Remediator {
132
132
  getInputAuthenticator() {
133
133
  return {
134
134
  name: 'authenticator',
135
- type: 'string'
135
+ key: 'string'
136
136
  };
137
137
  }
138
138
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../lib/idx/remediators/Base/SelectAuthenticator.ts"],"names":["Remediator","getAuthenticatorFromRemediation","findMatchedOption","authenticators","options","option","authenticator","find","relatesTo","type","SelectAuthenticator","constructor","remediation","values","selectedAuthenticator","hasSelectedAuthenticatorInList","some","canRemediate","authenticatorFromRemediation","length","matchedOption","getNextStep","common","map","label","value","mapAuthenticator","remediationValue","selectedOption","id","form","name","getInputAuthenticator"],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator, RemediationValues } from './Remediator';\nimport { getAuthenticatorFromRemediation } from '../util';\nimport { IdxRemediation, IdxRemediationValue } from '../../types/idx-js';\nimport { Authenticator } from '../../types';\n\n// Find matched authenticator in provided order\nfunction findMatchedOption(authenticators, options) {\n let option;\n for (let authenticator of authenticators) {\n option = options\n .find(({ relatesTo }) => relatesTo.type === authenticator.type);\n if (option) {\n break;\n }\n }\n return option;\n}\n\nexport type SelectAuthenticatorValues = RemediationValues & {\n authenticator?: string;\n};\n\n// Base class - DO NOT expose static remediationName\nexport class SelectAuthenticator extends Remediator {\n values: SelectAuthenticatorValues;\n matchedOption: IdxRemediation;\n \n map = {\n authenticator: []\n }\n\n constructor(remediation: IdxRemediation, values: SelectAuthenticatorValues = {}) {\n super(remediation, values);\n \n // Unify authenticator input type\n const { authenticator: selectedAuthenticator, authenticators } = this.values;\n const hasSelectedAuthenticatorInList = authenticators\n ?.some((authenticator => authenticator.type === selectedAuthenticator));\n if (selectedAuthenticator && !hasSelectedAuthenticatorInList) {\n // add selected authenticator to list\n this.values.authenticators = [\n ...(authenticators || []), \n { type: selectedAuthenticator }\n ] as Authenticator[];\n }\n }\n\n canRemediate() {\n const { authenticators } = this.values;\n const authenticatorFromRemediation = getAuthenticatorFromRemediation(this.remediation);\n const { options } = authenticatorFromRemediation;\n // Let users select authenticator if no input is provided\n if (!authenticators || !authenticators.length) {\n return false;\n }\n // Proceed with provided authenticators\n const matchedOption = findMatchedOption(authenticators, options);\n if (matchedOption) {\n return true;\n }\n \n return false;\n }\n\n getNextStep() {\n const common = super.getNextStep();\n const authenticatorFromRemediation = getAuthenticatorFromRemediation(this.remediation);\n const options = authenticatorFromRemediation.options.map(option => {\n const { \n label, \n relatesTo: { type } \n } = option;\n return { label, value: type };\n });\n return { ...common, options };\n }\n\n mapAuthenticator(remediationValue: IdxRemediationValue) {\n const { authenticators } = this.values;\n const { options } = remediationValue;\n const selectedOption = findMatchedOption(authenticators, options);\n return {\n id: selectedOption?.value.form.value.find(({ name }) => name === 'id').value\n };\n }\n\n getInputAuthenticator() {\n return { name: 'authenticator', type: 'string' };\n }\n\n}\n"],"file":"SelectAuthenticator.js"}
1
+ {"version":3,"sources":["../../../../../lib/idx/remediators/Base/SelectAuthenticator.ts"],"names":["Remediator","getAuthenticatorFromRemediation","findMatchedOption","authenticators","options","option","authenticator","find","relatesTo","key","SelectAuthenticator","constructor","remediation","values","selectedAuthenticator","hasSelectedAuthenticatorInList","some","canRemediate","authenticatorFromRemediation","length","matchedOption","getNextStep","common","map","label","value","mapAuthenticator","remediationValue","selectedOption","id","form","name","getInputAuthenticator"],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator, RemediationValues } from './Remediator';\nimport { getAuthenticatorFromRemediation } from '../util';\nimport { IdxRemediation, IdxRemediationValue } from '../../types/idx-js';\nimport { Authenticator } from '../../types';\n\n// Find matched authenticator in provided order\nfunction findMatchedOption(authenticators, options) {\n let option;\n for (let authenticator of authenticators) {\n option = options\n .find(({ relatesTo }) => relatesTo.key === authenticator.key);\n if (option) {\n break;\n }\n }\n return option;\n}\n\nexport type SelectAuthenticatorValues = RemediationValues & {\n authenticator?: string;\n};\n\n// Base class - DO NOT expose static remediationName\nexport class SelectAuthenticator extends Remediator {\n values: SelectAuthenticatorValues;\n matchedOption: IdxRemediation;\n \n map = {\n authenticator: []\n }\n\n constructor(remediation: IdxRemediation, values: SelectAuthenticatorValues = {}) {\n super(remediation, values);\n \n // Unify authenticator input type\n const { authenticator: selectedAuthenticator, authenticators } = this.values;\n const hasSelectedAuthenticatorInList = authenticators\n ?.some((authenticator => authenticator.key === selectedAuthenticator));\n if (selectedAuthenticator && !hasSelectedAuthenticatorInList) {\n // add selected authenticator to list\n this.values.authenticators = [\n ...(authenticators || []), \n { key: selectedAuthenticator }\n ] as Authenticator[];\n }\n }\n\n canRemediate() {\n const { authenticators } = this.values;\n const authenticatorFromRemediation = getAuthenticatorFromRemediation(this.remediation);\n const { options } = authenticatorFromRemediation;\n // Let users select authenticator if no input is provided\n if (!authenticators || !authenticators.length) {\n return false;\n }\n // Proceed with provided authenticators\n const matchedOption = findMatchedOption(authenticators, options);\n if (matchedOption) {\n return true;\n }\n \n return false;\n }\n\n getNextStep() {\n const common = super.getNextStep();\n const authenticatorFromRemediation = getAuthenticatorFromRemediation(this.remediation);\n const options = authenticatorFromRemediation.options.map(option => {\n const { \n label, \n relatesTo: { key } \n } = option;\n return { label, value: key };\n });\n return { ...common, options };\n }\n\n mapAuthenticator(remediationValue: IdxRemediationValue) {\n const { authenticators } = this.values;\n const { options } = remediationValue;\n const selectedOption = findMatchedOption(authenticators, options);\n return {\n id: selectedOption?.value.form.value.find(({ name }) => name === 'id').value\n };\n }\n\n getInputAuthenticator() {\n return { name: 'authenticator', key: 'string' };\n }\n\n}\n"],"file":"SelectAuthenticator.js"}
@@ -27,17 +27,7 @@ export class VerifyAuthenticator extends Remediator {
27
27
  }
28
28
 
29
29
  canRemediate() {
30
- var challengeType = this.getRelatesToType();
31
-
32
- if (this.values.verificationCode && ['email', 'phone'].includes(challengeType)) {
33
- return true;
34
- }
35
-
36
- if (this.values.password && challengeType === 'password') {
37
- return true;
38
- }
39
-
40
- return false;
30
+ return !!(this.values.password || this.values.verificationCode);
41
31
  }
42
32
 
43
33
  mapCredentials() {
@@ -47,16 +37,29 @@ export class VerifyAuthenticator extends Remediator {
47
37
  }
48
38
 
49
39
  getInputCredentials(input) {
50
- var challengeType = this.getRelatesToType();
40
+ var _input$form;
41
+
42
+ var challengeType = this.getAuthenticator().type;
51
43
  var name = challengeType === 'password' ? 'password' : 'verificationCode';
52
- return _objectSpread(_objectSpread({}, input.form.value[0]), {}, {
44
+ return _objectSpread(_objectSpread({}, (_input$form = input.form) === null || _input$form === void 0 ? void 0 : _input$form.value[0]), {}, {
53
45
  name,
54
46
  type: 'string',
55
47
  required: input.required
56
48
  });
57
49
  }
58
50
 
59
- }
51
+ getValuesAfterProceed() {
52
+ var values = super.getValuesAfterProceed();
53
+ var authenticator = this.getAuthenticator();
54
+
55
+ if (authenticator.type === 'password') {
56
+ delete values.password;
57
+ } else {
58
+ delete values.verificationCode;
59
+ }
60
60
 
61
- _defineProperty(VerifyAuthenticator, "remediationName", 'challenge-authenticator');
61
+ return values;
62
+ }
63
+
64
+ }
62
65
  //# sourceMappingURL=VerifyAuthenticator.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../lib/idx/remediators/Base/VerifyAuthenticator.ts"],"names":["Remediator","VerifyAuthenticator","canRemediate","challengeType","getRelatesToType","values","verificationCode","includes","password","mapCredentials","passcode","getInputCredentials","input","name","form","value","type","required"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA,SAASA,UAAT,QAA8C,cAA9C;AAOA;AACA,OAAO,MAAMC,mBAAN,SAAkCD,UAAlC,CAA6C;AAAA;AAAA;;AAAA,iCAK5C;AACJ,qBAAe;AADX,KAL4C;AAAA;;AASlDE,EAAAA,YAAY,GAAG;AACb,QAAMC,aAAa,GAAG,KAAKC,gBAAL,EAAtB;;AACA,QAAI,KAAKC,MAAL,CAAYC,gBAAZ,IACG,CAAC,OAAD,EAAU,OAAV,EAAmBC,QAAnB,CAA4BJ,aAA5B,CADP,EACmD;AACjD,aAAO,IAAP;AACD;;AACD,QAAI,KAAKE,MAAL,CAAYG,QAAZ,IAAwBL,aAAa,KAAK,UAA9C,EAA0D;AACxD,aAAO,IAAP;AACD;;AACD,WAAO,KAAP;AACD;;AAEDM,EAAAA,cAAc,GAAG;AACf,WAAO;AACLC,MAAAA,QAAQ,EAAE,KAAKL,MAAL,CAAYC,gBAAZ,IAAgC,KAAKD,MAAL,CAAYG;AADjD,KAAP;AAGD;;AAEDG,EAAAA,mBAAmB,CAACC,KAAD,EAAQ;AACzB,QAAMT,aAAa,GAAG,KAAKC,gBAAL,EAAtB;AACA,QAAMS,IAAI,GAAGV,aAAa,KAAK,UAAlB,GAA+B,UAA/B,GAA4C,kBAAzD;AACA,2CACKS,KAAK,CAACE,IAAN,CAAWC,KAAX,CAAiB,CAAjB,CADL;AAEEF,MAAAA,IAFF;AAGEG,MAAAA,IAAI,EAAE,QAHR;AAIEC,MAAAA,QAAQ,EAAEL,KAAK,CAACK;AAJlB;AAMD;;AApCiD;;gBAAvChB,mB,qBACc,yB","sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator, RemediationValues } from './Remediator';\n\nexport interface VerifyAuthenticatorValues extends RemediationValues {\n verificationCode?: string;\n password?: string;\n}\n\n// Base class - DO NOT expose static remediationName\nexport class VerifyAuthenticator extends Remediator {\n static remediationName = 'challenge-authenticator';\n\n values: VerifyAuthenticatorValues;\n\n map = {\n 'credentials': []\n };\n\n canRemediate() {\n const challengeType = this.getRelatesToType();\n if (this.values.verificationCode \n && ['email', 'phone'].includes(challengeType)) {\n return true;\n }\n if (this.values.password && challengeType === 'password') {\n return true;\n }\n return false;\n }\n\n mapCredentials() {\n return { \n passcode: this.values.verificationCode || this.values.password\n };\n }\n\n getInputCredentials(input) {\n const challengeType = this.getRelatesToType();\n const name = challengeType === 'password' ? 'password' : 'verificationCode';\n return {\n ...input.form.value[0],\n name,\n type: 'string',\n required: input.required\n };\n }\n\n}\n"],"file":"VerifyAuthenticator.js"}
1
+ {"version":3,"sources":["../../../../../lib/idx/remediators/Base/VerifyAuthenticator.ts"],"names":["Remediator","VerifyAuthenticator","canRemediate","values","password","verificationCode","mapCredentials","passcode","getInputCredentials","input","challengeType","getAuthenticator","type","name","form","value","required","getValuesAfterProceed","authenticator"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA,SAASA,UAAT,QAA8C,cAA9C;AAOA;AACA,OAAO,MAAMC,mBAAN,SAAkCD,UAAlC,CAA6C;AAAA;AAAA;;AAAA,iCAI5C;AACJ,qBAAe;AADX,KAJ4C;AAAA;;AAQlDE,EAAAA,YAAY,GAAG;AACb,WAAO,CAAC,EAAE,KAAKC,MAAL,CAAYC,QAAZ,IAAwB,KAAKD,MAAL,CAAYE,gBAAtC,CAAR;AACD;;AAEDC,EAAAA,cAAc,GAAG;AACf,WAAO;AACLC,MAAAA,QAAQ,EAAE,KAAKJ,MAAL,CAAYE,gBAAZ,IAAgC,KAAKF,MAAL,CAAYC;AADjD,KAAP;AAGD;;AAEDI,EAAAA,mBAAmB,CAACC,KAAD,EAAQ;AAAA;;AACzB,QAAMC,aAAa,GAAG,KAAKC,gBAAL,GAAwBC,IAA9C;AACA,QAAMC,IAAI,GAAGH,aAAa,KAAK,UAAlB,GAA+B,UAA/B,GAA4C,kBAAzD;AACA,0DACKD,KAAK,CAACK,IADX,gDACK,YAAYC,KAAZ,CAAkB,CAAlB,CADL;AAEEF,MAAAA,IAFF;AAGED,MAAAA,IAAI,EAAE,QAHR;AAIEI,MAAAA,QAAQ,EAAEP,KAAK,CAACO;AAJlB;AAMD;;AAEDC,EAAAA,qBAAqB,GAAG;AACtB,QAAId,MAAM,GAAG,MAAMc,qBAAN,EAAb;AACA,QAAMC,aAAa,GAAG,KAAKP,gBAAL,EAAtB;;AACA,QAAIO,aAAa,CAACN,IAAd,KAAuB,UAA3B,EAAuC;AACrC,aAAOT,MAAM,CAACC,QAAd;AACD,KAFD,MAEO;AACL,aAAOD,MAAM,CAACE,gBAAd;AACD;;AACD,WAAOF,MAAP;AACD;;AAtCiD","sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator, RemediationValues } from './Remediator';\n\nexport interface VerifyAuthenticatorValues extends RemediationValues {\n verificationCode?: string;\n password?: string;\n}\n\n// Base class - DO NOT expose static remediationName\nexport class VerifyAuthenticator extends Remediator {\n\n values: VerifyAuthenticatorValues;\n\n map = {\n 'credentials': []\n };\n\n canRemediate() {\n return !!(this.values.password || this.values.verificationCode);\n }\n\n mapCredentials() {\n return { \n passcode: this.values.verificationCode || this.values.password\n };\n }\n\n getInputCredentials(input) {\n const challengeType = this.getAuthenticator().type;\n const name = challengeType === 'password' ? 'password' : 'verificationCode';\n return {\n ...input.form?.value[0],\n name,\n type: 'string',\n required: input.required\n };\n }\n\n getValuesAfterProceed() {\n let values = super.getValuesAfterProceed() as VerifyAuthenticatorValues;\n const authenticator = this.getAuthenticator();\n if (authenticator.type === 'password') {\n delete values.password;\n } else {\n delete values.verificationCode;\n }\n return values;\n }\n\n}\n"],"file":"VerifyAuthenticator.js"}
@@ -25,16 +25,33 @@ export class EnrollProfile extends Remediator {
25
25
  });
26
26
  }
27
27
 
28
- mapUserProfile(_ref) {
28
+ canRemediate() {
29
+ var userProfileFromValues = this.getData().userProfile;
30
+ var userProfileFromRemediation = this.remediation.value.find(_ref => {
31
+ var {
32
+ name
33
+ } = _ref;
34
+ return name === 'userProfile';
35
+ });
36
+ return userProfileFromRemediation.form.value.reduce((canRemediate, curr) => {
37
+ if (curr.required) {
38
+ canRemediate = canRemediate && !!userProfileFromValues[curr.name];
39
+ }
40
+
41
+ return canRemediate;
42
+ }, true);
43
+ }
44
+
45
+ mapUserProfile(_ref2) {
29
46
  var {
30
47
  form: {
31
48
  value: profileAttributes
32
49
  }
33
- } = _ref;
34
- var attributeNames = profileAttributes.map(_ref2 => {
50
+ } = _ref2;
51
+ var attributeNames = profileAttributes.map(_ref3 => {
35
52
  var {
36
53
  name
37
- } = _ref2;
54
+ } = _ref3;
38
55
  return name;
39
56
  });
40
57
  return attributeNames.reduce((attributeValues, attributeName) => this.values[attributeName] ? _objectSpread(_objectSpread({}, attributeValues), {}, {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../lib/idx/remediators/EnrollProfile.ts"],"names":["Remediator","EnrollProfile","mapUserProfile","form","value","profileAttributes","attributeNames","map","name","reduce","attributeValues","attributeName","values","getInputUserProfile","input","getErrorMessages","errorRemediation","errors","field","messages","push","message"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA,SAASA,UAAT,QAA8C,mBAA9C;AAQA,OAAO,MAAMC,aAAN,SAA4BD,UAA5B,CAAuC;AAAA;AAAA;;AAAA,iCAKtC;AACJ,qBAAe;AADX,KALsC;AAAA;;AAS5CE,EAAAA,cAAc,OAAuC;AAAA,QAAtC;AAACC,MAAAA,IAAI,EAAE;AAAEC,QAAAA,KAAK,EAAEC;AAAT;AAAP,KAAsC;AACnD,QAAMC,cAAc,GAAGD,iBAAiB,CAACE,GAAlB,CAAsB;AAAA,UAAC;AAACC,QAAAA;AAAD,OAAD;AAAA,aAAYA,IAAZ;AAAA,KAAtB,CAAvB;AACA,WAAOF,cAAc,CAACG,MAAf,CAAsB,CAACC,eAAD,EAAkBC,aAAlB,KAC3B,KAAKC,MAAL,CAAYD,aAAZ,oCACGD,eADH;AAEA,OAACC,aAAD,GAAiB,KAAKC,MAAL,CAAYD,aAAZ;AAFjB,SAGED,eAJG,EAIe,EAJf,CAAP;AAKD;;AAEDG,EAAAA,mBAAmB,CAACC,KAAD,EAAQ;AACzB,WAAO,CAAC,GAAGA,KAAK,CAACX,IAAN,CAAWC,KAAf,CAAP;AACD;;AAEDW,EAAAA,gBAAgB,CAACC,gBAAD,EAAmB;AACjC,WAAOA,gBAAgB,CAACZ,KAAjB,CAAuB,CAAvB,EAA0BD,IAA1B,CAA+BC,KAA/B,CAAqCK,MAArC,CAA4C,CAACQ,MAAD,EAASC,KAAT,KAAmB;AACpE,UAAIA,KAAK,CAACC,QAAV,EAAoB;AAClBF,QAAAA,MAAM,CAACG,IAAP,CAAYF,KAAK,CAACC,QAAN,CAAef,KAAf,CAAqB,CAArB,EAAwBiB,OAApC;AACD;;AACD,aAAOJ,MAAP;AACD,KALM,EAKJ,EALI,CAAP;AAMD;;AA7B2C;;gBAAjChB,a,qBACc,gB","sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator, RemediationValues } from './Base/Remediator';\n\nexport interface EnrollProfileValues extends RemediationValues {\n firstName?: string;\n lastName?: string;\n email?: string;\n}\n\nexport class EnrollProfile extends Remediator {\n static remediationName = 'enroll-profile';\n\n values: EnrollProfileValues;\n\n map = {\n 'userProfile': []\n };\n\n mapUserProfile({form: { value: profileAttributes }}) {\n const attributeNames = profileAttributes.map(({name}) => name);\n return attributeNames.reduce((attributeValues, attributeName) => (\n this.values[attributeName] ? {\n ...attributeValues,\n [attributeName]: this.values[attributeName]\n } : attributeValues), {});\n }\n\n getInputUserProfile(input) {\n return [...input.form.value];\n }\n\n getErrorMessages(errorRemediation) {\n return errorRemediation.value[0].form.value.reduce((errors, field) => {\n if (field.messages) {\n errors.push(field.messages.value[0].message);\n }\n return errors;\n }, []);\n }\n}"],"file":"EnrollProfile.js"}
1
+ {"version":3,"sources":["../../../../lib/idx/remediators/EnrollProfile.ts"],"names":["Remediator","EnrollProfile","canRemediate","userProfileFromValues","getData","userProfile","userProfileFromRemediation","remediation","value","find","name","form","reduce","curr","required","mapUserProfile","profileAttributes","attributeNames","map","attributeValues","attributeName","values","getInputUserProfile","input","getErrorMessages","errorRemediation","errors","field","messages","push","message"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA,SAASA,UAAT,QAA8C,mBAA9C;AAQA,OAAO,MAAMC,aAAN,SAA4BD,UAA5B,CAAuC;AAAA;AAAA;;AAAA,iCAKtC;AACJ,qBAAe;AADX,KALsC;AAAA;;AAS5CE,EAAAA,YAAY,GAAG;AACb,QAAMC,qBAAqB,GAAG,KAAKC,OAAL,GAAeC,WAA7C;AACA,QAAMC,0BAA0B,GAAG,KAAKC,WAAL,CAAiBC,KAAjB,CAAuBC,IAAvB,CAA4B;AAAA,UAAC;AAAEC,QAAAA;AAAF,OAAD;AAAA,aAAcA,IAAI,KAAK,aAAvB;AAAA,KAA5B,CAAnC;AACA,WAAOJ,0BAA0B,CAACK,IAA3B,CAAgCH,KAAhC,CAAsCI,MAAtC,CAA6C,CAACV,YAAD,EAAeW,IAAf,KAAwB;AAC1E,UAAIA,IAAI,CAACC,QAAT,EAAmB;AACjBZ,QAAAA,YAAY,GAAGA,YAAY,IAAI,CAAC,CAACC,qBAAqB,CAACU,IAAI,CAACH,IAAN,CAAtD;AACD;;AACD,aAAOR,YAAP;AACD,KALM,EAKJ,IALI,CAAP;AAMD;;AAEDa,EAAAA,cAAc,QAAuC;AAAA,QAAtC;AAACJ,MAAAA,IAAI,EAAE;AAAEH,QAAAA,KAAK,EAAEQ;AAAT;AAAP,KAAsC;AACnD,QAAMC,cAAc,GAAGD,iBAAiB,CAACE,GAAlB,CAAsB;AAAA,UAAC;AAACR,QAAAA;AAAD,OAAD;AAAA,aAAYA,IAAZ;AAAA,KAAtB,CAAvB;AACA,WAAOO,cAAc,CAACL,MAAf,CAAsB,CAACO,eAAD,EAAkBC,aAAlB,KAC3B,KAAKC,MAAL,CAAYD,aAAZ,oCACGD,eADH;AAEA,OAACC,aAAD,GAAiB,KAAKC,MAAL,CAAYD,aAAZ;AAFjB,SAGED,eAJG,EAIe,EAJf,CAAP;AAKD;;AAEDG,EAAAA,mBAAmB,CAACC,KAAD,EAAQ;AACzB,WAAO,CAAC,GAAGA,KAAK,CAACZ,IAAN,CAAWH,KAAf,CAAP;AACD;;AAEDgB,EAAAA,gBAAgB,CAACC,gBAAD,EAAmB;AACjC,WAAOA,gBAAgB,CAACjB,KAAjB,CAAuB,CAAvB,EAA0BG,IAA1B,CAA+BH,KAA/B,CAAqCI,MAArC,CAA4C,CAACc,MAAD,EAASC,KAAT,KAAmB;AACpE,UAAIA,KAAK,CAACC,QAAV,EAAoB;AAClBF,QAAAA,MAAM,CAACG,IAAP,CAAYF,KAAK,CAACC,QAAN,CAAepB,KAAf,CAAqB,CAArB,EAAwBsB,OAApC;AACD;;AACD,aAAOJ,MAAP;AACD,KALM,EAKJ,EALI,CAAP;AAMD;;AAxC2C;;gBAAjCzB,a,qBACc,gB","sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { Remediator, RemediationValues } from './Base/Remediator';\n\nexport interface EnrollProfileValues extends RemediationValues {\n firstName?: string;\n lastName?: string;\n email?: string;\n}\n\nexport class EnrollProfile extends Remediator {\n static remediationName = 'enroll-profile';\n\n values: EnrollProfileValues;\n\n map = {\n 'userProfile': []\n };\n\n canRemediate() {\n const userProfileFromValues = this.getData().userProfile;\n const userProfileFromRemediation = this.remediation.value.find(({ name }) => name === 'userProfile');\n return userProfileFromRemediation.form.value.reduce((canRemediate, curr) => {\n if (curr.required) {\n canRemediate = canRemediate && !!userProfileFromValues[curr.name];\n }\n return canRemediate;\n }, true);\n }\n\n mapUserProfile({form: { value: profileAttributes }}) {\n const attributeNames = profileAttributes.map(({name}) => name);\n return attributeNames.reduce((attributeValues, attributeName) => (\n this.values[attributeName] ? {\n ...attributeValues,\n [attributeName]: this.values[attributeName]\n } : attributeValues), {});\n }\n\n getInputUserProfile(input) {\n return [...input.form.value];\n }\n\n getErrorMessages(errorRemediation) {\n return errorRemediation.value[0].form.value.reduce((errors, field) => {\n if (field.messages) {\n errors.push(field.messages.value[0].message);\n }\n return errors;\n }, []);\n }\n}"],"file":"EnrollProfile.js"}