diff --git a/frontend/src/api/account.js b/frontend/src/api/account.js index a3c2f17a5..e194857ce 100644 --- a/frontend/src/api/account.js +++ b/frontend/src/api/account.js @@ -6,8 +6,33 @@ export default { getMe () { return repository.get(`/${resource}/me/`) }, + checkPassword (value) { + return repository.post(`/${resource}/me/password/`, { password: value }) + }, verifyTFACode (code) { const payload = { code } return repository.post(`${resource}/tfa/verify/`, payload) + }, + startTFASetup () { + return repository.post(`${resource}/tfa/setup/`) + }, + getQRCodeForTFASetup () { + return repository.get(`${resource}/tfa/setup/qr_code/`) + }, + finalizeTFASetup (pinCode) { + const payload = { pin_code: pinCode } + return repository.post(`${resource}/tfa/setup/check/`, payload) + }, + disableTFA () { + return repository.post(`${resource}/tfa/disable/`) + }, + resetRecoveryCodes () { + return repository.post(`${resource}/tfa/reset_codes/`) + }, + getForward () { + return repository.get(`${resource}/forward/`) + }, + setForward (data) { + return repository.post(`${resource}/forward/`, data) } } diff --git a/frontend/src/api/languages.js b/frontend/src/api/languages.js new file mode 100644 index 000000000..0c45bf824 --- /dev/null +++ b/frontend/src/api/languages.js @@ -0,0 +1,9 @@ +import repository from './repository' + +const resource = 'languages' + +export default { + getAll () { + return repository.get(`/${resource}/`) + } +} diff --git a/frontend/src/components/domains/DomainDNSConfig.vue b/frontend/src/components/domains/DomainDNSConfig.vue index 30ef13b89..363f932ee 100644 --- a/frontend/src/components/domains/DomainDNSConfig.vue +++ b/frontend/src/components/domains/DomainDNSConfig.vue @@ -31,6 +31,19 @@ mail.{{ domain.name }}. IN A [IP address of your Modoboa serv @ IN TXT "v=spf1 mx ~all" + +
DKIM
+
+{{ domain.dkim_key_selector }}._domain_key.{{ domain.name }}. IN TXT (
+  {{ splitKey(`v=DKIM1;k=rsa;p=${domain.dkim_public_key}`) }}
+
dense >
Auto configuration
-
-    autoconfig.{{ domain.name }}. IN CNAME [hostname of your automx server]
+      
+autoconfig.{{ domain.name }}. IN CNAME [hostname of your automx server]
 autodiscover.{{ domain.name }}. IN CNAME [hostname of your automx server]
@@ -70,6 +83,19 @@ export default { methods: { close () { this.$emit('close') + }, + splitKey (value) { + let key = value + const result = [] + while (key.length > 0) { + if (key.length > 74) { + result.push(` "${key.substring(0, 74)}"`) + key = key.substring(74) + } else { + result.push(` "${key}"`) + } + } + return result.join('\n') } } } diff --git a/frontend/src/components/identities/AccountCreationForm.vue b/frontend/src/components/identities/AccountCreationForm.vue index 507f2dc8d..e22fb23c4 100644 --- a/frontend/src/components/identities/AccountCreationForm.vue +++ b/frontend/src/components/identities/AccountCreationForm.vue @@ -173,7 +173,11 @@ export default { this.$emit('close') }, submit () { - accounts.create(this.account).then(resp => { + const data = { ...this.account } + if (this.account.role === 'SuperAdmins' && this.account.username.indexOf('@') === -1) { + delete data.mailbox + } + accounts.create(data).then(resp => { bus.$emit('notification', { msg: this.$gettext('Account created') }) this.$emit('created') this.close() diff --git a/frontend/src/components/identities/AccountForm.vue b/frontend/src/components/identities/AccountForm.vue index f54ced640..fbc056284 100644 --- a/frontend/src/components/identities/AccountForm.vue +++ b/frontend/src/components/identities/AccountForm.vue @@ -139,7 +139,7 @@ export default { methods: { async save () { if (this.$refs.generalForm !== undefined) { - const valid = await this.$refs.generalForm.$refs.observer.validate() + const valid = await this.$refs.generalForm.validateForm() if (!valid) { return } @@ -178,7 +178,7 @@ export default { account: { handler: function (val) { if (val) { - this.editedAccount = JSON.parse(JSON.stringify(val)) + this.editedAccount = { ...val } delete this.editedAccount.domains if (this.editedAccount.mailbox === null) { this.editedAccount.mailbox = {} diff --git a/frontend/src/components/identities/AccountGeneralForm.vue b/frontend/src/components/identities/AccountGeneralForm.vue index d3344ef2d..c6fc808b9 100644 --- a/frontend/src/components/identities/AccountGeneralForm.vue +++ b/frontend/src/components/identities/AccountGeneralForm.vue @@ -3,7 +3,6 @@ -
- - -
- - - - - - - - + + + diff --git a/frontend/src/components/layout/Navbar.vue b/frontend/src/components/layout/Navbar.vue index 6923b709b..cff2f31d4 100644 --- a/frontend/src/components/layout/Navbar.vue +++ b/frontend/src/components/layout/Navbar.vue @@ -1,9 +1,9 @@