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.

send-email.js 2.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. 'use strict'
  2. const Joi = require('joi')
  3. const pluginConfig = {
  4. handlerType: 'email',
  5. docs: {
  6. get: {
  7. description: 'sends confirmation email',
  8. notes: 'Stores the email in memory in a hash and sends confirmation email for signup',
  9. },
  10. },
  11. }
  12. module.exports = {
  13. method: 'POST',
  14. path: '/send-email/',
  15. options: {
  16. ...pluginConfig.docs.get,
  17. tags: ['api'],
  18. auth: false,
  19. cors: true,
  20. handler: async function (request, h) {
  21. const { userService } = request.server.services()
  22. const userCredentials = request.payload
  23. try {
  24. const emailSent = await userService.emailSent(userCredentials)
  25. const hashedSessionToken = Object.keys(
  26. userService.activeSessions,
  27. ).find(hashedToken => {
  28. return (
  29. userService.activeSessions[`${hashedToken}`].email ===
  30. userCredentials.email
  31. )
  32. })
  33. // Registers the activeSessions object for use by jwt auth strategy
  34. request.server.app.activeSessions = userService.activeSessions
  35. if (!hashedSessionToken?.length) {
  36. throw Error('hashedSessionToken not Found!!')
  37. }
  38. return {
  39. ok: true,
  40. handler: pluginConfig.handlerType,
  41. data: {
  42. emailSentSuccessfully: emailSent.wasSuccessfull,
  43. hashedSessionToken,
  44. },
  45. }
  46. } catch (err) {
  47. console.log('err :=>', err)
  48. return {
  49. ok: false,
  50. handler: pluginConfig.handlerType,
  51. data: {
  52. error: err,
  53. },
  54. }
  55. }
  56. },
  57. validate: {
  58. failAction: 'log',
  59. },
  60. response: {
  61. schema: Joi.object({
  62. ok: Joi.bool(),
  63. handler: Joi.string(),
  64. data: Joi.object(),
  65. }).label('email_res'),
  66. failAction: 'log',
  67. },
  68. },
  69. }