Meteor.user()
возвращает только объект текущего пользователя, как только пользователь вошел в систему. Поэтому вы не можете использовать свойства в currentUser
, если ни один пользователь не вошел в систему.
Поэтому ваше состояние может использовать два значения для входа в систему и проверки:
const currentUser = this.props.currentUser
this.state = {
loggedIn: currentUser,
verified: currentUser && currentUser.emails[0].verified
};
И ваш код рендеринга отобразит элемент sign-in
, если нет зарегистрированного статуса:
<ButtonToolbar className="pull-left sidebar-toolbar">
{!this.state.loggedIn && <Button>Sign in</Button>}
{ this.state.loggedIn && <Button>Sign out</Button>}
<Button bsStyle="danger">Sign up</Button>
</ButtonToolbar>
Затем вы можете использовать verified
для отображения дополнительной информации, например уведомления о том, что ваш пользователь еще не проверен, и показывать только контент для проверенных пользователей.
Примечание по безопасности: Обратите внимание, что все это просто UI-candy, и если вы действительно хотите запретить непроверенным пользователям подписываться на данные или вызывать определенные методы / обновлять данные, вы всегда должны проверять user.emails[i].verified
в методах и публикациях.