The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Rocket.Chat/app/ui-admin/client/users/adminInviteUser.js

54 lines
1.5 KiB

import { Meteor } from 'meteor/meteor';
import { ReactiveVar } from 'meteor/reactive-var';
import { Template } from 'meteor/templating';
import _ from 'underscore';
import toastr from 'toastr';
import { hasAtLeastOnePermission } from '../../../authorization';
import { t, handleError } from '../../../utils';
Template.adminInviteUser.helpers({
isAllowed() {
return hasAtLeastOnePermission('bulk-register-user');
},
inviteEmails() {
return Template.instance().inviteEmails.get();
},
});
Template.adminInviteUser.events({
'click .send'(e, instance) {
const emails = $('#inviteEmails').val().split(/[\s,;]/);
const rfcMailPattern = /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;
const validEmails = _.compact(_.map(emails, function(email) {
if (rfcMailPattern.test(email)) {
return email;
}
}));
if (validEmails.length) {
Meteor.call('sendInvitationEmail', validEmails, function(error, result) {
if (result) {
instance.clearForm();
instance.inviteEmails.set(validEmails);
}
if (error) {
handleError(error);
}
});
} else {
toastr.error(t('Send_invitation_email_error'));
}
},
'click .cancel'(e, instance) {
instance.clearForm();
instance.inviteEmails.set([]);
Template.currentData().tabBar.close();
},
});
Template.adminInviteUser.onCreated(function() {
this.inviteEmails = new ReactiveVar([]);
this.clearForm = function() {
$('#inviteEmails').val('');
};
});