From d94e2ab0b1772476d86f1e21a3ab3191808a6b3b Mon Sep 17 00:00:00 2001 From: GreatFallz Date: Sat, 15 Apr 2017 08:24:30 +1000 Subject: [PATCH 01/10] Create publications.js --- imports/api/users/server/publications.js | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 imports/api/users/server/publications.js diff --git a/imports/api/users/server/publications.js b/imports/api/users/server/publications.js new file mode 100644 index 00000000..3ffe2e06 --- /dev/null +++ b/imports/api/users/server/publications.js @@ -0,0 +1,7 @@ +import { Meteor } from 'meteor/meteor'; + +Meteor.publish('users.info', () => Meteor.users.find({}, { + fields: { + name: 1, + }, +})); From e46d66a49136595b9e8b8630d33a0097303f3df9 Mon Sep 17 00:00:00 2001 From: GreatFallz Date: Sat, 15 Apr 2017 08:33:19 +1000 Subject: [PATCH 02/10] Update publications.js Add this.UserId context. --- imports/api/users/server/publications.js | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/imports/api/users/server/publications.js b/imports/api/users/server/publications.js index 3ffe2e06..295e549f 100644 --- a/imports/api/users/server/publications.js +++ b/imports/api/users/server/publications.js @@ -1,7 +1,13 @@ import { Meteor } from 'meteor/meteor'; -Meteor.publish('users.info', () => Meteor.users.find({}, { - fields: { - name: 1, - }, -})); +Meteor.publish('users.info', function userInfoPublish() { + if (!this.userId) { + return this.ready(); + } + + return Meteor.users.find({}, { + fields: { + name: 1, + }, + }); +}); From 0ada82f93573eb8d4c2ede3f25ade0a7dbfce449 Mon Sep 17 00:00:00 2001 From: GreatFallz Date: Sat, 15 Apr 2017 08:34:21 +1000 Subject: [PATCH 03/10] Add users publication --- imports/startup/server/api.js | 1 + 1 file changed, 1 insertion(+) 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'; From 1d3da460d3d998c138bd64d493d4c500ce053086 Mon Sep 17 00:00:00 2001 From: GreatFallz Date: Sat, 15 Apr 2017 08:35:40 +1000 Subject: [PATCH 04/10] Use top level field instead of profile for name --- imports/startup/server/accounts/on-create-user.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 imports/startup/server/accounts/on-create-user.js 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; +}); From e12280406beaf2318038025cfbcfd47dcc640005 Mon Sep 17 00:00:00 2001 From: GreatFallz Date: Sat, 15 Apr 2017 08:36:06 +1000 Subject: [PATCH 05/10] Add on-create-user --- imports/startup/server/index.js | 1 + 1 file changed, 1 insertion(+) 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'; From 972bd67cfb1046b001835a5fa404991407e83c1f Mon Sep 17 00:00:00 2001 From: GreatFallz Date: Sat, 15 Apr 2017 08:37:08 +1000 Subject: [PATCH 06/10] Update to subscribe to top level field instead --- imports/ui/containers/AppNavigation.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/imports/ui/containers/AppNavigation.js b/imports/ui/containers/AppNavigation.js index 65f743d9..9c38089e 100644 --- a/imports/ui/containers/AppNavigation.js +++ b/imports/ui/containers/AppNavigation.js @@ -1,7 +1,13 @@ import { composeWithTracker } from 'react-komposer'; import { Meteor } from 'meteor/meteor'; import AppNavigation from '../components/AppNavigation.js'; +import Loading from '../components/Loading.js'; -const composer = (props, onData) => onData(null, { hasUser: Meteor.user() }); +const composer = (params, onData) => { + const subscription = Meteor.subscribe('users.info'); + if (subscription.ready()) { + onData(null, { hasUser: Meteor.user() }); + } +}; -export default composeWithTracker(composer, {}, {}, { pure: false })(AppNavigation); +export default composeWithTracker(composer, Loading, {}, { pure: false })(AppNavigation); From c6164992d7eb2d221e6d07bcb4f2979f900e855f Mon Sep 17 00:00:00 2001 From: GreatFallz Date: Sat, 15 Apr 2017 08:37:44 +1000 Subject: [PATCH 07/10] Update to subscribe to top level field instead --- imports/ui/components/AuthenticatedNavigation.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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}` : ''; }; From 95ed71958833341edd2cf695780d385ab3555a32 Mon Sep 17 00:00:00 2001 From: GreatFallz Date: Sat, 15 Apr 2017 08:52:20 +1000 Subject: [PATCH 08/10] Securing publication --- imports/api/users/server/publications.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/imports/api/users/server/publications.js b/imports/api/users/server/publications.js index 295e549f..7e247b18 100644 --- a/imports/api/users/server/publications.js +++ b/imports/api/users/server/publications.js @@ -5,7 +5,7 @@ Meteor.publish('users.info', function userInfoPublish() { return this.ready(); } - return Meteor.users.find({}, { + return Meteor.users.find(this.userId, { fields: { name: 1, }, From 9838d6af3da860c3f000c01511054a2a7d111371 Mon Sep 17 00:00:00 2001 From: GreatFallz Date: Thu, 20 Apr 2017 18:31:43 +1000 Subject: [PATCH 09/10] Update AppNavigation.js --- imports/ui/components/AppNavigation.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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); From f75794cc1e86f138cbddfe75806280b9fc764f31 Mon Sep 17 00:00:00 2001 From: GreatFallz Date: Thu, 20 Apr 2017 20:27:30 +1000 Subject: [PATCH 10/10] Update .gitignore --- .gitignore | 2 -- 1 file changed, 2 deletions(-) diff --git a/.gitignore b/.gitignore index 97bc85e1..e9964c3c 100644 --- a/.gitignore +++ b/.gitignore @@ -3,5 +3,3 @@ settings-production.json npm-debug.log node_modules - -imports/ui/containers/AppNavigation.js