@@ -21,7 +21,7 @@ import { notifyActionError } from 'utils/CommonFunction'; | |||
const CustomFormWizard = Loadable(lazy(() => import('./auth-forms/BusCustomFormWizard'))); | |||
const AuthWrapper = Loadable(lazy(() => import('./AuthWrapperCustom'))); | |||
import axios from "axios"; | |||
import { GET_USERNAME } from "utils/ApiPathConst"; | |||
import { GET_USERNAME, POST_VERIFY_CAPTCHA } from "utils/ApiPathConst"; | |||
// import CustomFormWizard from './auth-forms/BusCustomFormWizard'; | |||
// import AuthWrapper from './AuthWrapperCustom'; | |||
@@ -57,6 +57,8 @@ const BusRegister = () => { | |||
const [completed, setCompleted] = useState([false]); | |||
const [updateValid, setUpdateValid] = useState(false); | |||
const [username, setUsername] = useState("") | |||
const [base64Url, setBase64Url] = useState("") | |||
const [checkCode, setCheckCode] = useState("") | |||
const totalSteps = () => { | |||
return steps.length; | |||
@@ -83,7 +85,21 @@ const BusRegister = () => { | |||
return Number(response.data[0]) === 1 | |||
} | |||
const handleCaptcha = async () => { | |||
const response = await axios.post(`${POST_VERIFY_CAPTCHA}`, { | |||
captcha: base64Url, | |||
checkCode: checkCode, | |||
}) | |||
return Boolean(response.data["success"]); | |||
} | |||
const handleNext = async () => { | |||
const captchaTest = await handleCaptcha(); | |||
if (!captchaTest) { | |||
notifyActionError("請輸入有效驗證") | |||
return; | |||
} | |||
const test = await handleCheckUsername() | |||
if (test) { | |||
notifyActionError("此用戶登入名稱已被注冊,請使用其他用戶登入名稱") | |||
@@ -151,7 +167,13 @@ const BusRegister = () => { | |||
) : ( | |||
<React.Fragment> | |||
<AuthWrapper> | |||
<CustomFormWizard setUpdateValid={setUpdateValid} step={activeStep} setUsername={setUsername} /> | |||
<CustomFormWizard | |||
setUpdateValid={setUpdateValid} | |||
step={activeStep} | |||
setUsername={setUsername} | |||
setBase64Url={setBase64Url} | |||
setCheckCode={setCheckCode} | |||
/> | |||
{/* <CustomFormWizard step={activeStep} /> */} | |||
</AuthWrapper> | |||
<Stack direction="row" sx={{ pb: 2 }}> | |||
@@ -15,7 +15,7 @@ import { | |||
Button, | |||
} from '@mui/material'; | |||
import VisibilityIcon from '@mui/icons-material/Visibility'; | |||
import { GET_ID } from "utils/ApiPathConst"; | |||
import { GET_ID, POST_VERIFY_CAPTCHA } from "utils/ApiPathConst"; | |||
// project import | |||
import Loadable from 'components/Loadable'; | |||
@@ -82,11 +82,24 @@ const Register = () => { | |||
return Number(response.data[0]) === 1 | |||
} | |||
const handleCaptcha = async () => { | |||
const response = await axios.post(`${POST_VERIFY_CAPTCHA}`, { | |||
captcha: base64Url, | |||
checkCode: checkCode, | |||
}) | |||
return Boolean(response.data["success"]); | |||
} | |||
const handleNext = async () => { | |||
if(!idNo){ | |||
if (!idNo) { | |||
notifyActionError("資料,請返回注冊頁面。") | |||
return; | |||
} | |||
const captchaTest = await handleCaptcha(); | |||
if (!captchaTest) { | |||
notifyActionError("請輸入有效驗證") | |||
return; | |||
} | |||
const test = await handleCheckID() | |||
if (test) { | |||
notifyActionError("此用戶已注冊,請返回登入頁面並進行登入流程。") | |||
@@ -154,7 +167,13 @@ const Register = () => { | |||
) : ( | |||
<React.Fragment> | |||
<AuthWrapper> | |||
<CustomFormWizard setUpdateValid={setUpdateValid} step={activeStep} setIdNo={setIdNo}/> | |||
<CustomFormWizard | |||
setUpdateValid={setUpdateValid} | |||
step={activeStep} | |||
setIdNo={setIdNo} | |||
setBase64Url={setBase64Url} | |||
setCheckCode={setCheckCode} | |||
/> | |||
{/* <CustomFormWizard step={activeStep} /> */} | |||
</AuthWrapper> | |||
<Stack direction="row" sx={{ pb: 2 }}> | |||
@@ -15,7 +15,7 @@ import { | |||
Button, | |||
} from '@mui/material'; | |||
import VisibilityIcon from '@mui/icons-material/Visibility'; | |||
import { GET_USERNAME } from "utils/ApiPathConst"; | |||
import { GET_USERNAME, POST_VERIFY_CAPTCHA } from "utils/ApiPathConst"; | |||
// project import | |||
import Loadable from 'components/Loadable'; | |||
@@ -56,6 +56,8 @@ const Register = () => { | |||
const [completed, setCompleted] = useState([false]); | |||
const [updateValid, setUpdateValid] = useState(false); | |||
const [username, setUsername] = useState(""); | |||
const [base64Url, setBase64Url] = useState("") | |||
const [checkCode, setCheckCode] = useState("") | |||
const totalSteps = () => { | |||
return steps.length; | |||
@@ -82,7 +84,23 @@ const Register = () => { | |||
return Number(response.data[0]) === 1 | |||
} | |||
const handleCaptcha = async () => { | |||
const response = await axios.post(`${POST_VERIFY_CAPTCHA}`, { | |||
captcha: base64Url, | |||
checkCode: checkCode, | |||
}) | |||
return Boolean(response.data["success"]); | |||
} | |||
const handleNext = async () => { | |||
const captchaTest = await handleCaptcha(); | |||
if (!captchaTest) { | |||
notifyActionError("請輸入有效驗證") | |||
return; | |||
} | |||
const test = await handleCheckUsername() | |||
if (test) { | |||
notifyActionError("此用戶登入名稱已被注冊,請使用其他用戶登入名稱") | |||
@@ -150,7 +168,13 @@ const Register = () => { | |||
) : ( | |||
<React.Fragment> | |||
<AuthWrapper> | |||
<CustomFormWizard setUpdateValid={setUpdateValid} step={activeStep} setUsername={setUsername}/> | |||
<CustomFormWizard | |||
setUpdateValid={setUpdateValid} | |||
step={activeStep} | |||
setUsername={setUsername} | |||
setBase64Url={setBase64Url} | |||
setCheckCode={setCheckCode} | |||
/> | |||
{/* <CustomFormWizard step={activeStep} /> */} | |||
</AuthWrapper> | |||
<Stack direction="row" sx={{ pb: 2 }}> | |||
@@ -25,7 +25,7 @@ const RegisterCustom = () => { | |||
} | |||
const getQRWithIAmSmart = () => { | |||
let callbackUrl = "https://"+iAmSmartCallbackPath()+"/iamsmart/authcallback"; | |||
let callbackUrl = "https://"+iAmSmartCallbackPath()+"/iamsmart/registrycallback"; | |||
let url = iAmSmartPath + "/api/v1/auth/getQR" | |||
+ "?clientID=" + clientId | |||
+ "&responseType=code" | |||
@@ -67,8 +67,7 @@ const BusCustomFormWizard = (props) => { | |||
const [updateRows, setUpdateRows] = useState([]); | |||
// const [userNameList, setUserNameList] = useState([]); | |||
const [captcha, setCaptcha] = useState([]); | |||
const [captchaImg, setCaptchaImage] = useState([]); | |||
const [captchaImg, setCaptchaImage] = useState(""); | |||
const handleClickShowPassword = () => { | |||
setShowPassword(!showPassword); | |||
@@ -113,26 +112,6 @@ const BusCustomFormWizard = (props) => { | |||
useEffect(() => { | |||
changePassword(''); | |||
// if (localStorage.getItem('checkCode') != null){ | |||
// setCaptcha(localStorage.getItem('checkCode')); | |||
// setCaptchaImage(localStorage.getItem('base64Url')); | |||
// localStorage.setItem("checkCode",null); | |||
// localStorage.setItem("base64Url",null); | |||
// }else{ | |||
// onCaptchaChange(); | |||
// // } | |||
// axios.get(`${GET_USERNAME}`) | |||
// .then((response) => { | |||
// if (response.status === 200) { | |||
// setUserNameList(response.data); | |||
// } | |||
// }) | |||
// .catch(error => { | |||
// console.log(error); | |||
// return false; | |||
// }); | |||
}, []); | |||
const handleCheckUsername = async () => { | |||
@@ -192,11 +171,10 @@ const BusCustomFormWizard = (props) => { | |||
const onCaptchaChange = () => { | |||
HttpUtils.post({ | |||
url: POST_CAPTCHA, | |||
params: { width: 130, height: 40 }, | |||
params: { width: 130, height: 40, captcha: captchaImg}, | |||
onSuccess: (responseData) => { | |||
localStorage.setItem("checkCode", responseData.checkCode); | |||
props.setBase64Url(responseData.base64Url) | |||
localStorage.setItem("base64Url", responseData.base64Url); | |||
setCaptcha(localStorage.getItem('checkCode')); | |||
setCaptchaImage(localStorage.getItem('base64Url')); | |||
} | |||
}); | |||
@@ -335,6 +313,7 @@ const BusCustomFormWizard = (props) => { | |||
useEffect(() => { | |||
props.step == 2 ? _onSubmit() : null; | |||
if(captchaImg=="") | |||
onCaptchaChange(); | |||
checkDataField(values) | |||
}, [props.step]) | |||
@@ -447,7 +426,7 @@ const BusCustomFormWizard = (props) => { | |||
} | |||
function handleCaptcha(captchaField) { | |||
return captchaField == captcha; | |||
return captchaField; | |||
} | |||
function handlePassword(password) { | |||
@@ -554,7 +533,7 @@ const BusCustomFormWizard = (props) => { | |||
} | |||
} | |||
}), | |||
captchaField: yup.string().required(displayErrorMsg('請輸入驗證')).oneOf([captcha], displayErrorMsg('請輸入有效驗證')), | |||
captchaField: yup.string().required(displayErrorMsg('請輸入驗證')),//.oneOf([captcha], displayErrorMsg('請輸入有效驗證')) | |||
}, ['enCompanyName', 'chCompanyName']), | |||
}); | |||
@@ -1397,6 +1376,7 @@ const BusCustomFormWizard = (props) => { | |||
name="captchaField" | |||
onChange={(event) => { | |||
const value = event.target.value; | |||
props.setCheckCode(event.target.value); | |||
formik.setFieldValue("captchaField", value); | |||
}} | |||
sx={{ width: '75%' }} | |||
@@ -64,9 +64,7 @@ const CustomFormWizard = (props) => { | |||
const [checkUpload, setCheckUpload] = useState(false); | |||
const [isLoading, setLoding] = useState(true); | |||
const [updateRows, setUpdateRows] = useState([]); | |||
const [captcha, setCaptcha] = useState([]); | |||
const [captchaImg, setCaptchaImage] = useState([]); | |||
const [captchaImg, setCaptchaImage] = useState(""); | |||
const handleClickShowPassword = () => { | |||
setShowPassword(!showPassword); | |||
@@ -115,7 +113,8 @@ const CustomFormWizard = (props) => { | |||
useEffect(() => { | |||
changePassword(''); | |||
onCaptchaChange(); | |||
if(captchaImg=="") | |||
onCaptchaChange(); | |||
}, []); | |||
const handleCheckUsername = async () => { | |||
@@ -175,11 +174,10 @@ const CustomFormWizard = (props) => { | |||
const onCaptchaChange = () => { | |||
HttpUtils.post({ | |||
url: POST_CAPTCHA, | |||
params: { width: 130, height: 40 }, | |||
params: { width: 130, height: 40, captcha: captchaImg}, | |||
onSuccess: (responseData) => { | |||
localStorage.setItem("checkCode", responseData.checkCode); | |||
props.setBase64Url(responseData.base64Url) | |||
localStorage.setItem("base64Url", responseData.base64Url); | |||
setCaptcha(localStorage.getItem('checkCode')); | |||
setCaptchaImage(localStorage.getItem('base64Url')); | |||
} | |||
}); | |||
@@ -305,7 +303,8 @@ const CustomFormWizard = (props) => { | |||
useEffect(() => { | |||
props.step == 2 ? _onSubmit() : null; | |||
onCaptchaChange(); | |||
if(captchaImg=="") | |||
onCaptchaChange(); | |||
checkDataField(values) | |||
}, [props.step]) | |||
@@ -422,7 +421,7 @@ const CustomFormWizard = (props) => { | |||
} | |||
function handleCaptcha(captchaField) { | |||
return captchaField == captcha; | |||
return captchaField; | |||
} | |||
function handleIdNo(idNo, selectedIdDocType, checkDigit) { | |||
@@ -629,7 +628,7 @@ const CustomFormWizard = (props) => { | |||
// faxCountryCode: yup.string().min(3,'請輸入3位數字'), | |||
phone: yup.string().min(8, displayErrorMsg('請輸入最少8位數字')).required(displayErrorMsg('請輸入聯絡電話')), | |||
// fax: yup.string().min(8,'請輸入8位數字'), | |||
captchaField: yup.string().required(displayErrorMsg('請輸入驗證')).oneOf([captcha], displayErrorMsg('請輸入有效驗證')), | |||
captchaField: yup.string().required(displayErrorMsg('請輸入驗證')),//.oneOf([captcha], displayErrorMsg('請輸入有效驗證')), | |||
}), | |||
}); | |||
@@ -1539,6 +1538,7 @@ const CustomFormWizard = (props) => { | |||
name="captchaField" | |||
onChange={(event) => { | |||
const value = event.target.value; | |||
props.setCheckCode(event.target.value); | |||
formik.setFieldValue("captchaField", value); | |||
}} | |||
sx={{ width: '75%' }} | |||
@@ -50,7 +50,6 @@ const CustomFormWizard = (props) => { | |||
const [checkUpload, setCheckUpload] = useState(false); | |||
const [isLoading, setLoding] = useState(true); | |||
const [captcha, setCaptcha] = useState([]); | |||
const [captchaImg, setCaptchaImage] = useState([]); | |||
const [selectedAddress4, setSelectedAddress4] = useState(null); | |||
@@ -77,6 +76,7 @@ const CustomFormWizard = (props) => { | |||
useEffect(() => { | |||
location.state?.responseData ?? {} | |||
if(captchaImg=="") | |||
onCaptchaChange(); | |||
responseToData(); | |||
}, []); | |||
@@ -193,16 +193,16 @@ const CustomFormWizard = (props) => { | |||
const onCaptchaChange = () => { | |||
HttpUtils.post({ | |||
url: POST_CAPTCHA, | |||
params: { width: 130, height: 40 }, | |||
params: { width: 130, height: 40, captcha: captchaImg}, | |||
onSuccess: (responseData) => { | |||
localStorage.setItem("checkCode", responseData.checkCode); | |||
props.setBase64Url(responseData.base64Url) | |||
localStorage.setItem("base64Url", responseData.base64Url); | |||
setCaptcha(localStorage.getItem('checkCode')); | |||
setCaptchaImage(localStorage.getItem('base64Url')); | |||
} | |||
}); | |||
} | |||
const checkDataField = (data) => { | |||
if (data.address1 !== "" && | |||
data.email !== "" && | |||
@@ -248,6 +248,7 @@ const CustomFormWizard = (props) => { | |||
useEffect(() => { | |||
props.step == 2 ? _onSubmit() : null; | |||
if(captchaImg=="") | |||
onCaptchaChange(); | |||
checkDataField(values) | |||
}, [props.step]) | |||
@@ -329,7 +330,7 @@ const CustomFormWizard = (props) => { | |||
} | |||
function handleCaptcha(captchaField) { | |||
return captchaField == captcha; | |||
return captchaField; | |||
} | |||
function handleEmail(email) { | |||
@@ -367,7 +368,7 @@ const CustomFormWizard = (props) => { | |||
emailConfirm: yup.string().email(displayErrorMsg('請輸入電郵格式')).max(255).required(displayErrorMsg('請輸入電郵')).oneOf([yup.ref('email'), null], displayErrorMsg('請輸入相同電郵')), | |||
phoneCountryCode: yup.string().min(2, displayErrorMsg('請輸入最少2位數字')).required(displayErrorMsg('請輸入國際區號')), | |||
phone: yup.string().min(8, displayErrorMsg('請輸入最少8位數字')).required(displayErrorMsg('請輸入聯絡電話')), | |||
captchaField: yup.string().required(displayErrorMsg('請輸入驗證')).oneOf([captcha], displayErrorMsg('請輸入有效驗證')), | |||
captchaField: yup.string().required(displayErrorMsg('請輸入驗證')),//.oneOf([captcha], displayErrorMsg('請輸入有效驗證')), | |||
}), | |||
}); | |||
@@ -851,6 +852,7 @@ const CustomFormWizard = (props) => { | |||
name="captchaField" | |||
onChange={(event) => { | |||
const value = event.target.value; | |||
props.setCheckCode(event.target.value); | |||
formik.setFieldValue("captchaField", value); | |||
}} | |||
sx={{ width: '75%' }} | |||
@@ -40,6 +40,7 @@ export const GET_FILE_DELETE = apiPath+'/file/delete'; | |||
//Login | |||
export const POST_LOGIN = '/login'; | |||
export const POST_CAPTCHA = apiPath+'/captcha'; | |||
export const POST_VERIFY_CAPTCHA = apiPath+'/verifyCaptcha'; | |||
//register | |||
export const POST_PUBLIC_USER_REGISTER = apiPath+'/user/register'; | |||
@@ -106,5 +107,5 @@ export const POST_EMAIL_SAVE = apiPath+'/email/save'; | |||
export const DELETE_EMAIL = apiPath+'/email/delete'; | |||
//iAmSmart | |||
export const GET_SMART_PROFILE = apiPath+'smart/getProfile'; //POST | |||
export const GET_SMART_LOGIN = apiPath+'smart/login'; //POST | |||
export const GET_SMART_PROFILE = apiPath+'/smart/getProfile'; //POST | |||
export const GET_SMART_LOGIN = apiPath+'/smart/login'; //POST |