|  | @@ -91,6 +91,10 @@ Users.attachSchema(new SimpleSchema({
 | 
	
		
			
				|  |  |      type: [String],
 | 
	
		
			
				|  |  |      optional: true,
 | 
	
		
			
				|  |  |    },
 | 
	
		
			
				|  |  | +  'profile.icode': {
 | 
	
		
			
				|  |  | +    type: String,
 | 
	
		
			
				|  |  | +    optional: true,
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  |    services: {
 | 
	
		
			
				|  |  |      type: Object,
 | 
	
		
			
				|  |  |      optional: true,
 | 
	
	
		
			
				|  | @@ -401,11 +405,12 @@ if (Meteor.isServer) {
 | 
	
		
			
				|  |  |        return user;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    const iCode = options.profile.invitationcode | '';
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    const invitationCode = InvitationCodes.findOne({code: iCode, valid:true});
 | 
	
		
			
				|  |  | +    if (!options || !options.profile) {
 | 
	
		
			
				|  |  | +      throw new Meteor.Error('error-invitation-code-blank', 'The invitation code is required');
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    const invitationCode = InvitationCodes.findOne({code: options.profile.invitationcode, email: options.email, valid: true});
 | 
	
		
			
				|  |  |      if (!invitationCode) {
 | 
	
		
			
				|  |  | -      throw new Meteor.Error('error-invitation-code-not-exist');
 | 
	
		
			
				|  |  | +      throw new Meteor.Error('error-invitation-code-not-exist', 'The invitation code doesn\'t exist');
 | 
	
		
			
				|  |  |      }else{
 | 
	
		
			
				|  |  |        user.profile = {icode: options.profile.invitationcode};
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -487,16 +492,19 @@ if (Meteor.isServer) {
 | 
	
		
			
				|  |  |      //invite user to corresponding boards
 | 
	
		
			
				|  |  |      const disableRegistration = Settings.findOne().disableRegistration;
 | 
	
		
			
				|  |  |      if (disableRegistration) {
 | 
	
		
			
				|  |  | -      const user = Users.findOne(doc._id);
 | 
	
		
			
				|  |  | -      const invitationCode = InvitationCodes.findOne({code: user.profile.icode, valid:true});
 | 
	
		
			
				|  |  | +      const invitationCode = InvitationCodes.findOne({code: doc.profile.icode, valid:true});
 | 
	
		
			
				|  |  |        if (!invitationCode) {
 | 
	
		
			
				|  |  | -        throw new Meteor.Error('error-user-notCreated');
 | 
	
		
			
				|  |  | +        throw new Meteor.Error('error-invitation-code-not-exist');
 | 
	
		
			
				|  |  |        }else{
 | 
	
		
			
				|  |  |          invitationCode.boardsToBeInvited.forEach((boardId) => {
 | 
	
		
			
				|  |  |            const board = Boards.findOne(boardId);
 | 
	
		
			
				|  |  |            board.addMember(doc._id);
 | 
	
		
			
				|  |  |          });
 | 
	
		
			
				|  |  | -        user.profile = {invitedBoards: invitationCode.boardsToBeInvited};
 | 
	
		
			
				|  |  | +        if (!doc.profile) {
 | 
	
		
			
				|  |  | +          doc.profile = {};
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        doc.profile.invitedBoards = invitationCode.boardsToBeInvited;
 | 
	
		
			
				|  |  | +        Users.update(doc._id, {$set:{profile: doc.profile}});
 | 
	
		
			
				|  |  |          InvitationCodes.update(invitationCode._id, {$set: {valid:false}});
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      }
 |