From cf9d4799f8ed709be08748e12ad86156ec8446d8 Mon Sep 17 00:00:00 2001 From: Sacha Greif Date: Tue, 19 May 2015 09:50:39 +0900 Subject: [PATCH] check required fields in hasCompletedProfile callback --- packages/telescope-users/lib/callbacks.js | 4 +++- packages/telescope-users/lib/helpers.js | 16 +++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/packages/telescope-users/lib/callbacks.js b/packages/telescope-users/lib/callbacks.js index c5cc57a5d..fd78a2c53 100644 --- a/packages/telescope-users/lib/callbacks.js +++ b/packages/telescope-users/lib/callbacks.js @@ -54,6 +54,8 @@ Telescope.callbacks.add("onCreateUser", setupUser); * @param {Object} user */ function hasCompletedProfile (user) { - return !!Users.getEmail(user); + return _.every(Users.getRequiredFields(), function (fieldName) { + return !!Telescope.getNestedProperty(user, fieldName); + }); } Telescope.callbacks.add("profileCompletedChecks", hasCompletedProfile); diff --git a/packages/telescope-users/lib/helpers.js b/packages/telescope-users/lib/helpers.js index c21454f9a..acab4e27f 100644 --- a/packages/telescope-users/lib/helpers.js +++ b/packages/telescope-users/lib/helpers.js @@ -261,4 +261,18 @@ Users.getCurrentUserEmail = function () { Users.findByEmail = function (email) { return Meteor.users.findOne({"emails.address": email}); -} \ No newline at end of file +} + + +/** + * @method Users.getRequiredFields + * Get a list of all fields required for a profile to be complete + */ +Users.getRequiredFields = function () { + var schema = Users.simpleSchema()._schema; + var fields = _.filter(_.keys(schema), function (fieldName) { + var field = schema[fieldName]; + return !!field.required; + }); + return fields; +}; \ No newline at end of file