mirror of
https://github.com/vale981/Vulcan
synced 2025-03-06 10:01:40 -05:00
71 lines
2.5 KiB
JavaScript
71 lines
2.5 KiB
JavaScript
import Users from './collection.js';
|
|
import marked from 'marked';
|
|
import { addCallback, Utils, runCallbacksAsync } from 'meteor/vulcan:lib'; // import from vulcan:lib because vulcan:core isn't loaded yet
|
|
|
|
//////////////////////////////////////////////////////
|
|
// Callbacks //
|
|
//////////////////////////////////////////////////////
|
|
|
|
function hasCompletedProfile (user) {
|
|
return Users.hasCompletedProfile(user);
|
|
}
|
|
addCallback("users.profileCompleted.sync", hasCompletedProfile);
|
|
|
|
// remove this to get rid of dependency on vulcan:email
|
|
|
|
// function usersNewAdminUserCreationNotification (user) {
|
|
// // send notifications to admins
|
|
// const admins = Users.adminUsers();
|
|
// admins.forEach(function(admin) {
|
|
// if (Users.getSetting(admin, "notifications_users", false)) {
|
|
// const emailProperties = Users.getNotificationProperties(user);
|
|
// const html = VulcanEmail.getTemplate('newUser')(emailProperties);
|
|
// VulcanEmail.send(Users.getEmail(admin), `New user account: ${emailProperties.displayName}`, VulcanEmail.buildTemplate(html));
|
|
// }
|
|
// });
|
|
// return user;
|
|
// }
|
|
// addCallback("users.new.sync", usersNewAdminUserCreationNotification);
|
|
|
|
function usersEditGenerateHtmlBio (modifier) {
|
|
if (modifier.$set && modifier.$set.bio) {
|
|
modifier.$set.htmlBio = Utils.sanitize(marked(modifier.$set.bio));
|
|
}
|
|
return modifier;
|
|
}
|
|
addCallback("users.edit.sync", usersEditGenerateHtmlBio);
|
|
|
|
function usersEditCheckEmail (modifier, user) {
|
|
// if email is being modified, update user.emails too
|
|
if (modifier.$set && modifier.$set.email) {
|
|
|
|
const newEmail = modifier.$set.email;
|
|
|
|
// check for existing emails and throw error if necessary
|
|
const userWithSameEmail = Users.findByEmail(newEmail);
|
|
if (userWithSameEmail && userWithSameEmail._id !== user._id) {
|
|
throw new Error(Utils.encodeIntlError({id:"users.email_already_taken", value: newEmail}));
|
|
}
|
|
|
|
// if user.emails exists, change it too
|
|
if (!!user.emails) {
|
|
user.emails[0].address = newEmail;
|
|
modifier.$set.emails = user.emails;
|
|
}
|
|
|
|
// update email hash
|
|
modifier.$set.emailHash = Users.avatar.hash(newEmail);
|
|
|
|
}
|
|
return modifier;
|
|
}
|
|
addCallback("users.edit.sync", usersEditCheckEmail);
|
|
|
|
// when a user is edited, check if their profile is now complete
|
|
function usersCheckCompletion (newUser, oldUser) {
|
|
if (!Users.hasCompletedProfile(oldUser) && Users.hasCompletedProfile(newUser)) {
|
|
runCallbacksAsync("users.profileCompleted.async", newUser);
|
|
}
|
|
}
|
|
addCallback("users.edit.async", usersCheckCompletion);
|
|
|