import React from "react"; import { Auth } from "aws-amplify"; import { Route, Redirect } from "react-router-dom"; interface Props { component: React.FC; } const AdminRoute: React.FC = ({ component }) => { const [isAdmin, setAdmin ] = React.useState(true); React.useEffect(() => { (async () => { try { await Auth.currentAuthenticatedUser(). then( user=> { if (!user) { setAdmin(false); } if (user.signInUserSession.accessToken.payload["cognito:groups"] === null) { setAdmin(false); } else if (user.signInUserSession.accessToken.payload["cognito:groups"][0] === "admin") { setAdmin(true); } } ); } catch (e) { alert(e.message); setAdmin(false); } })(); }); return ( isAdmin ? ( React.createElement(component) ) : ( ) } /> ); }; export default AdminRoute;