parent
4fab550ad6
commit
ac8a8bae94
@ -0,0 +1,34 @@ |
||||
Template.adminInviteUser.helpers |
||||
isAdmin: -> |
||||
console.log 'isAdmin', Meteor.user().admin is true |
||||
return Meteor.user().admin is true |
||||
emailEnabled: -> |
||||
console.log 'emailEnabled', RocketChat.settings.get('MAIL_URL') or (RocketChat.settings.get('SMTP_Host') and RocketChat.settings.get('SMTP_Username') and RocketChat.settings.get('SMTP_Password')) |
||||
return RocketChat.settings.get('MAIL_URL') or (RocketChat.settings.get('SMTP_Host') and RocketChat.settings.get('SMTP_Username') and RocketChat.settings.get('SMTP_Password')) |
||||
inviteEmails: -> |
||||
return Template.instance().inviteEmails.get() |
||||
|
||||
Template.adminInviteUser.events |
||||
'click .send': (e, instance) -> |
||||
emails = $('#inviteEmails').val().split /[\s,;]/ |
||||
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])?)*$/ |
||||
validEmails = _.compact _.map emails, (email) -> return email if rfcMailPattern.test email |
||||
if validEmails.length |
||||
Meteor.call 'sendInvitationEmail', validEmails, (error, result) -> |
||||
if result |
||||
instance.clearForm() |
||||
instance.inviteEmails.set validEmails |
||||
if error |
||||
toastr.error error.reason |
||||
else |
||||
toastr.error t('Send_invitation_email_error') |
||||
|
||||
'click .cancel': (e, instance) -> |
||||
instance.clearForm() |
||||
instance.inviteEmails.set [] |
||||
RocketChat.TabBar.closeFlex() |
||||
|
||||
Template.adminInviteUser.onCreated -> |
||||
@inviteEmails = new ReactiveVar [] |
||||
@clearForm = -> |
||||
$('#inviteEmails').val('') |
@ -0,0 +1,31 @@ |
||||
<template name="adminInviteUser"> |
||||
{{#if isAdmin}} |
||||
{{#if emailEnabled}} |
||||
<div class="about clearfix"> |
||||
<form class="edit-form"> |
||||
<h3>{{_ "Send_invitation_email"}}</h3> |
||||
<div class="input-line"> |
||||
<label for="inviteEmails">{{_ "Send_invitation_email_info"}}</label> |
||||
<textarea id="inviteEmails" rows="3" style="height: auto"></textarea> |
||||
</div> |
||||
</form> |
||||
</div> |
||||
<nav> |
||||
<button class='button button-block cancel secondary'><span>{{_ "Cancel"}}</span></button> |
||||
<button class='button button-block blue send' data-loading-text="{{_ "Please_wait"}}"><span>{{_ "Send"}}</span></button> |
||||
</nav> |
||||
{{#if inviteEmails.length}} |
||||
<div class="about clearfix" style="margin-top: 30px"> |
||||
<p style="color: #51a351"> {{_ "Send_invitation_email_success"}} </p> |
||||
<ul style="margin: 5px 10px"> |
||||
{{#each inviteEmails}} |
||||
<li style="margin-top: 5px">{{.}}</li> |
||||
{{/each}} |
||||
</ul> |
||||
</div> |
||||
{{/if}} |
||||
{{else}} |
||||
{{_ "Send_invitation_email_warning"}} |
||||
{{/if}} |
||||
{{/if}} |
||||
</template> |
@ -0,0 +1,22 @@ |
||||
Meteor.methods |
||||
sendInvitationEmail: (emails) -> |
||||
if not Meteor.userId() |
||||
throw new Meteor.Error 'invalid-user', "[methods] sendInvitationEmail -> Invalid user" |
||||
|
||||
unless Meteor.user()?.admin is true |
||||
throw new Meteor.Error 'not-authorized', '[methods] sendInvitationEmail -> Not authorized' |
||||
|
||||
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])?)*$/ |
||||
validEmails = _.compact _.map emails, (email) -> return email if rfcMailPattern.test email |
||||
|
||||
for email in validEmails |
||||
@unblock() |
||||
|
||||
Email.send |
||||
to: email |
||||
from: RocketChat.settings.get 'From_Email' |
||||
subject: RocketChat.settings.get 'Invitation_Subject' |
||||
html: RocketChat.settings.get 'Invitation_HTML' |
||||
|
||||
|
||||
return validEmails |
Loading…
Reference in new issue