import { useAuth0 } from "@auth0/auth0-react"; function useCurrentUser() { const { isLoading, isAuthenticated, user } = useAuth0(); // In development, you can start the server with // `IMPRESS_LOG_IN_AS=12345 vc dev` to simulate logging in as user 12345. // // This flag shouldn't be present in prod anyway, but the dev check is an // extra safety precaution! // // NOTE: In package.json, we forward the flag to REACT_APP_IMPRESS_LOG_IN_AS, // because create-react-app only forwards flags with that prefix. if ( process.env["NODE_ENV"] === "development" && process.env["REACT_APP_IMPRESS_LOG_IN_AS"] ) { const id = process.env["REACT_APP_IMPRESS_LOG_IN_AS"]; return { isLoading: false, isLoggedIn: true, id, username: `<Simulated User ${id}>`, }; } if (isLoading || !isAuthenticated) { return { isLoading, isLoggedIn: false, id: null, username: null }; } // NOTE: Users created correctly should have these attributes... but I'm // coding defensively, because third-party integrations are always a // bit of a thing, and I don't want failures to crash us! const id = user.sub?.match(/^auth0\|impress-([0-9]+)$/)?.[1]; const username = user["https://oauth.impress-2020.openneo.net/username"]; return { isLoading, isLoggedIn: true, id, username }; } export default useCurrentUser;