Merge pull request #1690 from Budibase/fix/smtp-tls

Adding options to SMTP form for configuring TLS/STARTTLS
This commit is contained in:
Michael Drury 2021-06-10 12:14:00 +01:00 committed by GitHub
commit cb43edb640
2 changed files with 44 additions and 14 deletions

View File

@ -5,16 +5,18 @@
Heading,
Divider,
Label,
Page,
notifications,
Layout,
Input,
Select,
Body,
Table,
Checkbox,
} from "@budibase/bbui"
import { email } from "stores/portal"
import TemplateLink from "./_components/TemplateLink.svelte"
import api from "builderStore/api"
import { cloneDeep } from "lodash/fp"
const ConfigTypes = {
SMTP: "smtp",
@ -36,10 +38,16 @@
let smtpConfig
let loading
let requireAuth = false
async function saveSmtp() {
// clone it so we can remove stuff if required
const smtp = cloneDeep(smtpConfig)
if (!requireAuth) {
delete smtp.config.auth
}
// Save your SMTP config
const response = await api.post(`/api/admin/configs`, smtpConfig)
const response = await api.post(`/api/admin/configs`, smtp)
if (response.status !== 200) {
const error = await response.text()
@ -66,15 +74,19 @@
smtpConfig = {
type: ConfigTypes.SMTP,
config: {
auth: {
type: "login",
},
secure: true,
},
}
} else {
smtpConfig = smtpDoc
}
loading = false
requireAuth = smtpConfig.config.auth != null
// always attach the auth for the forms purpose -
// this will be removed later if required
smtpConfig.config.auth = {
type: "login",
}
}
fetchSmtp()
@ -103,22 +115,35 @@
<Label size="L">Host</Label>
<Input bind:value={smtpConfig.config.host} />
</div>
<div class="form-row">
<Label size="L">Security type</Label>
<Select
bind:value={smtpConfig.config.secure}
options={[
{ label: "SSL/TLS", value: true },
{ label: "None/STARTTLS", value: false },
]}
/>
</div>
<div class="form-row">
<Label size="L">Port</Label>
<Input type="number" bind:value={smtpConfig.config.port} />
</div>
<div class="form-row">
<Label size="L">User</Label>
<Input bind:value={smtpConfig.config.auth.user} />
</div>
<div class="form-row">
<Label size="L">Password</Label>
<Input type="password" bind:value={smtpConfig.config.auth.pass} />
</div>
<div class="form-row">
<Label size="L">From email address</Label>
<Input type="email" bind:value={smtpConfig.config.from} />
</div>
<Checkbox bind:value={requireAuth} text="Require sign-in" />
{#if requireAuth}
<div class="form-row">
<Label size="L">User</Label>
<Input bind:value={smtpConfig.config.auth.user} />
</div>
<div class="form-row">
<Label size="L">Password</Label>
<Input type="password" bind:value={smtpConfig.config.auth.pass} />
</div>
{/if}
</Layout>
<div>
<Button cta on:click={saveSmtp}>Save</Button>

View File

@ -20,11 +20,16 @@ const FULL_EMAIL_PURPOSES = [
function createSMTPTransport(config) {
let options
let secure = config.secure
// default it if not specified
if (secure == null) {
secure = config.port === 465
}
if (!TEST_MODE) {
options = {
port: config.port,
host: config.host,
secure: config.secure || false,
secure: secure,
auth: config.auth,
}
options.tls = {