Merge pull request #5388 from RocketChat/livechat-validate-offline-email-address

Add email address validation to livechat offline messages
pull/5261/head^2
Gabriel Engel 9 years ago committed by GitHub
commit 70f985fa1b
  1. 2
      packages/rocketchat-i18n/i18n/en.i18n.json
  2. 4
      packages/rocketchat-i18n/i18n/pt.i18n.json
  3. 8
      packages/rocketchat-livechat/config.js
  4. 16
      packages/rocketchat-livechat/server/methods/sendOfflineMessage.js

@ -438,6 +438,7 @@
"error-invalid-description": "Invalid description",
"error-invalid-domain": "Invalid domain",
"error-invalid-email": "Invalid email __email__",
"error-invalid-email-address": "Invalid email address",
"error-invalid-file-height": "Invalid file height",
"error-invalid-file-type": "Invalid file type",
"error-direct-message-file-upload-not-allowed": "File sharing not allowed in direct messages",
@ -1440,6 +1441,7 @@
"UTF8_Names_Slugify": "UTF8 Names Slugify",
"UTF8_Names_Validation": "UTF8 Names Validation",
"UTF8_Names_Validation_Description": "RegExp that will be used to validate usernames and channel names",
"Validate_email_address": "Validate email address",
"Verification_email_sent": "Verification email sent",
"Verified": "Verified",
"Version": "Version",

@ -410,6 +410,7 @@
"error-invalid-description": "Descrição inválida",
"error-invalid-domain": "Domínio inválido",
"error-invalid-email": "__email__ não é um e-mail válido",
"error-invalid-email-address": "Endereço de e-mail inválido",
"error-invalid-file-height": "Altura de arquivo inválida",
"error-invalid-file-type": "Tipo de arquivo inválido",
"error-invalid-file-width": "Altura de arquivo inválida",
@ -1235,6 +1236,7 @@
"UTF8_Names_Slugify": "Slugify Nomes UTF8 ",
"UTF8_Names_Validation": "Validação de Nomes UTF8",
"UTF8_Names_Validation_Description": "Não permitir caracteres especiais e espaços. Você pode usar - _ e. mas não no final do nome",
"Validate_email_address": "Validar endereço de e-mail",
"Verification_email_sent": "E-mail de verificação enviado",
"Verified": "Verificado",
"Version": "Versão",
@ -1308,4 +1310,4 @@
"your_message_optional": "sua mensagem (opcional)",
"Your_password_is_wrong": "Sua senha está errada!",
"Your_push_was_sent_to_s_devices": "Sua natificação foi enviada para %s dispositivos"
}
}

@ -14,6 +14,14 @@ Meteor.startup(function() {
i18nLabel: 'Display_offline_form'
});
RocketChat.settings.add('Livechat_validate_offline_email', true, {
type: 'boolean',
group: 'Livechat',
public: true,
section: 'Offline',
i18nLabel: 'Validate_email_address'
});
RocketChat.settings.add('Livechat_offline_form_unavailable', '', {
type: 'string',
group: 'Livechat',

@ -1,4 +1,6 @@
/* globals DDPRateLimiter */
const dns = Npm.require('dns');
Meteor.methods({
'livechat:sendOfflineMessage'(data) {
check(data, {
@ -7,6 +9,10 @@ Meteor.methods({
message: String
});
if (!RocketChat.settings.get('Livechat_display_offline_form')) {
return false;
}
const header = RocketChat.placeholders.replace(RocketChat.settings.get('Email_Header') || '');
const footer = RocketChat.placeholders.replace(RocketChat.settings.get('Email_Footer') || '');
@ -26,6 +32,16 @@ Meteor.methods({
fromEmail = RocketChat.settings.get('From_Email');
}
if (RocketChat.settings.get('Livechat_validate_offline_email')) {
const emailDomain = data.email.substr(data.email.lastIndexOf('@') + 1);
try {
Meteor.wrapAsync(dns.resolveMx)(emailDomain);
} catch (e) {
throw new Meteor.Error('error-invalid-email-address', 'Invalid email address', { method: 'livechat:sendOfflineMessage' });
}
}
Meteor.defer(() => {
Email.send({
to: RocketChat.settings.get('Livechat_offline_email'),

Loading…
Cancel
Save