Advertisement
Guest User

Untitled

a guest
Feb 8th, 2016
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.84 KB | None | 0 0
  1. var nodemailer = require('nodemailer'),
  2. smtpTransport = require('nodemailer-smtp-transport'),
  3. config = require('../config/config'),
  4. _ = require('underscore'),
  5. fs= require("fs"),
  6. jwt = require('jwt-simple');
  7.  
  8.  
  9. var transporter = nodemailer.createTransport(smtpTransport({
  10. host: config.mailer.host,
  11. port: config.mailer.port,
  12. auth: {
  13. user: config.mailer.auth.user,
  14. pass: config.mailer.auth.pass
  15. }
  16. }));
  17.  
  18. _.templateSettings = {
  19. interpolate: /\{\{(.+?)\}\}/g
  20. };
  21.  
  22. var functions = {
  23.  
  24. sendMail: function(params){
  25. console.log("in sendmail function" + Date());
  26.  
  27. templatePath = __dirname + '/../templates/' + params.template + '.html';
  28. fs.readFile( templatePath, 'utf8', function(err, file){
  29. console.log("completed reading template file"+ Date());
  30. if(err){
  31. consolelog("error reading template");
  32. console.log(err)
  33. }
  34. else{
  35. console.log("underscore compiling template"+ Date());
  36. var compiled = _.template(file);
  37. var body = compiled(params.data);
  38. console.log("compilation done"+ Date());
  39.  
  40. var mailOptions = {
  41. from: config.mailer.auth.user, // sender address
  42. to: params.to, // list of receivers
  43. bcc: config.mailer.auth.user,
  44. subject: params.subject,
  45. html: body
  46. };
  47.  
  48. console.log("sending mail"+ Date());
  49. // send mail with defined transport object
  50. transporter.sendMail(mailOptions, function(err, info){
  51. console.log("mail sent"+ Date());
  52. if(err){
  53. console.log("email sending error");
  54. console.log(err);
  55. }
  56. });
  57. }
  58. });
  59. },
  60.  
  61. sendsms: function(params, callback){
  62.  
  63. var client = require('twilio')(config.sms.account, config.sms.token);
  64.  
  65. client.messages.create({
  66. to: params.to,
  67. from: config.sms.from,
  68. body: params.body
  69. }, function(err, message) {
  70. callback(err, message.sid);
  71. });
  72. },
  73.  
  74. getToken : function(req){
  75. return (req.body && req.body.access_token) || (req.query && req.query.access_token) || req.headers['x-access-token'];
  76. },
  77.  
  78. getKey: function(req){
  79. return (req.body && req.body.x_key) || (req.query && req.query.x_key) || req.headers['x-key'];
  80. },
  81.  
  82. generateToken: function(user){
  83. return genToken(user);
  84. },
  85.  
  86. decodeToken: function(token){
  87. var decoded = {}
  88. try {
  89. decoded = jwt.decode(token, config.secret);
  90. }
  91. catch (err){
  92. console.log("error while decoding token");
  93. console.log(err);
  94. return null;
  95. }
  96. return decoded;
  97.  
  98. },
  99.  
  100. pwResetToken: function(username){
  101.  
  102. var expires = expiresIn(1);
  103. var token = jwt.encode({
  104. user: username,
  105. exp: expires
  106. }, config.secret);
  107.  
  108. return token;
  109. }
  110. };
  111.  
  112. /** private methods,
  113. * Method to generate access token
  114. *
  115. * @param user
  116. * @returns {{token: String, expires: *, user: *}}
  117. */
  118. function genToken(user) {
  119.  
  120. var expires = expiresIn(config.tokenExpiry);
  121.  
  122. var token = jwt.encode({
  123. user: _.pick(user, ['_id', 'username', 'role']),
  124. exp: expires
  125. }, config.secret);
  126.  
  127. return {
  128. token: token,
  129. expires: expires,
  130. user: _.pick(user, ['username', 'role'])
  131. };
  132. }
  133.  
  134. function expiresIn(numHours) {
  135. var dateObj = new Date();
  136. return dateObj.setHours(dateObj.getHours() + numHours);
  137. }
  138.  
  139.  
  140. module.exports = functions;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement