diff --git a/imports/api/users/server/publications.js b/imports/api/users/server/publications.js new file mode 100644 index 00000000..7e247b18 --- /dev/null +++ b/imports/api/users/server/publications.js @@ -0,0 +1,13 @@ +import { Meteor } from 'meteor/meteor'; + +Meteor.publish('users.info', function userInfoPublish() { + if (!this.userId) { + return this.ready(); + } + + return Meteor.users.find(this.userId, { + fields: { + name: 1, + }, + }); +}); diff --git a/imports/startup/server/accounts/on-create-user.js b/imports/startup/server/accounts/on-create-user.js new file mode 100644 index 00000000..d9bd5650 --- /dev/null +++ b/imports/startup/server/accounts/on-create-user.js @@ -0,0 +1,12 @@ +import { Accounts } from 'meteor/accounts-base'; + +Accounts.onCreateUser((options, user) => { + const profile = options.profile; + const newUser = user; + + if (profile) { + newUser.name = { first: profile.name.first, last: profile.name.last }; + } + + return newUser; +}); diff --git a/imports/startup/server/api.js b/imports/startup/server/api.js index d284bbba..212f1dba 100644 --- a/imports/startup/server/api.js +++ b/imports/startup/server/api.js @@ -1,2 +1,3 @@ import '../../api/documents/methods.js'; import '../../api/documents/server/publications.js'; +import '../../api/users/server/publications.js'; diff --git a/imports/startup/server/index.js b/imports/startup/server/index.js index 800e1e63..b6217ebd 100644 --- a/imports/startup/server/index.js +++ b/imports/startup/server/index.js @@ -1,4 +1,5 @@ import './accounts/email-templates'; +import './accounts/on-create-user'; import './browser-policy'; import './fixtures'; import './api'; diff --git a/imports/ui/components/AppNavigation.js b/imports/ui/components/AppNavigation.js index 26f25f50..47260ad4 100644 --- a/imports/ui/components/AppNavigation.js +++ b/imports/ui/components/AppNavigation.js @@ -28,5 +28,8 @@ AppNavigation.propTypes = { }; export default container((props, onData) => { - onData(null, { hasUser: Meteor.user() }); + const subscription = Meteor.subscribe('users.info'); + if (subscription.ready()) { + onData(null, { hasUser: Meteor.user() }); + } }, AppNavigation); diff --git a/imports/ui/components/AuthenticatedNavigation.js b/imports/ui/components/AuthenticatedNavigation.js index 87a0c38a..35dde57b 100644 --- a/imports/ui/components/AuthenticatedNavigation.js +++ b/imports/ui/components/AuthenticatedNavigation.js @@ -8,7 +8,7 @@ const handleLogout = () => Meteor.logout(() => browserHistory.push('/login')); const userName = () => { const user = Meteor.user(); - const name = user && user.profile ? user.profile.name : ''; + const name = user ? user.name : ''; return user ? `${name.first} ${name.last}` : ''; };