codecombat/server/routes/contact.coffee

38 lines
1.5 KiB
CoffeeScript
Raw Normal View History

config = require '../../server_config'
2014-02-04 17:08:20 -05:00
log = require 'winston'
mail = require '../commons/mail'
User = require '../users/User'
2014-01-03 13:32:13 -05:00
module.exports.setup = (app) ->
2014-01-03 13:32:13 -05:00
app.post '/contact', (req, res) ->
return res.end() unless req.user
2014-02-04 17:08:20 -05:00
log.info "Sending mail from #{req.body.email} saying #{req.body.message}"
if config.isProduction
createMailOptions req.body.email, req.body.message, req.user, req.body.recipientID, req.body.subject, (options) ->
mail.transport.sendMail options, (error, response) ->
if error
log.error "Error sending mail: #{error.message or error}"
else
log.info "Mail sent successfully. Response: #{response.message}"
2014-01-03 13:32:13 -05:00
return res.end()
createMailOptions = (sender, message, user, recipientID, subject, done) ->
2014-01-03 13:32:13 -05:00
# TODO: use email templates here
options =
from: config.mail.username
to: config.mail.username
replyTo: sender
subject: "[CodeCombat] #{subject ? ('Feedback - ' + sender)}"
2014-01-03 13:32:13 -05:00
text: "#{message}\n\nUsername: #{user.get('name') or 'Anonymous'}\nID: #{user._id}"
#html: message.replace '\n', '<br>\n'
if recipientID and (user.isAdmin() or ('employer' in (user.get('permissions') ? [])))
User.findById(recipientID, 'email').exec (err, document) ->
if err
log.error "Error looking up recipient to email from #{recipientID}: #{err}" if err
else
options.bcc = [options.to, sender]
options.to = document.get('email')
done options
else
done options