mail.mjs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import _ from 'lodash-es'
  2. import { generateError, generateSuccess } from '../../helpers/graph.mjs'
  3. import { withoutTrailingSlash } from 'ufo'
  4. export default {
  5. Query: {
  6. async mailConfig(obj, args, context) {
  7. if (!WIKI.auth.checkAccess(context.req.user, ['manage:system'])) {
  8. throw new Error('ERR_FORBIDDEN')
  9. }
  10. return {
  11. ...WIKI.config.mail,
  12. pass: WIKI.config.mail.pass.length > 0 ? '********' : ''
  13. }
  14. }
  15. },
  16. Mutation: {
  17. async sendMailTest(obj, args, context) {
  18. try {
  19. if (!WIKI.auth.checkAccess(context.req.user, ['manage:system'])) {
  20. throw new Error('ERR_FORBIDDEN')
  21. }
  22. if (_.isEmpty(args.recipientEmail) || args.recipientEmail.length < 6) {
  23. throw new Error('ERR_MAIL_INVALID_RECIPIENT')
  24. }
  25. await WIKI.mail.send({
  26. template: 'Test',
  27. to: args.recipientEmail,
  28. subject: 'A test email from your wiki',
  29. text: 'This is a test email sent from your wiki.',
  30. data: {}
  31. })
  32. return {
  33. operation: generateSuccess('Test email sent successfully.')
  34. }
  35. } catch (err) {
  36. return generateError(err)
  37. }
  38. },
  39. async updateMailConfig(obj, args, context) {
  40. try {
  41. if (!WIKI.auth.checkAccess(context.req.user, ['manage:system'])) {
  42. throw new Error('ERR_FORBIDDEN')
  43. }
  44. WIKI.config.mail = {
  45. senderName: args.senderName,
  46. senderEmail: args.senderEmail,
  47. defaultBaseURL: withoutTrailingSlash(args.defaultBaseURL),
  48. host: args.host,
  49. port: args.port,
  50. name: args.name,
  51. secure: args.secure,
  52. verifySSL: args.verifySSL,
  53. user: args.user,
  54. pass: (args.pass === '********') ? WIKI.config.mail.pass : args.pass,
  55. useDKIM: args.useDKIM,
  56. dkimDomainName: args.dkimDomainName,
  57. dkimKeySelector: args.dkimKeySelector,
  58. dkimPrivateKey: args.dkimPrivateKey
  59. }
  60. await WIKI.configSvc.saveToDb(['mail'])
  61. WIKI.mail.init()
  62. return {
  63. operation: generateSuccess('Mail configuration updated successfully.')
  64. }
  65. } catch (err) {
  66. return generateError(err)
  67. }
  68. }
  69. }
  70. }