improved email setup

This commit is contained in:
Čarodej
2022-04-01 10:14:50 +02:00
parent b1160a1327
commit 40b13acbb9
12 changed files with 754 additions and 144 deletions
@@ -207,7 +207,7 @@ export default {
})
},
addMember() {
if (this.$isInvalidEmail(this.email)) {
if (!this.$isValidEmail(this.email)) {
this.$refs.teamFolderForm.setErrors({
Email: this.$t('type_valid_email'),
})
@@ -158,7 +158,7 @@ export default {
})
},
addMember() {
if (this.$isInvalidEmail(this.email)) {
if (!this.$isValidEmail(this.email)) {
this.$refs.teamFolderForm.setErrors({
Email: this.$t('type_valid_email'),
})
+2 -2
View File
@@ -21,8 +21,8 @@ const ValidatorHelpers = {
return totalUniqueEmails.length >= limit.total && !totalUniqueEmails.includes(email)
}
Vue.prototype.$isInvalidEmail = function (email) {
return email.match(/^[^\s@]+@[^\s@]+\.[^\s@]+$/) === null
Vue.prototype.$isValidEmail = function (email) {
return email.match(/^[^\s@]+@[^\s@]+\.[^\s@]+$/) !== null
}
Vue.prototype.$reCaptchaToken = async function (action) {
+2 -2
View File
@@ -35,9 +35,9 @@ const routesMaintenance = [
},
{
name: 'EnvironmentSetup',
path: '/setup-wizard/environment-setup',
path: '/setup-wizard/environment',
component: () =>
import(/* webpackChunkName: "chunks/environment-setup" */ '../views/SetupWizard/EnvironmentSetup'),
import(/* webpackChunkName: "chunks/environment" */ '../views/SetupWizard/EnvironmentSetup'),
meta: {
requiresAuth: false,
},
+4 -2
View File
@@ -1,5 +1,3 @@
import i18n from '../../i18n'
const defaultState = {
mailEncryptionList: [
{
@@ -10,6 +8,10 @@ const defaultState = {
label: 'SSL',
value: 'ssl',
},
{
label: 'None',
value: '',
},
],
mailDriverList: [
{
@@ -278,7 +278,7 @@
<AppInputText title="Mail Username" :error="errors[0]">
<input
class="focus-border-theme input-dark"
v-model="smtp.username"
v-model.lazy="smtp.username"
placeholder="Type your mail username"
type="text"
:class="{ '!border-rose-600': errors[0] }"
@@ -302,7 +302,6 @@
tag="div"
mode="passive"
name="Mail Encryption"
rules="required"
v-slot="{ errors }"
>
<AppInputText title="Mail Encryption" :error="errors[0]">
@@ -314,6 +313,18 @@
:isError="errors[0]"
/>
</AppInputText>
</ValidationProvider>
<ValidationProvider v-if="shouldSetSMTPEmail" tag="div" mode="passive" name="Mail From Address" rules="required|email" v-slot="{ errors }">
<AppInputText title="Mail" :error="errors[0]">
<input
class="focus-border-theme input-dark"
v-model.trim="smtp.email"
placeholder="Type your mail from address"
type="text"
:class="{ '!border-rose-600': errors[0] }"
/>
</AppInputText>
</ValidationProvider>
</div>
@@ -413,7 +424,7 @@
</ValidationProvider>
<ValidationProvider tag="div" mode="passive" name="Session Token" v-slot="{ errors }">
<AppInputText title="Session Token" :error="errors[0]">
<AppInputText title="Session Token (optional)" :error="errors[0]">
<input
class="focus-border-theme input-dark"
v-model="ses.session_token"
@@ -471,6 +482,14 @@ export default {
InfoBox,
},
watch: {
'smtp.username': function (val) {
if (this.$isValidEmail(val)) {
this.smtp.email = undefined
this.shouldSetSMTPEmail = false
} else {
this.shouldSetSMTPEmail = true
}
},
'storage.driver': function () {
this.storage.region = undefined
},
@@ -500,6 +519,7 @@ export default {
},
data() {
return {
shouldSetSMTPEmail: false,
isLoading: false,
isSendingEmailForm: false,
isSendingStorageForm: false,
@@ -808,6 +828,7 @@ export default {
smtp: {
host: undefined,
port: undefined,
email: undefined,
username: undefined,
password: undefined,
encryption: undefined,
@@ -191,7 +191,7 @@
<AppInputText title="Mail Username" :error="errors[0]">
<input
class="focus-border-theme input-dark"
v-model="smtp.username"
v-model.lazy="smtp.username"
placeholder="Type your mail username"
type="text"
:class="{ '!border-rose-600': errors[0] }"
@@ -221,10 +221,9 @@
tag="div"
mode="passive"
name="Mail Encryption"
rules="required"
v-slot="{ errors }"
>
<AppInputText title="Mail Encryption" :error="errors[0]" :is-last="true">
<AppInputText title="Mail Encryption" :error="errors[0]" :is-last="! shouldSetSMTPEmail">
<SelectInput
v-model="smtp.encryption"
:default="smtp.encryption"
@@ -233,6 +232,25 @@
:isError="errors[0]"
/>
</AppInputText>
</ValidationProvider>
<ValidationProvider
v-if="shouldSetSMTPEmail"
tag="div"
mode="passive"
name="Mail From Address"
rules="required|email"
v-slot="{ errors }"
>
<AppInputText title="Mail" :error="errors[0]" :is-last="true">
<input
class="focus-border-theme input-dark"
v-model.lazy="smtp.email"
placeholder="Type your mail from address"
type="text"
:class="{ '!border-rose-600': errors[0] }"
/>
</AppInputText>
</ValidationProvider>
</div>
@@ -350,7 +368,7 @@
</ValidationProvider>
<ValidationProvider tag="div" mode="passive" name="Session Token" v-slot="{ errors }">
<AppInputText title="Session Token" :error="errors[0]" :is-last="true">
<AppInputText title="Session Token (optional)" :error="errors[0]" :is-last="true">
<input
class="focus-border-theme input-dark"
v-model="ses.session_token"
@@ -525,6 +543,14 @@ export default {
Headline,
},
watch: {
'smtp.username': function (val) {
if (this.$isValidEmail(val)) {
this.smtp.email = undefined
this.shouldSetSMTPEmail = false
} else {
this.shouldSetSMTPEmail = true
}
},
'storage.driver': function () {
this.storage.region = ''
},
@@ -554,7 +580,8 @@ export default {
},
data() {
return {
isError: false,
shouldSetSMTPEmail: false,
isError: false,
isLoading: false,
environment: 'production',
environmentSetupList: [
@@ -819,7 +846,8 @@ export default {
smtp: {
host: undefined,
port: undefined,
username: undefined,
email: undefined,
username: undefined,
password: undefined,
encryption: undefined,
},
@@ -936,6 +964,8 @@ export default {
beforeMount() {
if (this.$root.$data.config.isSetupWizardDebug) {
this.mailDriver = 'smtp'
this.environment = 'local'
this.storage.driver = 'local'
this.smtp = {
host: 'test.mail.com',
@@ -944,16 +974,6 @@ export default {
password: 'root',
encryption: 'ssl',
}
this.environment = 'local'
this.storage.driver = 'local'
//this.storage.key = '51oLNVBaNKcxHG0lFucxBbJyhxmTwmF3WnzVLRqMZj0'
//this.storage.secret = 'sC1YuKsbWv7MdWugb9ZsYBqv2QZJ+QOuHZHEddOsAao'
//this.storage.endpoint = 'https://nyc3.digitaloceanspaces.com'
//this.storage.bucket = 'cloud'
//this.storage.region = 'nyc3'
setTimeout(() => (this.storage.region = 'nyc3'), 100)
}
},
created() {