1. При успешной авторизации передавайте на клиент токен.
2. Храните токен в cookie. Проверяйте его наличие при инициализации и либо отрисовывайте вариант для залогиненного пользователя, предварительно скачав его данные, либо для гостя.
3. Располагая такими данными как id пользователя, вы с легкостью можете отличать стоит ли вам показывать кнопку edit в профиле или нет:
const { me, user } = this.props;
const isOwner = me.id === user.id;
return (
<>
{isOwner && <Button onClick={this.handleEditClick}>Edit</Button>}
{/* other jsx */}
</>
);
где
me - текущий залогиненный пользователь,
user - пользователь чей профиль загружен.
4. Само собой, все права надо проверять на стороне сервера. Для этого токен следует посылать в заголовках запросов.
Есть какой-то материал для осознания, как реализовать полноценный логин
Материала в интернете по теме море, только откройте Google и сделайте нужный запрос. Статей и руководств, которые содержат в себе все без исключения кейсы естественно нет, поэтому изучайте разные источники.