Pārlūkot izejas kodu

ind captcha

master
Anna Ho pirms 1 gada
vecāks
revīzija
d103d4d5ad
1 mainītis faili ar 71 papildinājumiem un 3 dzēšanām
  1. +71
    -3
      src/pages/authentication/auth-forms/CustomFormWizard.js

+ 71
- 3
src/pages/authentication/auth-forms/CustomFormWizard.js Parādīt failu

@@ -29,7 +29,7 @@ import * as yup from 'yup';
import { strengthColorChi, strengthIndicator } from 'utils/password-strength'; import { strengthColorChi, strengthIndicator } from 'utils/password-strength';
// import {apiPath} from "auth/utils"; // import {apiPath} from "auth/utils";
import axios from "axios"; import axios from "axios";
import {POST_PUBLIC_USER_REGISTER} from "utils/ApiPathConst";
import {POST_PUBLIC_USER_REGISTER,POST_CAPTCHA} from "utils/ApiPathConst";
// import * as HttpUtils from 'utils/HttpUtils'; // import * as HttpUtils from 'utils/HttpUtils';
import * as ComboData from "../../../utils/ComboData"; import * as ComboData from "../../../utils/ComboData";


@@ -47,7 +47,8 @@ import { EyeInvisibleOutlined, EyeOutlined } from '@ant-design/icons';
import CheckCircleOutlineIcon from '@mui/icons-material/CheckCircleOutline'; import CheckCircleOutlineIcon from '@mui/icons-material/CheckCircleOutline';
import CancelOutlinedIcon from '@mui/icons-material/CancelOutlined'; import CancelOutlinedIcon from '@mui/icons-material/CancelOutlined';
import { Link } from 'react-router-dom'; import { Link } from 'react-router-dom';

import * as HttpUtils from "../../../utils/HttpUtils";
import LoopIcon from '@mui/icons-material/Loop';


// ============================|| FIREBASE - REGISTER ||============================ // // ============================|| FIREBASE - REGISTER ||============================ //


@@ -62,6 +63,10 @@ const CustomFormWizard = (props) => {
const [isLoading, setLoding] = useState(true); const [isLoading, setLoding] = useState(true);
const [updateRows, setUpdateRows] = useState([]); const [updateRows, setUpdateRows] = useState([]);


const [captcha, setCaptcha] = useState([]);
const [captchaImg, setCaptchaImage] = useState([]);


const handleClickShowPassword = () => { const handleClickShowPassword = () => {
setShowPassword(!showPassword); setShowPassword(!showPassword);
}; };
@@ -103,8 +108,23 @@ const CustomFormWizard = (props) => {


useEffect(() => { useEffect(() => {
changePassword(''); changePassword('');
onCaptchaChange();
}, []); }, []);


const onCaptchaChange = ()=>{
HttpUtils.post({
url: POST_CAPTCHA,
params:{width: 130, height: 40},
onSuccess:(responseData)=>{
localStorage.setItem("checkCode",responseData.checkCode);
localStorage.setItem("base64Url",responseData.base64Url);
setCaptcha(localStorage.getItem('checkCode'));
setCaptchaImage(localStorage.getItem('base64Url'));
}
});
}


const checkDataField = (data)=> { const checkDataField = (data)=> {
if (data.username !==""&& if (data.username !==""&&
data.password !==""&& data.password !==""&&
@@ -120,11 +140,13 @@ const CustomFormWizard = (props) => {
data.phoneCountryCode !==""&& data.phoneCountryCode !==""&&
termsAndConAccept == true&& termsAndConAccept == true&&
fileList.length!==0&& fileList.length!==0&&
data.captchaField&&
handlePassword(data.password)&& handlePassword(data.password)&&
handleEmail(data.email)&& handleEmail(data.email)&&
handleIdNo(data.idNo,selectedIdDocType.type)&& handleIdNo(data.idNo,selectedIdDocType.type)&&
handlePhone(data.phone)&& handlePhone(data.phone)&&
handleUsername(data.username)
handleUsername(data.username)&&
handleCaptcha(data.captchaField)
) )
{ {
setisValid(true) setisValid(true)
@@ -328,6 +350,10 @@ const CustomFormWizard = (props) => {
} }
} }


function handleCaptcha(captchaField) {
return captchaField == captcha;
}

function handleIdNo(idNo,selectedIdDocType) { function handleIdNo(idNo,selectedIdDocType) {
var upperCase = /[A-Z]/g; var upperCase = /[A-Z]/g;
if (!idNo.match(upperCase)&&selectedIdDocType=="HKID") { if (!idNo.match(upperCase)&&selectedIdDocType=="HKID") {
@@ -418,6 +444,7 @@ const CustomFormWizard = (props) => {
// faxCountryCode: yup.string().min(3,'請輸入3位數字'), // faxCountryCode: yup.string().min(3,'請輸入3位數字'),
phone: yup.string().min(8,'請輸入最少8位數字').required('請輸入聯絡電話'), phone: yup.string().min(8,'請輸入最少8位數字').required('請輸入聯絡電話'),
// fax: yup.string().min(8,'請輸入8位數字'), // fax: yup.string().min(8,'請輸入8位數字'),
captchaField: yup.string().required('請輸入驗證').oneOf([captcha], '請輸入有效驗證'),
}), }),
}); });


@@ -1198,6 +1225,47 @@ const CustomFormWizard = (props) => {
</Grid> </Grid>
</Grid> </Grid>
</Grid> </Grid>
<Grid item xs={12} lg={12}>
<Grid container>
<Stack direction="column">
<Typography display="inline" variant="h4" sx={{ color: 'primary.primary'}}>
驗證
<span style={{color: '#f10000'}}>*</span>
</Typography>
<Stack spacing={1} direction="row">
<Grid item xs={5} lg={5} style={{"border":"1px solid black;"}}>
<img src={captchaImg} alt=""/>
</Grid>
<Grid item xs={1} lg={1} style={{"border":"1px solid black;"}}>
<IconButton aria-label="refrashCaptcha" size="large" onClick={()=>{onCaptchaChange()}}>
<LoopIcon fontSize="inherit" />
</IconButton>
</Grid>
<Grid item xs={6} lg={6}>
<OutlinedInput
fullWidth
id="captchaField"
type="text"
value={formik.values.captchaField}
onBlur={formik.handleBlur}
error={Boolean(formik.touched.captchaField && formik.errors.captchaField)}
name="captchaField"
onChange={(event) => {
const value = event.target.value;
formik.setFieldValue("captchaField",value);
}}
sx={{width:'75%'}}
/>
</Grid>
</Stack>
{formik.touched.captchaField && formik.errors.captchaField && (
<FormHelperText error id="helper-text-captcha-signup">
{formik.errors.captchaField}
</FormHelperText>
)}
</Stack>
</Grid>
</Grid>
</Grid> </Grid>
</Grid> </Grid>
</FormGroup> </FormGroup>


Notiek ielāde…
Atcelt
Saglabāt