in ark-demo/webapp/src/components/common/Header.js [244:317]
function UserMenu() {
const { logout, user } = useAuth0();
const [anchorEl, setAnchorEl] = useState(null);
const classes = useStylesUserMenu();
// User is NOT logged in, so display nothing
if (!user) {
return null;
}
// At this point, there is an oauthApp and the user has logged in (forceOAuthLogin mode).
const open = Boolean(anchorEl);
const handleMenu = (event) => {
if (!anchorEl) {
setAnchorEl(event.currentTarget);
} else {
setAnchorEl(null);
}
};
const handleClose = () => {
setAnchorEl(null);
};
const handleLogout = () => {
logout({ returnTo: window.location.origin });
handleClose();
};
// Display User menu, with name, avatar + an attached menu for user-related options
return (
<>
<Link
edge='end'
aria-label='account of current user'
aria-controls='menu-login'
aria-haspopup='true'
onClick={handleMenu}
color='inherit'
>
<Grid container alignItems='center' item wrap='nowrap'>
<Hidden smDown>
<Typography variant='caption' color='inherit' noWrap>
{user.email}
</Typography>
</Hidden>
<Avatar className={classes.avatar} src={user.picture} />
</Grid>
</Link>
<Menu
id='menu-login'
anchorEl={anchorEl}
getContentAnchorEl={null}
anchorOrigin={{
vertical: 'bottom',
horizontal: 'right',
}}
keepMounted
transformOrigin={{
vertical: 'top',
horizontal: 'right',
}}
open={open}
onClose={handleClose}
>
<MenuItem onClick={handleLogout}>Logout</MenuItem>
<MenuItem>
<Link href='https://app.carto.com'>Go to CARTO</Link>
</MenuItem>
</Menu>
</>
);
}