Fix after verify email, verify if it needs changes in user roles (#14263)

pull/14533/head
Marcos Spessatto Defendi 7 years ago committed by Rodrigo Nascimento
parent 591354b56d
commit 75b733fdc7
  1. 16
      server/methods/afterVerifyEmail.js

@ -1,5 +1,4 @@
import { Meteor } from 'meteor/meteor';
import _ from 'underscore';
import { Users, Roles } from '../../app/models';
@ -14,12 +13,17 @@ Meteor.methods({
}
const user = Users.findOneById(userId);
if (user && user.emails && Array.isArray(user.emails)) {
const verifiedEmail = user.emails.find((email) => email.verified);
const rolesToChangeTo = { anonymous: ['user'] };
const rolesThatNeedChanges = user.roles.filter((role) => rolesToChangeTo[role]);
const verifiedEmail = _.find(user.emails, (email) => email.verified);
if (verifiedEmail) {
Roles.addUserRoles(user._id, 'user');
Roles.removeUserRoles(user._id, 'anonymous');
if (rolesThatNeedChanges.length && verifiedEmail) {
rolesThatNeedChanges.forEach((role) => {
Roles.addUserRoles(user._id, rolesToChangeTo[role]);
Roles.removeUserRoles(user._id, role);
});
}
}
},
});

Loading…
Cancel
Save