mirror of
https://github.com/wekan/wekan.git
synced 2025-04-24 14:08:31 -04:00
Remove invitation code if email sending failed, improve registration process with invitation
This commit is contained in:
parent
feafc46bb5
commit
f82941550a
4 changed files with 19 additions and 12 deletions
|
@ -1,6 +1,6 @@
|
||||||
Template.invitationCode.onRendered(() => {
|
Template.invitationCode.onRendered(() => {
|
||||||
const disableRegistration = Settings.findOne().disableRegistration;
|
const setting = Settings.findOne();
|
||||||
if(!disableRegistration){
|
if (!setting || !setting.disableRegistration) {
|
||||||
$('#invitationcode').hide();
|
$('#invitationcode').hide();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -13,7 +13,6 @@ AccountsTemplates.addFields([{
|
||||||
displayName: 'Invitation Code',
|
displayName: 'Invitation Code',
|
||||||
required: false,
|
required: false,
|
||||||
minLength: 6,
|
minLength: 6,
|
||||||
errStr: 'Invitation code doesn\'t exist',
|
|
||||||
template: 'invitationCode',
|
template: 'invitationCode',
|
||||||
}]);
|
}]);
|
||||||
|
|
||||||
|
@ -69,4 +68,3 @@ if (Meteor.isServer) {
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -104,6 +104,7 @@ if (Meteor.isServer) {
|
||||||
text: TAPi18n.__('email-invite-register-text', params, lang),
|
text: TAPi18n.__('email-invite-register-text', params, lang),
|
||||||
});
|
});
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
InvitationCodes.remove(_id);
|
||||||
throw new Meteor.Error('email-fail', e.message);
|
throw new Meteor.Error('email-fail', e.message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -91,6 +91,10 @@ Users.attachSchema(new SimpleSchema({
|
||||||
type: [String],
|
type: [String],
|
||||||
optional: true,
|
optional: true,
|
||||||
},
|
},
|
||||||
|
'profile.icode': {
|
||||||
|
type: String,
|
||||||
|
optional: true,
|
||||||
|
},
|
||||||
services: {
|
services: {
|
||||||
type: Object,
|
type: Object,
|
||||||
optional: true,
|
optional: true,
|
||||||
|
@ -401,11 +405,12 @@ if (Meteor.isServer) {
|
||||||
return user;
|
return user;
|
||||||
}
|
}
|
||||||
|
|
||||||
const iCode = options.profile.invitationcode | '';
|
if (!options || !options.profile) {
|
||||||
|
throw new Meteor.Error('error-invitation-code-blank', 'The invitation code is required');
|
||||||
const invitationCode = InvitationCodes.findOne({code: iCode, valid:true});
|
}
|
||||||
|
const invitationCode = InvitationCodes.findOne({code: options.profile.invitationcode, email: options.email, valid: true});
|
||||||
if (!invitationCode) {
|
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{
|
}else{
|
||||||
user.profile = {icode: options.profile.invitationcode};
|
user.profile = {icode: options.profile.invitationcode};
|
||||||
}
|
}
|
||||||
|
@ -487,16 +492,19 @@ if (Meteor.isServer) {
|
||||||
//invite user to corresponding boards
|
//invite user to corresponding boards
|
||||||
const disableRegistration = Settings.findOne().disableRegistration;
|
const disableRegistration = Settings.findOne().disableRegistration;
|
||||||
if (disableRegistration) {
|
if (disableRegistration) {
|
||||||
const user = Users.findOne(doc._id);
|
const invitationCode = InvitationCodes.findOne({code: doc.profile.icode, valid:true});
|
||||||
const invitationCode = InvitationCodes.findOne({code: user.profile.icode, valid:true});
|
|
||||||
if (!invitationCode) {
|
if (!invitationCode) {
|
||||||
throw new Meteor.Error('error-user-notCreated');
|
throw new Meteor.Error('error-invitation-code-not-exist');
|
||||||
}else{
|
}else{
|
||||||
invitationCode.boardsToBeInvited.forEach((boardId) => {
|
invitationCode.boardsToBeInvited.forEach((boardId) => {
|
||||||
const board = Boards.findOne(boardId);
|
const board = Boards.findOne(boardId);
|
||||||
board.addMember(doc._id);
|
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}});
|
InvitationCodes.update(invitationCode._id, {$set: {valid:false}});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue