Jason Chuang 1 年之前
父節點
當前提交
4ac2c96127
共有 5 個檔案被更改,包括 116 行新增32 行删除
  1. +1
    -1
      src/pages/Proof/Search_Public/DataGrid.js
  2. +74
    -0
      src/pages/authentication/Verify.js
  3. +35
    -31
      src/pages/authentication/auth-forms/PasswordAlertDialog.js
  4. +5
    -0
      src/routes/LoginRoutes.js
  5. +1
    -0
      src/utils/ApiPathConst.js

+ 1
- 1
src/pages/Proof/Search_Public/DataGrid.js 查看文件

@@ -144,7 +144,7 @@ export default function SearchPublicNoticeTable({ recordList }) {
columns={columns}
initialState={{
pagination: {
paginationModel: { page: 0, pageSize: 5 },
paginationModel: { page: 0, pageSize: 10 },
},
}}
getRowHeight={()=>"auto"}


+ 74
- 0
src/pages/authentication/Verify.js 查看文件

@@ -0,0 +1,74 @@
// material-ui
import { Button, Grid } from '@mui/material';
import { Link } from 'react-router-dom';
import Typography from '@mui/material/Typography';
// import iAmSmartICon from 'assets/images/icons/icon_iAmSmart.png';
// import banner from 'assets/images/bg_ml.jpg';
import { Stack } from '../../../node_modules/@mui/material/index';
import { useEffect, useState } from 'react';
import { useParams } from 'react-router-dom';
import axios from 'axios';
import { GET_VERIFY_USER_ACCOUNT } from 'utils/ApiPathConst';
import Loadable from 'components/Loadable';
import { lazy } from 'react';

const LoadingComponent = Loadable(lazy(() => import('../extra-pages/LoadingComponent')));
const AuthWrapper = Loadable(lazy(() => import('./AuthWrapperCustom')));
import CheckCircleOutlineIcon from '@mui/icons-material/CheckCircleOutline';
import CancelOutlinedIcon from '@mui/icons-material/CancelOutlined';

export default function Verify() {

const [isLoading, setIsLoading] = useState(true)
const [verifyState, setVerifyState] = useState(null)

const params = useParams()
const handleVerify = async () => {
const response = await axios.get(GET_VERIFY_USER_ACCOUNT, {
params: {
email: decodeURIComponent(params.email),
emailVerifyHash: decodeURIComponent(params.verifyCode)
}
})
if (response.status === 200 && response.data) {
setVerifyState(true)
} else {
setVerifyState(false)
}
setIsLoading(false)
}

let enterUseEffect = false
useEffect(() => {
if (enterUseEffect) handleVerify()
enterUseEffect = true
}, [])

return (
<Stack sx={{ width: '100%', fontSize: '2rem', paddingTop: '65px' }} alignItems="center">
<AuthWrapper>
{isLoading || verifyState == null ?
<LoadingComponent /> :
<Grid item xs={12}>
{verifyState ?
// SUCCESS page
<Stack mt={1} direction="column" justifyContent="flex-start" alignItems="center" spacing={2}>
<CheckCircleOutlineIcon color="success" sx={{ width: "200px", height: "200px" }} />
<Typography display="inline" variant="h4">帳戶已成功驗證。</Typography>
<Button variant="outlined" component={Link} to="/login" sx={{ fontSize: 20, height: '60px' }}><Typography variant="h5">返回登入頁面</Typography></Button>
</Stack>
:
// ERROR page
<Stack mt={1} direction="column" justifyContent="flex-start" alignItems="center" spacing={2}>
{/* <Button disabled={true} hidden={true} variant="contained" type="submit" sx={{ fontSize: 12,height:'25px'}}>Submit</Button> */}
<CancelOutlinedIcon color="error" sx={{ width: "200px", height: "200px" }} />
<Typography display="inline" variant="h4">驗證失敗,請聯絡相關的系統管理員協助。</Typography>
<Button color="error" variant="outlined" component={Link} to="/login" sx={{ fontSize: 20, height: '60px' }}><Typography variant="h5">返回登入頁面</Typography></Button>
</Stack>
}
</Grid>
}
</AuthWrapper>
</Stack>
)
}

+ 35
- 31
src/pages/authentication/auth-forms/PasswordAlertDialog.js 查看文件

@@ -19,41 +19,45 @@ import CancelOutlinedIcon from '@mui/icons-material/CancelOutlined';

const PasswordAlertDialog = (props) => {
return (
<Dialog
<Dialog
open={props.open}
onClose={props.handleClose}
aria-labelledby="alert-dialog-title"
aria-describedby="alert-dialog-description"
>
<DialogTitle id="alert-dialog-title">
<Stack mt={1} mr={4} direction="row" justifyContent="flex-start" alignItems="center" spacing={2}>
<CancelOutlinedIcon color="error" sx={{width:"35px",height:"40px"}}/>
{props.errorMassage==='ACCOUNT_LOCKED_ERROR'?
<Stack direction="column">
<Typography display="inline">
帳戶將被封鎖
</Typography>
<Typography display="inline">
帳戶連續五次登入錯誤,請與系統管理員聯絡
</Typography>
</Stack>:
<Typography display="inline">
用戶名或密碼錯誤
</Typography>
}
</Stack>
</DialogTitle>
<DialogContent>
<DialogContentText id="alert-dialog-description">
{""}
</DialogContentText>
</DialogContent>
<DialogActions>
<Button variant="contained" color="error" onClick={props.handleClose} autoFocus>
關閉
</Button>
</DialogActions>
</Dialog>
>
<DialogTitle id="alert-dialog-title">
<Stack mt={1} mr={4} direction="row" justifyContent="flex-start" alignItems="center" spacing={2}>
<CancelOutlinedIcon color="error" sx={{ width: "35px", height: "40px" }} />
{props.errorMassage === 'ACCOUNT_LOCKED_ERROR' ?
<Stack direction="column">
<Typography display="inline">
帳戶將被封鎖
</Typography>
<Typography display="inline">
帳戶連續五次登入錯誤,請與系統管理員聯絡
</Typography>
</Stack> :
props.errorMassage === 'ACCOUNT_VERIFIED_ERROR' ?
<Typography display="inline">
帳戶尚未驗證
</Typography> :
<Typography display="inline">
用戶名或密碼錯誤
</Typography>
}
</Stack>
</DialogTitle>
<DialogContent>
<DialogContentText id="alert-dialog-description">
{""}
</DialogContentText>
</DialogContent>
<DialogActions>
<Button variant="contained" color="error" onClick={props.handleClose} autoFocus>
關閉
</Button>
</DialogActions>
</Dialog>
);
};



+ 5
- 0
src/routes/LoginRoutes.js 查看文件

@@ -12,6 +12,7 @@ const RegisterForm = Loadable(lazy(() => import('pages/authentication/Register')
const BusRegisterForm = Loadable(lazy(() => import('pages/authentication/BusRegister')));
const ErrorPage = Loadable(lazy(() => import('pages/extra-pages/ErrorPage')));
const TestMailPage = Loadable(lazy(() => import('pages/pnspsNotifyTest')));
const VerifyPage = Loadable(lazy(() => import('pages/authentication/Verify')));

// ==============================|| AUTH ROUTING ||============================== //

@@ -42,6 +43,10 @@ const LoginRoutes = {
{
path: 'testMailPage',
element: <TestMailPage/>
},
{
path: 'verify/:verifyCode/:email',
element: <VerifyPage/>
}
]
};


+ 1
- 0
src/utils/ApiPathConst.js 查看文件

@@ -45,6 +45,7 @@ export const POST_CAPTCHA = apiPath+'/captcha';
export const POST_PUBLIC_USER_REGISTER = apiPath+'/user/register';
export const GET_USERNAME = apiPath+'/user/username';
export const GET_USER_EMAIL = apiPath+'/user/email';
export const GET_VERIFY_USER_ACCOUNT = apiPath+'/user/verifyEmail';

//Public
export const GET_PUBLIC_ORG_USER_LIST = apiPath+'/user/listOrg';


Loading…
取消
儲存