Merge pull request #1690 from Budibase/fix/smtp-tls
Adding options to SMTP form for configuring TLS/STARTTLS
This commit is contained in:
commit
cb43edb640
|
@ -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>
|
||||
|
|
|
@ -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 = {
|
||||
|
|
Loading…
Reference in New Issue