-
Notifications
You must be signed in to change notification settings - Fork 262
/
SelectAuthenticatorUnlockAccount.ts
61 lines (48 loc) · 2.1 KB
/
SelectAuthenticatorUnlockAccount.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/*!
* Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.
* The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
*
* You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*
* See the License for the specific language governing permissions and limitations under the License.
*/
import { SelectAuthenticator, SelectAuthenticatorValues } from './Base/SelectAuthenticator';
import { Authenticator } from '../types';
import { IdxRemediationValue } from '../types/idx-js';
export type SelectAuthenticatorUnlockAccountValues = SelectAuthenticatorValues & {
identifier?: string;
methodType?: string;
};
export class SelectAuthenticatorUnlockAccount extends SelectAuthenticator<SelectAuthenticatorUnlockAccountValues> {
static remediationName = 'select-authenticator-unlock-account';
authenticator?: Authenticator;
map = {
identifier: ['username']
};
canRemediate() {
const identifier = this.getData('identifier');
return !!identifier && super.canRemediate();
}
mapAuthenticator(remediationValue: IdxRemediationValue) {
const authenticatorMap = super.mapAuthenticator(remediationValue);
const methodTypeOption = this.selectedOption?.value.form.value.find(({ name }) => name === 'methodType');
// defaults to 'manually defined' value
// 2nd: option may have pre-defined value, like stateHandle
// 3rd: if only a single OV option is available, default to that option
const methodTypeValue = this.values.methodType ||
methodTypeOption?.value as string || methodTypeOption?.options?.[0]?.value as string;
if (methodTypeValue) {
return {
...authenticatorMap,
methodType: methodTypeValue
};
}
return authenticatorMap;
}
getInputUsername () {
return { name: 'username', type: 'string' };
}
}