auth.js
1003 Bytes
import React, {useEffect} from 'react';
import Axios from 'axios';
import { useNavigate } from 'react-router-dom';
export default function (SpecificComponent, option, adminRoute = null) {
// option
// null -> 아무나 출입, true -> 로그인한 유저만 출입, false -> 로그인한 유저는 출입 불가능
function AuthenticationCheck() {
let navigate = useNavigate();
useEffect(() => {
Axios.get('/api/auth')
.then((res)=>{
if(res.status === 200 && adminRoute){
navigate('/main')
}
else{
if(option === false){
navigate('/main')
}
}
}).catch((error) => {
if(option){
navigate('/login')
}
})
}, [])
return (
<SpecificComponent/>
)
}
return <AuthenticationCheck />
}