|
|
|
import _ from 'lodash-es'
|
|
|
|
import { generateError, generateSuccess } from '../../helpers/graph.mjs'
|
|
|
|
import { withoutTrailingSlash } from 'ufo'
|
|
|
|
|
|
|
|
export default {
|
|
|
|
Query: {
|
|
|
|
async mailConfig(obj, args, context) {
|
|
|
|
if (!WIKI.auth.checkAccess(context.req.user, ['manage:system'])) {
|
|
|
|
throw new Error('ERR_FORBIDDEN')
|
|
|
|
}
|
|
|
|
|
|
|
|
return {
|
|
|
|
...WIKI.config.mail,
|
|
|
|
pass: WIKI.config.mail.pass.length > 0 ? '********' : ''
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
Mutation: {
|
|
|
|
async sendMailTest(obj, args, context) {
|
|
|
|
try {
|
|
|
|
if (!WIKI.auth.checkAccess(context.req.user, ['manage:system'])) {
|
|
|
|
throw new Error('ERR_FORBIDDEN')
|
|
|
|
}
|
|
|
|
|
|
|
|
if (_.isEmpty(args.recipientEmail) || args.recipientEmail.length < 6) {
|
|
|
|
throw new Error('ERR_MAIL_INVALID_RECIPIENT')
|
|
|
|
}
|
|
|
|
|
|
|
|
await WIKI.mail.send({
|
|
|
|
template: 'Test',
|
|
|
|
to: args.recipientEmail,
|
|
|
|
subject: 'A test email from your wiki',
|
|
|
|
text: 'This is a test email sent from your wiki.',
|
|
|
|
data: {}
|
|
|
|
})
|
|
|
|
|
|
|
|
return {
|
|
|
|
operation: generateSuccess('Test email sent successfully.')
|
|
|
|
}
|
|
|
|
} catch (err) {
|
|
|
|
return generateError(err)
|
|
|
|
}
|
|
|
|
},
|
|
|
|
async updateMailConfig(obj, args, context) {
|
|
|
|
try {
|
|
|
|
if (!WIKI.auth.checkAccess(context.req.user, ['manage:system'])) {
|
|
|
|
throw new Error('ERR_FORBIDDEN')
|
|
|
|
}
|
|
|
|
|
|
|
|
WIKI.config.mail = {
|
|
|
|
senderName: args.senderName,
|
|
|
|
senderEmail: args.senderEmail,
|
|
|
|
defaultBaseURL: withoutTrailingSlash(args.defaultBaseURL),
|
|
|
|
host: args.host,
|
|
|
|
port: args.port,
|
|
|
|
name: args.name,
|
|
|
|
secure: args.secure,
|
|
|
|
verifySSL: args.verifySSL,
|
|
|
|
user: args.user,
|
|
|
|
pass: (args.pass === '********') ? WIKI.config.mail.pass : args.pass,
|
|
|
|
useDKIM: args.useDKIM,
|
|
|
|
dkimDomainName: args.dkimDomainName,
|
|
|
|
dkimKeySelector: args.dkimKeySelector,
|
|
|
|
dkimPrivateKey: args.dkimPrivateKey
|
|
|
|
}
|
|
|
|
await WIKI.configSvc.saveToDb(['mail'])
|
|
|
|
|
|
|
|
WIKI.mail.init()
|
|
|
|
|
|
|
|
return {
|
|
|
|
operation: generateSuccess('Mail configuration updated successfully.')
|
|
|
|
}
|
|
|
|
} catch (err) {
|
|
|
|
return generateError(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|