Vulcan/packages/telescope-users/lib/methods.js

41 lines
1.2 KiB
JavaScript
Raw Normal View History

var completeUserProfile = function (modifier, userId, user) {
Users.update(userId, modifier);
Telescope.callbacks.runAsync("profileCompletedAsync", Users.findOne(userId));
return Users.findOne(userId);
};
2015-05-06 12:28:00 +09:00
Meteor.methods({
completeUserProfile: function (modifier, userId) {
var currentUser = Meteor.user(),
user = Users.findOne(userId),
schema = Users.simpleSchema()._schema;
// ------------------------------ Checks ------------------------------ //
// check that user can edit document
if (!user || !Users.can.edit(currentUser, user)) {
throw new Meteor.Error(601, i18n.t('sorry_you_cannot_edit_this_user'));
2015-05-06 12:28:00 +09:00
}
// go over each field and throw an error if it's not editable
// loop over each operation ($set, $unset, etc.)
_.each(modifier, function (operation) {
// loop over each property being operated on
_.keys(operation).forEach(function (fieldName) {
console.log(fieldName);
var field = schema[fieldName];
if (!Users.can.editField(user, field, user)) {
throw new Meteor.Error("disallowed_property", i18n.t('disallowed_property_detected') + ": " + fieldName);
2015-05-06 12:28:00 +09:00
}
});
});
completeUserProfile(modifier, userId, user);
2015-05-06 12:28:00 +09:00
}
});