feat(mail): allow setting of mailer identifying name

parent 5d0f882f
...@@ -13,6 +13,7 @@ module.exports = { ...@@ -13,6 +13,7 @@ module.exports = {
let conf = { let conf = {
host: WIKI.config.mail.host, host: WIKI.config.mail.host,
port: WIKI.config.mail.port, port: WIKI.config.mail.port,
name: WIKI.config.mail.name,
secure: WIKI.config.mail.secure, secure: WIKI.config.mail.secure,
tls: { tls: {
rejectUnauthorized: !(WIKI.config.mail.verifySSL === false) rejectUnauthorized: !(WIKI.config.mail.verifySSL === false)
......
...@@ -389,6 +389,7 @@ exports.up = async knex => { ...@@ -389,6 +389,7 @@ exports.up = async knex => {
senderEmail: '', senderEmail: '',
host: '', host: '',
port: 465, port: 465,
name: '',
secure: true, secure: true,
verifySSL: true, verifySSL: true,
user: '', user: '',
......
...@@ -43,6 +43,7 @@ module.exports = { ...@@ -43,6 +43,7 @@ module.exports = {
senderEmail: args.senderEmail, senderEmail: args.senderEmail,
host: args.host, host: args.host,
port: args.port, port: args.port,
name: args.name,
secure: args.secure, secure: args.secure,
verifySSL: args.verifySSL, verifySSL: args.verifySSL,
user: args.user, user: args.user,
......
...@@ -16,6 +16,7 @@ extend type Mutation { ...@@ -16,6 +16,7 @@ extend type Mutation {
senderEmail: String! senderEmail: String!
host: String! host: String!
port: Int! port: Int!
name: String!
secure: Boolean! secure: Boolean!
verifySSL: Boolean! verifySSL: Boolean!
user: String! user: String!
...@@ -36,6 +37,7 @@ type MailConfig { ...@@ -36,6 +37,7 @@ type MailConfig {
senderEmail: String senderEmail: String
host: String host: String
port: Int port: Int
name: String
secure: Boolean secure: Boolean
verifySSL: Boolean verifySSL: Boolean
user: String user: String
......
...@@ -16,9 +16,7 @@ module.exports = class Setting extends Model { ...@@ -16,9 +16,7 @@ module.exports = class Setting extends Model {
required: ['key'], required: ['key'],
properties: { properties: {
key: {type: 'string'}, key: {type: 'string'}
createdAt: {type: 'string'},
updatedAt: {type: 'string'}
} }
} }
} }
...@@ -27,13 +25,6 @@ module.exports = class Setting extends Model { ...@@ -27,13 +25,6 @@ module.exports = class Setting extends Model {
return ['value'] return ['value']
} }
$beforeUpdate() {
this.updatedAt = new Date().toISOString()
}
$beforeInsert() {
this.updatedAt = new Date().toISOString()
}
static async getConfig() { static async getConfig() {
const settings = await WIKI.models.settings.query() const settings = await WIKI.models.settings.query()
if (settings.length > 0) { if (settings.length > 0) {
......
...@@ -1422,5 +1422,7 @@ ...@@ -1422,5 +1422,7 @@
"tags.selectOneMoreTags": "Select one or more tags", "tags.selectOneMoreTags": "Select one or more tags",
"tags.selectOneMoreTagsHint": "Select one or more tags on the left.", "tags.selectOneMoreTagsHint": "Select one or more tags on the left.",
"admin.general.sitemapHint": "Make a sitemap.xml available to search engines with all pages accessible to guests.", "admin.general.sitemapHint": "Make a sitemap.xml available to search engines with all pages accessible to guests.",
"admin.groups.usersNone": "This group doesn't have any user yet." "admin.groups.usersNone": "This group doesn't have any user yet.",
"admin.mail.smtpName": "Client Identifying Name",
"admin.mail.smtpNameHint": "An optional name to send to the SMTP server to identify your mailer. Leave empty to use server hostname. For Google Workspace customers, this should be your main domain name."
} }
...@@ -98,6 +98,20 @@ q-page.admin-mail ...@@ -98,6 +98,20 @@ q-page.admin-mail
:aria-label='t(`admin.mail.smtpPort`)' :aria-label='t(`admin.mail.smtpPort`)'
) )
q-separator.q-my-sm(inset) q-separator.q-my-sm(inset)
q-item
blueprint-icon(icon='server')
q-item-section
q-item-label {{t(`admin.mail.smtpName`)}}
q-item-label(caption) {{t(`admin.mail.smtpNameHint`)}}
q-item-section
q-input(
outlined
v-model='state.config.name'
dense
hide-bottom-space
:aria-label='t(`admin.mail.smtpName`)'
)
q-separator.q-my-sm(inset)
q-item(tag='label', v-ripple) q-item(tag='label', v-ripple)
blueprint-icon(icon='secure') blueprint-icon(icon='secure')
q-item-section q-item-section
...@@ -390,6 +404,7 @@ async function save () { ...@@ -390,6 +404,7 @@ async function save () {
$senderEmail: String! $senderEmail: String!
$host: String! $host: String!
$port: Int! $port: Int!
$name: String!
$secure: Boolean! $secure: Boolean!
$verifySSL: Boolean! $verifySSL: Boolean!
$user: String! $user: String!
...@@ -404,6 +419,7 @@ async function save () { ...@@ -404,6 +419,7 @@ async function save () {
senderEmail: $senderEmail senderEmail: $senderEmail
host: $host host: $host
port: $port port: $port
name: $name
secure: $secure secure: $secure
verifySSL: $verifySSL verifySSL: $verifySSL
user: $user user: $user
...@@ -413,7 +429,7 @@ async function save () { ...@@ -413,7 +429,7 @@ async function save () {
dkimKeySelector: $dkimKeySelector dkimKeySelector: $dkimKeySelector
dkimPrivateKey: $dkimPrivateKey dkimPrivateKey: $dkimPrivateKey
) { ) {
status { operation {
succeeded succeeded
slug slug
message message
...@@ -426,6 +442,7 @@ async function save () { ...@@ -426,6 +442,7 @@ async function save () {
senderEmail: state.config.senderEmail || '', senderEmail: state.config.senderEmail || '',
host: state.config.host || '', host: state.config.host || '',
port: toSafeInteger(state.config.port) || 0, port: toSafeInteger(state.config.port) || 0,
name: state.config.name || '',
secure: state.config.secure ?? false, secure: state.config.secure ?? false,
verifySSL: state.config.verifySSL ?? false, verifySSL: state.config.verifySSL ?? false,
user: state.config.user || '', user: state.config.user || '',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment