packages-fetcher/console-fetcher-risk-prompt/stories/demo-default/index.tsx (225 lines of code) (raw):
/* eslint-disable no-console */
import React, {
useState,
useCallback
} from 'react';
import styled from 'styled-components';
import {
H1,
Button,
RadioGroup,
CheckboxGroup
} from '@alicloud/demo-rc-elements';
import {
fetcherRiskData
} from '@alicloud/console-fetcher-risk-data';
import {
fetcherDemoInterceptorMockSystemUrls
} from '@alicloud/fetcher-demo-helpers';
import ThemeSwitcher from '@alicloud/console-base-demo-helper-theme-switcher';
import riskPrompt, {
type RiskValidator,
type RiskParametersGetter
} from '../../src';
interface IRiskResponseData {
AccountId: string;
CodeType: string;
VerifyType: string;
VerifyDetail: boolean;
RiskValidators: RiskValidator[];
}
const ScButton = styled(Button)`
margin: 0 8px;
`;
fetcherRiskData.sealInterceptors(false, false);
fetcherRiskData.interceptRequest(fetcherDemoInterceptorMockSystemUrls);
fetcherRiskData.sealInterceptors(true, true);
export default function DemoDefault(): JSX.Element {
const [stateMfaBound, setStateMfaBound] = useState<string>('false');
const [stateSubValidators, setStateSubValidators] = useState<string[]>(['ga']);
const handleSubRiskBindPrompt = useCallback(async () => {
const riskPromptResult = await riskPrompt({
riskResponse: {
data: {
Validators: {
Validator: [
{
VerifyDetail: 'false',
VerifyType: 'ga'
}
]
},
CodeType: 'ims_login_update',
VerifyDetail: '137****2864',
VerifyType: 'sms',
AliyunIdkp: '1647******209939'
}
}
});
console.log('sub_risk_bind_prompt_result', riskPromptResult);
}, []);
const handleSubRiskAuthPrompt = useCallback(async () => {
const riskParametersGetter: RiskParametersGetter<IRiskResponseData> = riskResponse => {
return {
accountId: riskResponse.AccountId,
validators: riskResponse.RiskValidators,
codeType: riskResponse.CodeType,
verifyType: riskResponse.VerifyType,
verifyDetail: riskResponse.VerifyDetail
};
};
const riskValidators = stateSubValidators.map(o => {
if (o === 'ga') {
return {
VerifyDetail: stateMfaBound,
VerifyType: 'ga'
};
}
if (o === 'sms') {
return {
VerifyDetail: '86-13100000000',
VerifyType: 'sms'
};
}
return {
VerifyDetail: 'zzz@a.com',
VerifyType: 'email'
};
});
const riskPromptResult = await riskPrompt<IRiskResponseData>({
riskResponse: {
RiskValidators: riskValidators,
CodeType: 'ims_login_update',
VerifyDetail: true,
VerifyType: 'ga',
AccountId: '12345****000'
},
riskParametersGetter
});
console.log('sub_risk_auth_prompt_result', riskPromptResult);
}, [stateMfaBound, stateSubValidators]);
const handleSubRiskInvalidPrompt = useCallback(async () => {
const riskPromptResult = await riskPrompt({
newRisk: true,
riskResponse: {
data: {
Action: 'doubleConfirm',
Message: '000您的账户出现异常,详情请联系客服。',
Extend: {
scriptId: '12345'
},
Validators: {
Validator: [
{
VerifyDetail: '1234****000',
VerifyType: 'mmm'
}
]
},
CodeType: 'ecs_instance_delete',
Tag: 'RR000',
VerifyDetail: '1234****0',
VerifyType: 'sms',
AliyunIdkp: '1234****0',
NoRisk: false
}
}
});
console.log('sub_risk_auth_prompt_result', riskPromptResult);
}, []);
const handleNewMainRiskPrompt = useCallback(async () => {
const riskPromptResult = await riskPrompt({
riskResponse: {
data: {
Validators: {
Validator: [
{
VerifyDetail: '1234***0',
VerifyType: 'sms'
}
]
},
CodeType: 'ims_login_update',
VerifyURL: 'https://passport.aliyun.com:4333/iv/remote/mini/request.htm?havana_iv_token=123456****0',
VerifyDetail: '137****2864',
VerifyType: 'sms',
AliyunIdkp: '1234***0'
}
}
});
console.log('sub_risk_bind_prompt_result', riskPromptResult);
}, []);
const handleOldMainRiskPrompt = useCallback(async () => {
const riskPromptResult = await riskPrompt({
riskResponse: {
data: {
verifyDetail: '1234****0',
codeType: 'rg_authorization_add',
verifyType: 'ga'
}
}
});
console.log('new_main_prompt_result', riskPromptResult);
}, []);
const handleMpkRiskPrompt = useCallback(async () => {
const riskPromptResult = await riskPrompt({
riskResponse: {
Extend: {
isMpk: 'true',
useOldVersion: 'false'
},
Validators: {
Validator: [
{
VerifyDetail: '1234***0',
VerifyType: 'sms'
}
]
},
CodeType: 'ims_login_update',
VerifyDetail: '137****2864',
VerifyType: 'sms',
AliyunIdkp: '1234***0'
}
});
console.log('new_main_prompt_result', riskPromptResult);
}, []);
return <>
<H1>风控弹窗 console-base-risk-prompt</H1>
<ThemeSwitcher />
<CheckboxGroup {...{
label: '子账号风控方式选择',
items: [{
label: 'ga',
value: 'ga'
}, {
label: 'sms',
value: 'sms'
}, {
label: 'email',
value: 'email'
}],
onChange: o => {
setStateSubValidators(o);
}
}} />
<RadioGroup<string> {...{
label: 'MFA 绑定状态选择',
defaultValue: 'false',
items: [{
value: 'true',
label: 'true'
}, {
value: 'false',
label: 'false'
}],
onChange: o => {
setStateMfaBound(o);
}
}} />
<ScButton onClick={handleSubRiskBindPrompt}>子账号风控弹窗 - 绑定 MFA</ScButton>
<ScButton onClick={handleSubRiskAuthPrompt}>子账号风控弹窗 - 验证 MFA(可通过配置项配置)</ScButton>
<ScButton onClick={handleSubRiskInvalidPrompt}>子账号风控弹窗 - Invalid</ScButton>
<ScButton onClick={handleNewMainRiskPrompt}>新版主账号风控弹窗</ScButton>
<ScButton onClick={handleOldMainRiskPrompt}>旧版主账号风控弹窗</ScButton>
<ScButton onClick={handleMpkRiskPrompt}>MPK账号风控弹窗</ScButton>
</>;
}