From 4b73d27475ba0f6fbccd5c90920d96d4cf3ee52c Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Tue, 6 Jul 2021 16:16:36 +0200 Subject: [PATCH] Various frontend fixes. --- frontend/locale/en/LC_MESSAGES/app.po | 68 +++++----- frontend/locale/fr/LC_MESSAGES/app.po | 68 +++++----- .../components/domains/DomainAliasForm.vue | 5 +- .../components/domains/DomainAliasList.vue | 123 ------------------ .../src/components/domains/DomainList.vue | 8 ++ frontend/src/components/layout/Navbar.vue | 2 +- .../components/parameters/ParametersForm.vue | 2 +- .../src/components/tools/CreationForm.vue | 4 +- frontend/src/store/modules/domains.js | 46 +------ frontend/src/translations.json | 2 +- modoboa/admin/api/v2/serializers.py | 2 +- modoboa/admin/lib.py | 17 ++- 12 files changed, 105 insertions(+), 242 deletions(-) delete mode 100644 frontend/src/components/domains/DomainAliasList.vue diff --git a/frontend/locale/en/LC_MESSAGES/app.po b/frontend/locale/en/LC_MESSAGES/app.po index 3e6b58a43..edb11e835 100644 --- a/frontend/locale/en/LC_MESSAGES/app.po +++ b/frontend/locale/en/LC_MESSAGES/app.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-07-01 17:06+0200\n" +"POT-Creation-Date: 2021-07-06 16:14+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" "Language: en\n" @@ -57,7 +57,7 @@ msgstr "" #: src/components/domains/DomainList.vue:34 #: src/components/identities/IdentityList.vue:19 -#: src/components/domains/DomainList.vue:156 +#: src/components/domains/DomainList.vue:157 #: src/components/identities/IdentityList.vue:86 msgid "Actions" msgstr "" @@ -109,7 +109,7 @@ msgstr "" #: src/components/domains/AdministratorList.vue:5 #: src/components/domains/DomainList.vue:24 -#: src/components/domains/DomainList.vue:146 +#: src/components/domains/DomainList.vue:147 msgid "Administrators" msgstr "" @@ -146,7 +146,7 @@ msgstr "" #: src/components/identities/AccountCreationForm.vue:62 #: src/components/identities/AccountCreationForm.vue:65 #: src/components/identities/AccountCreationForm.vue:93 -#: src/components/domains/DomainList.vue:152 +#: src/components/domains/DomainList.vue:153 #: src/components/identities/AccountCreationForm.vue:112 #: src/components/identities/AccountCreationForm.vue:115 #: src/components/identities/AccountCreationForm.vue:143 @@ -158,7 +158,7 @@ msgid "Apply" msgstr "" #: src/components/layout/Navbar.vue:56 src/views/logs/AuditTrail.vue:3 -#: src/components/layout/Navbar.vue:162 +#: src/components/layout/Navbar.vue:168 msgid "Audit trail" msgstr "" @@ -270,7 +270,7 @@ msgstr "" msgid "Daily sending limit" msgstr "" -#: src/components/layout/Navbar.vue:33 src/components/layout/Navbar.vue:139 +#: src/components/layout/Navbar.vue:33 src/components/layout/Navbar.vue:145 msgid "Dashboard" msgstr "" @@ -301,7 +301,7 @@ msgstr "" #: src/components/domains/DomainList.vue:26 #: src/components/identities/IdentityList.vue:89 #: src/components/identities/IdentityList.vue:92 -#: src/components/domains/DomainList.vue:148 +#: src/components/domains/DomainList.vue:149 #: src/components/identities/IdentityList.vue:156 #: src/components/identities/IdentityList.vue:159 msgid "Delete" @@ -376,7 +376,7 @@ msgid "DNS configuration help" msgstr "" #: src/components/domains/DomainList.vue:31 -#: src/components/domains/DomainList.vue:153 +#: src/components/domains/DomainList.vue:154 msgid "DNS status" msgstr "" @@ -413,8 +413,8 @@ msgstr "" msgid "Domain alias deleted" msgstr "" -#: src/components/domains/DomainAliasForm.vue:58 -#: src/components/domains/DomainAliasForm.vue:131 +#: src/components/domains/DomainAliasForm.vue:59 +#: src/components/domains/DomainAliasForm.vue:132 msgid "Domain alias updated" msgstr "" @@ -429,7 +429,7 @@ msgid "Domain default value" msgstr "" #: src/components/domains/DomainList.vue:75 -#: src/components/domains/DomainList.vue:197 +#: src/components/domains/DomainList.vue:198 msgid "Domain deleted" msgstr "" @@ -448,14 +448,14 @@ msgid "domain's default value" msgstr "" #: src/components/layout/Navbar.vue:39 src/views/domains/Domains.vue:3 -#: src/components/layout/Navbar.vue:145 +#: src/components/layout/Navbar.vue:151 msgid "Domains" msgstr "" #: src/components/domains/DomainList.vue:25 #: src/components/identities/IdentityList.vue:88 #: src/components/identities/IdentityList.vue:91 -#: src/components/domains/DomainList.vue:147 +#: src/components/domains/DomainList.vue:148 #: src/components/identities/IdentityList.vue:155 #: src/components/identities/IdentityList.vue:158 msgid "Edit" @@ -602,7 +602,7 @@ msgid "Identification" msgstr "" #: src/components/layout/Navbar.vue:45 src/views/identities/Identities.vue:3 -#: src/components/layout/Navbar.vue:151 +#: src/components/layout/Navbar.vue:157 msgid "Identities" msgstr "" @@ -661,11 +661,11 @@ msgid "Logger" msgstr "" #: src/components/layout/Navbar.vue:77 src/components/layout/Topbar.vue:6 -#: src/components/layout/Navbar.vue:183 src/components/layout/Topbar.vue:53 +#: src/components/layout/Navbar.vue:189 src/components/layout/Topbar.vue:53 msgid "Logout" msgstr "" -#: src/components/layout/Navbar.vue:52 src/components/layout/Navbar.vue:158 +#: src/components/layout/Navbar.vue:52 src/components/layout/Navbar.vue:164 msgid "Logs" msgstr "" @@ -702,7 +702,7 @@ msgstr "" msgid "messages" msgstr "" -#: src/components/layout/Navbar.vue:61 src/components/layout/Navbar.vue:167 +#: src/components/layout/Navbar.vue:61 src/components/layout/Navbar.vue:173 msgid "Messages" msgstr "" @@ -729,7 +729,7 @@ msgstr "" #: src/components/domains/DomainCreationForm.vue:71 #: src/components/domains/AdministratorList.vue:87 #: src/components/domains/DNSDetail.vue:131 -#: src/components/domains/DomainList.vue:151 +#: src/components/domains/DomainList.vue:152 #: src/components/domains/DomainAliasForm.vue:13 #: src/components/identities/IdentityList.vue:83 msgid "Name" @@ -767,7 +767,9 @@ msgstr "" #: src/components/domains/DomainList.vue:66 #: src/components/identities/IdentityList.vue:37 #: src/components/identities/IdentityList.vue:58 -#: src/components/domains/DomainList.vue:188 +#: src/components/tools/CreationForm.vue:30 +#: src/components/domains/DomainList.vue:189 +#: src/components/tools/CreationForm.vue:103 #: src/components/identities/IdentityList.vue:104 #: src/components/identities/IdentityList.vue:125 msgid "No" @@ -800,20 +802,11 @@ msgstr "" msgid "Options" msgstr "" -#: src/components/layout/Navbar.vue:69 src/components/layout/Navbar.vue:175 -msgid "Parameters" -msgstr "" - #: src/components/parameters/ParametersForm.vue:66 #: src/components/parameters/ParametersForm.vue:143 msgid "Parameters updated" msgstr "" -#: src/components/parameters/ParametersForm.vue:19 -#: src/components/parameters/ParametersForm.vue:96 -msgid "Parameters: " -msgstr "" - #: src/components/identities/AccountGeneralForm.vue:103 src/views/Login.vue:13 #: src/components/identities/AccountGeneralForm.vue:53 msgid "Password" @@ -854,7 +847,7 @@ msgstr "" #: src/components/identities/AccountCreationForm.vue:50 #: src/components/identities/AccountMailboxForm.vue:14 #: src/components/domains/DomainCreationForm.vue:86 -#: src/components/domains/DomainList.vue:155 +#: src/components/domains/DomainList.vue:156 #: src/components/identities/AccountMailboxForm.vue:3 #: src/components/identities/AccountCreationForm.vue:100 msgid "Quota" @@ -946,7 +939,7 @@ msgid "Select an account" msgstr "" #: src/components/domains/DomainList.vue:32 -#: src/components/domains/DomainList.vue:154 +#: src/components/domains/DomainList.vue:155 msgid "Sending limit" msgstr "" @@ -954,6 +947,15 @@ msgstr "" msgid "Sending limit:" msgstr "" +#: src/components/layout/Navbar.vue:69 src/components/layout/Navbar.vue:181 +msgid "Settings" +msgstr "" + +#: src/components/parameters/ParametersForm.vue:19 +#: src/components/parameters/ParametersForm.vue:96 +msgid "Settings: " +msgstr "" + #: src/components/domains/DNSDetail.vue:66 msgid "Show key" msgstr "" @@ -1075,7 +1077,7 @@ msgstr "" #: src/components/identities/IdentityList.vue:30 #: src/components/identities/IdentityList.vue:51 #: src/components/tools/CreationForm.vue:25 -#: src/components/domains/DomainList.vue:181 +#: src/components/domains/DomainList.vue:182 #: src/components/tools/CreationForm.vue:98 #: src/components/identities/IdentityList.vue:97 #: src/components/identities/IdentityList.vue:118 @@ -1108,7 +1110,9 @@ msgstr "" #: src/components/domains/DomainList.vue:67 #: src/components/identities/IdentityList.vue:38 #: src/components/identities/IdentityList.vue:59 -#: src/components/domains/DomainList.vue:189 +#: src/components/tools/CreationForm.vue:29 +#: src/components/domains/DomainList.vue:190 +#: src/components/tools/CreationForm.vue:102 #: src/components/identities/IdentityList.vue:105 #: src/components/identities/IdentityList.vue:126 msgid "Yes" diff --git a/frontend/locale/fr/LC_MESSAGES/app.po b/frontend/locale/fr/LC_MESSAGES/app.po index 5cdde3762..4e62fdc7f 100644 --- a/frontend/locale/fr/LC_MESSAGES/app.po +++ b/frontend/locale/fr/LC_MESSAGES/app.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Modoboa 0.1.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-07-01 17:06+0200\n" +"POT-Creation-Date: 2021-07-06 16:14+0200\n" "PO-Revision-Date: 2021-07-01 16:15+0200\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -62,7 +62,7 @@ msgstr "Compte mis à jour" #: src/components/domains/DomainList.vue:34 #: src/components/identities/IdentityList.vue:19 -#: src/components/domains/DomainList.vue:156 +#: src/components/domains/DomainList.vue:157 #: src/components/identities/IdentityList.vue:86 msgid "Actions" msgstr "Actions" @@ -114,7 +114,7 @@ msgstr "" #: src/components/domains/AdministratorList.vue:5 #: src/components/domains/DomainList.vue:24 -#: src/components/domains/DomainList.vue:146 +#: src/components/domains/DomainList.vue:147 msgid "Administrators" msgstr "Administrateurs" @@ -151,7 +151,7 @@ msgstr "" #: src/components/identities/AccountCreationForm.vue:62 #: src/components/identities/AccountCreationForm.vue:65 #: src/components/identities/AccountCreationForm.vue:93 -#: src/components/domains/DomainList.vue:152 +#: src/components/domains/DomainList.vue:153 #: src/components/identities/AccountCreationForm.vue:112 #: src/components/identities/AccountCreationForm.vue:115 #: src/components/identities/AccountCreationForm.vue:143 @@ -163,7 +163,7 @@ msgid "Apply" msgstr "Appliquer" #: src/components/layout/Navbar.vue:56 src/views/logs/AuditTrail.vue:3 -#: src/components/layout/Navbar.vue:162 +#: src/components/layout/Navbar.vue:168 msgid "Audit trail" msgstr "" @@ -275,7 +275,7 @@ msgstr "" msgid "Daily sending limit" msgstr "" -#: src/components/layout/Navbar.vue:33 src/components/layout/Navbar.vue:139 +#: src/components/layout/Navbar.vue:33 src/components/layout/Navbar.vue:145 msgid "Dashboard" msgstr "Tableau de bord" @@ -306,7 +306,7 @@ msgstr "Quota par défaut appliqué aux boîtes aux lettres. Peut être exprimé #: src/components/domains/DomainList.vue:26 #: src/components/identities/IdentityList.vue:89 #: src/components/identities/IdentityList.vue:92 -#: src/components/domains/DomainList.vue:148 +#: src/components/domains/DomainList.vue:149 #: src/components/identities/IdentityList.vue:156 #: src/components/identities/IdentityList.vue:159 msgid "Delete" @@ -381,7 +381,7 @@ msgid "DNS configuration help" msgstr "" #: src/components/domains/DomainList.vue:31 -#: src/components/domains/DomainList.vue:153 +#: src/components/domains/DomainList.vue:154 msgid "DNS status" msgstr "Statut DNS" @@ -418,8 +418,8 @@ msgstr "" msgid "Domain alias deleted" msgstr "" -#: src/components/domains/DomainAliasForm.vue:58 -#: src/components/domains/DomainAliasForm.vue:131 +#: src/components/domains/DomainAliasForm.vue:59 +#: src/components/domains/DomainAliasForm.vue:132 msgid "Domain alias updated" msgstr "" @@ -434,7 +434,7 @@ msgid "Domain default value" msgstr "" #: src/components/domains/DomainList.vue:75 -#: src/components/domains/DomainList.vue:197 +#: src/components/domains/DomainList.vue:198 msgid "Domain deleted" msgstr "" @@ -453,14 +453,14 @@ msgid "domain's default value" msgstr "" #: src/components/layout/Navbar.vue:39 src/views/domains/Domains.vue:3 -#: src/components/layout/Navbar.vue:145 +#: src/components/layout/Navbar.vue:151 msgid "Domains" msgstr "Domaines" #: src/components/domains/DomainList.vue:25 #: src/components/identities/IdentityList.vue:88 #: src/components/identities/IdentityList.vue:91 -#: src/components/domains/DomainList.vue:147 +#: src/components/domains/DomainList.vue:148 #: src/components/identities/IdentityList.vue:155 #: src/components/identities/IdentityList.vue:158 msgid "Edit" @@ -607,7 +607,7 @@ msgid "Identification" msgstr "" #: src/components/layout/Navbar.vue:45 src/views/identities/Identities.vue:3 -#: src/components/layout/Navbar.vue:151 +#: src/components/layout/Navbar.vue:157 msgid "Identities" msgstr "Identités" @@ -666,11 +666,11 @@ msgid "Logger" msgstr "Logger" #: src/components/layout/Navbar.vue:77 src/components/layout/Topbar.vue:6 -#: src/components/layout/Navbar.vue:183 src/components/layout/Topbar.vue:53 +#: src/components/layout/Navbar.vue:189 src/components/layout/Topbar.vue:53 msgid "Logout" msgstr "Déconnexion" -#: src/components/layout/Navbar.vue:52 src/components/layout/Navbar.vue:158 +#: src/components/layout/Navbar.vue:52 src/components/layout/Navbar.vue:164 msgid "Logs" msgstr "Journaux" @@ -707,7 +707,7 @@ msgstr "Limite d'envoi des messages" msgid "messages" msgstr "" -#: src/components/layout/Navbar.vue:61 src/components/layout/Navbar.vue:167 +#: src/components/layout/Navbar.vue:61 src/components/layout/Navbar.vue:173 msgid "Messages" msgstr "" @@ -734,7 +734,7 @@ msgstr "" #: src/components/domains/DomainCreationForm.vue:71 #: src/components/domains/AdministratorList.vue:87 #: src/components/domains/DNSDetail.vue:131 -#: src/components/domains/DomainList.vue:151 +#: src/components/domains/DomainList.vue:152 #: src/components/domains/DomainAliasForm.vue:13 #: src/components/identities/IdentityList.vue:83 msgid "Name" @@ -772,7 +772,9 @@ msgstr "Suivant" #: src/components/domains/DomainList.vue:66 #: src/components/identities/IdentityList.vue:37 #: src/components/identities/IdentityList.vue:58 -#: src/components/domains/DomainList.vue:188 +#: src/components/tools/CreationForm.vue:30 +#: src/components/domains/DomainList.vue:189 +#: src/components/tools/CreationForm.vue:103 #: src/components/identities/IdentityList.vue:104 #: src/components/identities/IdentityList.vue:125 msgid "No" @@ -805,20 +807,11 @@ msgstr "" msgid "Options" msgstr "Options" -#: src/components/layout/Navbar.vue:69 src/components/layout/Navbar.vue:175 -msgid "Parameters" -msgstr "Paramètres" - #: src/components/parameters/ParametersForm.vue:66 #: src/components/parameters/ParametersForm.vue:143 msgid "Parameters updated" msgstr "" -#: src/components/parameters/ParametersForm.vue:19 -#: src/components/parameters/ParametersForm.vue:96 -msgid "Parameters: " -msgstr "" - #: src/components/identities/AccountGeneralForm.vue:103 src/views/Login.vue:13 #: src/components/identities/AccountGeneralForm.vue:53 msgid "Password" @@ -859,7 +852,7 @@ msgstr "ID de file" #: src/components/identities/AccountCreationForm.vue:50 #: src/components/identities/AccountMailboxForm.vue:14 #: src/components/domains/DomainCreationForm.vue:86 -#: src/components/domains/DomainList.vue:155 +#: src/components/domains/DomainList.vue:156 #: src/components/identities/AccountMailboxForm.vue:3 #: src/components/identities/AccountCreationForm.vue:100 msgid "Quota" @@ -951,7 +944,7 @@ msgid "Select an account" msgstr "" #: src/components/domains/DomainList.vue:32 -#: src/components/domains/DomainList.vue:154 +#: src/components/domains/DomainList.vue:155 msgid "Sending limit" msgstr "" @@ -959,6 +952,15 @@ msgstr "" msgid "Sending limit:" msgstr "" +#: src/components/layout/Navbar.vue:69 src/components/layout/Navbar.vue:181 +msgid "Settings" +msgstr "Configuration" + +#: src/components/parameters/ParametersForm.vue:19 +#: src/components/parameters/ParametersForm.vue:96 +msgid "Settings: " +msgstr "" + #: src/components/domains/DNSDetail.vue:66 msgid "Show key" msgstr "Afficher la clé" @@ -1080,7 +1082,7 @@ msgstr "" #: src/components/identities/IdentityList.vue:30 #: src/components/identities/IdentityList.vue:51 #: src/components/tools/CreationForm.vue:25 -#: src/components/domains/DomainList.vue:181 +#: src/components/domains/DomainList.vue:182 #: src/components/tools/CreationForm.vue:98 #: src/components/identities/IdentityList.vue:97 #: src/components/identities/IdentityList.vue:118 @@ -1113,7 +1115,9 @@ msgstr "Année" #: src/components/domains/DomainList.vue:67 #: src/components/identities/IdentityList.vue:38 #: src/components/identities/IdentityList.vue:59 -#: src/components/domains/DomainList.vue:189 +#: src/components/tools/CreationForm.vue:29 +#: src/components/domains/DomainList.vue:190 +#: src/components/tools/CreationForm.vue:102 #: src/components/identities/IdentityList.vue:105 #: src/components/identities/IdentityList.vue:126 msgid "Yes" diff --git a/frontend/src/components/domains/DomainAliasForm.vue b/frontend/src/components/domains/DomainAliasForm.vue index 0ccf82d77..791ab59bb 100644 --- a/frontend/src/components/domains/DomainAliasForm.vue +++ b/frontend/src/components/domains/DomainAliasForm.vue @@ -120,14 +120,15 @@ export default { } try { if (!this.form.pk) { - await this.$store.dispatch('domains/addDomainAlias', this.form).then(resp => { + await domains.createDomainAlias(this.form).then(resp => { bus.$emit('notification', { msg: this.$gettext('Domain alias created') }) + this.$emit('alias-created', resp.data) this.close() }) } else { const data = JSON.parse(JSON.stringify(this.form)) data.target = data.target.pk - await this.$store.dispatch('domains/updateDomainAlias', { id: this.form.pk, data: data }).then(resp => { + await domains.updateDomainAlias(this.form.pk, data).then(resp => { bus.$emit('notification', { msg: this.$gettext('Domain alias updated') }) this.close() }) diff --git a/frontend/src/components/domains/DomainAliasList.vue b/frontend/src/components/domains/DomainAliasList.vue deleted file mode 100644 index 62e5dacae..000000000 --- a/frontend/src/components/domains/DomainAliasList.vue +++ /dev/null @@ -1,123 +0,0 @@ - - - diff --git a/frontend/src/components/domains/DomainList.vue b/frontend/src/components/domains/DomainList.vue index 858b50692..8890ecaf4 100644 --- a/frontend/src/components/domains/DomainList.vue +++ b/frontend/src/components/domains/DomainList.vue @@ -103,6 +103,7 @@ @@ -198,11 +199,18 @@ export default { this.keepDomainFolder = false }) }, + domainAliasCreated (domainAlias) { + this.$store.dispatch('domains/getDomains') + }, domainAliasDeleted () { const newList = this.aliases[this.selectedDomain.name].filter(alias => { return alias.pk !== this.selectedDomainAlias.pk }) this.$set(this.aliases, this.selectedDomain.name, newList) + if (!newList.length) { + this.expanded = [] + } + this.$store.dispatch('domains/getDomains') this.closeDomainAliasForm() }, editDomain (domain) { diff --git a/frontend/src/components/layout/Navbar.vue b/frontend/src/components/layout/Navbar.vue index c33edfd8b..6923b709b 100644 --- a/frontend/src/components/layout/Navbar.vue +++ b/frontend/src/components/layout/Navbar.vue @@ -178,7 +178,7 @@ export default { }, { icon: 'mdi-cog', - text: this.$gettext('Parameters'), + text: this.$gettext('Settings'), children: [], roles: ['SuperAdmins'] } diff --git a/frontend/src/components/parameters/ParametersForm.vue b/frontend/src/components/parameters/ParametersForm.vue index 6b7261e17..ab2287024 100644 --- a/frontend/src/components/parameters/ParametersForm.vue +++ b/frontend/src/components/parameters/ParametersForm.vue @@ -93,7 +93,7 @@ export default { return result }, title () { - let result = this.$gettext('Parameters: ') + let result = this.$gettext('Settings: ') if (this.$route.params.app === 'core') { result += this.$gettext('General') } else if (this.$route.params.app === 'admin') { diff --git a/frontend/src/components/tools/CreationForm.vue b/frontend/src/components/tools/CreationForm.vue index e1f74c5c8..6bd380bae 100644 --- a/frontend/src/components/tools/CreationForm.vue +++ b/frontend/src/components/tools/CreationForm.vue @@ -98,7 +98,9 @@ export default { this.$gettext('Warning'), this.$gettext('If you close this form now, your modifications won\'t be saved. Do you confirm?'), { - color: 'error' + color: 'warning', + agreeLabel: this.$gettext('Yes'), + cancelLabel: this.$gettext('No') } ) if (!confirm) { diff --git a/frontend/src/store/modules/domains.js b/frontend/src/store/modules/domains.js index 82ed70a1d..f31642cfc 100644 --- a/frontend/src/store/modules/domains.js +++ b/frontend/src/store/modules/domains.js @@ -6,16 +6,11 @@ const SET_DOMAINS = 'SET_DOMAINS' const ADD_DOMAIN = 'ADD_DOMAIN' const UPDATE_DOMAIN = 'UPDATE_DOMAIN' const DELETE_DOMAIN = 'DELETE_DOMAIN' -const SET_DOMAIN_ALIASES = 'SET_DOMAIN_ALIASES' -const ADD_DOMAIN_ALIAS = 'ADD_DOMAIN_ALIAS' -const UPDATE_DOMAIN_ALIAS = 'UPDATE_DOMAIN_ALIAS' -const REMOVE_DOMAIN_ALIAS = 'REMOVE_DOMAIN_ALIAS' // initial state const state = { domainsLoaded: false, - domains: [], - domainAliases: [] + domains: [] } // getters @@ -28,8 +23,7 @@ const getters = { } } return null - }, - domainAliases: state => state.domainAliases + } } // actions @@ -58,26 +52,6 @@ const actions = { return domainApi.deleteDomain(id, data).then(resp => { commit(DELETE_DOMAIN, id) }) - }, - getDomainAliases ({ commit }) { - return Vue.prototype.$axios.get('/domainaliases/?expand=target').then(response => { - commit(SET_DOMAIN_ALIASES, response.data) - }) - }, - addDomainAlias ({ commit }, data) { - return domainApi.createDomainAlias(data).then(response => { - commit(ADD_DOMAIN_ALIAS, response.data) - }) - }, - updateDomainAlias ({ commit }, { id, data }) { - return domainApi.updateDomainAlias(id, data).then(response => { - commit(UPDATE_DOMAIN_ALIAS, response.data) - }) - }, - deleteDomainAlias ({ commit }, domainAliasId) { - return domainApi.deleteDomainAlias(domainAliasId).then(response => { - commit(REMOVE_DOMAIN_ALIAS, domainAliasId) - }) } } @@ -99,22 +73,6 @@ const mutations = { }, [DELETE_DOMAIN] (state, domainId) { state.domains = state.domains.filter(item => item.pk !== domainId) - }, - [SET_DOMAIN_ALIASES] (state, domainAliases) { - state.domainAliases = domainAliases - }, - [ADD_DOMAIN_ALIAS] (state, domainAlias) { - state.domainAliases.push(domainAlias) - }, - [UPDATE_DOMAIN_ALIAS] (state, domainAlias) { - state.domainAliases.filter((item, pos) => { - if (item.pk === domainAlias.pk) { - Vue.set(state.domainAliases, pos, domainAlias) - } - }) - }, - [REMOVE_DOMAIN_ALIAS] (state, domainAliasId) { - state.domainAliases = state.domainAliases.filter(item => item.pk !== domainAliasId) } } diff --git a/frontend/src/translations.json b/frontend/src/translations.json index 3b9ece6a6..e3ca29e90 100644 --- a/frontend/src/translations.json +++ b/frontend/src/translations.json @@ -1 +1 @@ -{"en":{},"fr":{"(disabled)":"(désactivé)","Account":"Compte","Account created":"Compte créé","Account updated":"Compte mis à jour","Actions":"Actions","Add":"Ajouter","Address":"Adresse","Administration":"Administration","Administrators":"Administrateurs","Alias":"Alias","Alias created":"Alias créé","Aliases":"Alias","Apply":"Appliquer","Authentication":"Authentification","Auto configuration":"Configuration automatique","Close":"Fermer","Confirmation":"Confirmation","Create a domain administrator":"Créer un administrateur de domaine","Create a mailbox for the administrator.":"Créer une boite aux lettres pour l'administrateur","Create aliases":"Créer des alias","Creation date":"Date de création","Dashboard":"Tableau de bord","Date":"Date","Day":"Jour","Default mailbox quota":"Quota par défaut pour une boîte aux lettres","Default quota applied to mailboxes. Can be expressed in KB, MB (default) or GB. A value of 0 means no quota.":"Quota par défaut appliqué aux boîtes aux lettres. Peut être exprimé en Ko, Mo (défaut) ou Go. Une valeur à 0 signifie pas de quota.","Description":"Description","Disabled":"Désactivés","DKIM key":"Clé DKIM","DNS":"DNS","DNS status":"Statut DNS","Domain":"Domaine","Domain administrator":"Administrateur de domaine","Domain created":"Domaine créé","Domains":"Domaines","Email address":"Adresse email","Enable DKIM signing":"Activer la signature DKIM","Enable DNS checks":"Activer les tests DNS","Enabled":"Activé","Expire at":"Expire le","Forgot password?":"Mot de passe oublié ?","From":"De","General":"Général","Generate a random password for the administrator.":"Générer un mot de passe aléatoire pour cet administrateur.","hostname of your automx server":"Nom d'hôte de votre serveur automx","Identities":"Identités","IP address of your Modoboa server":"Adresse IP de votre serveur Modoboa","Last modification date":"Date de dernière modification","Level":"Niveau","Logger":"Logger","Logout":"Déconnexion","Logs":"Journaux","Mailbox":"Boîte aux lettres","Mailboxes":"Boites","Message":"Message","Message sending limit":"Limite d'envoi des messages","Month":"Mois","Name":"Nom","New account":"Nouveau compte","New alias":"Nouvel alias","New domain":"Nouveau domaine","Next":"Suivant","No":"Non","Not generated":"Non générée","Options":"Options","Parameters":"Paramètres","Password":"Mot de passe","Queue ID":"ID de file","Quota":"Quota","Quota for this mailbox, can be expressed in KB, MB (default) or GB. Define a custom value or use domain's default one. Leave empty to define an unlimited value (not allowed for domain administrators).":"Quota pour cette boite. Peut être exprimé en Ko, Mo (défaut) ou Go. Définir une valeur spécifique ou utiliser la valeur par défaut du domaine. Laisser vide pour définir une valeur illimitée (interdit pour les admins. de domaine).","Quota shared between mailboxes. Can be expressed in KB, MB (default) or GB. A value of 0 means no quota.":"Quota partagé entre les boîtes aux lettres. Peut être exprimé en Ko, Mo (défaut) ou Go. Une valeur à 0 signifie pas de quota.","Random address":"Adresse aléatoire","Random password":"Mot de passe aléatoire","Recipients":"Destinataires","Remember me":"Se souvenir de moi","Reseller":"Revendeur","Role":"Rôle","Save":"Enregistrer","Search":"Chercher","Show key":"Afficher la clé","Simple user":"Utilisateur simple","Status":"Statut","Summary":"Résumé","Super administrator":"Super administrateur","Tags":"Tags","To":"A","Type":"Type","Unknown":"Inconnu","unlimited":"illimité","Update":"Mettre à jour","Updated":"Mis à jour","Use domain default value":"Utiliser la valeur par défaut du domaine","Username":"Nom d'utilisateur","Week":"Semaine","Welcome to Modoboa":"Bienvenue dans Modoboa","With a mailbox":"Avec une boite aux lettres","Year":"Année","Yes":"Oui","This field is required":"Ce champ est requis"}} \ No newline at end of file +{"en":{},"fr":{"(disabled)":"(désactivé)","Account":"Compte","Account created":"Compte créé","Account updated":"Compte mis à jour","Actions":"Actions","Add":"Ajouter","Address":"Adresse","Administration":"Administration","Administrators":"Administrateurs","Alias":"Alias","Alias created":"Alias créé","Aliases":"Alias","Apply":"Appliquer","Authentication":"Authentification","Auto configuration":"Configuration automatique","Close":"Fermer","Confirmation":"Confirmation","Create a domain administrator":"Créer un administrateur de domaine","Create a mailbox for the administrator.":"Créer une boite aux lettres pour l'administrateur","Create aliases":"Créer des alias","Creation date":"Date de création","Dashboard":"Tableau de bord","Date":"Date","Day":"Jour","Default mailbox quota":"Quota par défaut pour une boîte aux lettres","Default quota applied to mailboxes. Can be expressed in KB, MB (default) or GB. A value of 0 means no quota.":"Quota par défaut appliqué aux boîtes aux lettres. Peut être exprimé en Ko, Mo (défaut) ou Go. Une valeur à 0 signifie pas de quota.","Description":"Description","Disabled":"Désactivés","DKIM key":"Clé DKIM","DNS":"DNS","DNS status":"Statut DNS","Domain":"Domaine","Domain administrator":"Administrateur de domaine","Domain created":"Domaine créé","Domains":"Domaines","Email address":"Adresse email","Enable DKIM signing":"Activer la signature DKIM","Enable DNS checks":"Activer les tests DNS","Enabled":"Activé","Expire at":"Expire le","Forgot password?":"Mot de passe oublié ?","From":"De","General":"Général","Generate a random password for the administrator.":"Générer un mot de passe aléatoire pour cet administrateur.","hostname of your automx server":"Nom d'hôte de votre serveur automx","Identities":"Identités","IP address of your Modoboa server":"Adresse IP de votre serveur Modoboa","Last modification date":"Date de dernière modification","Level":"Niveau","Logger":"Logger","Logout":"Déconnexion","Logs":"Journaux","Mailbox":"Boîte aux lettres","Mailboxes":"Boites","Message":"Message","Message sending limit":"Limite d'envoi des messages","Month":"Mois","Name":"Nom","New account":"Nouveau compte","New alias":"Nouvel alias","New domain":"Nouveau domaine","Next":"Suivant","No":"Non","Not generated":"Non générée","Options":"Options","Password":"Mot de passe","Queue ID":"ID de file","Quota":"Quota","Quota for this mailbox, can be expressed in KB, MB (default) or GB. Define a custom value or use domain's default one. Leave empty to define an unlimited value (not allowed for domain administrators).":"Quota pour cette boite. Peut être exprimé en Ko, Mo (défaut) ou Go. Définir une valeur spécifique ou utiliser la valeur par défaut du domaine. Laisser vide pour définir une valeur illimitée (interdit pour les admins. de domaine).","Quota shared between mailboxes. Can be expressed in KB, MB (default) or GB. A value of 0 means no quota.":"Quota partagé entre les boîtes aux lettres. Peut être exprimé en Ko, Mo (défaut) ou Go. Une valeur à 0 signifie pas de quota.","Random address":"Adresse aléatoire","Random password":"Mot de passe aléatoire","Recipients":"Destinataires","Remember me":"Se souvenir de moi","Reseller":"Revendeur","Role":"Rôle","Save":"Enregistrer","Search":"Chercher","Settings":"Configuration","Show key":"Afficher la clé","Simple user":"Utilisateur simple","Status":"Statut","Summary":"Résumé","Super administrator":"Super administrateur","Tags":"Tags","To":"A","Type":"Type","Unknown":"Inconnu","unlimited":"illimité","Update":"Mettre à jour","Updated":"Mis à jour","Use domain default value":"Utiliser la valeur par défaut du domaine","Username":"Nom d'utilisateur","Week":"Semaine","Welcome to Modoboa":"Bienvenue dans Modoboa","With a mailbox":"Avec une boite aux lettres","Year":"Année","Yes":"Oui","This field is required":"Ce champ est requis"}} \ No newline at end of file diff --git a/modoboa/admin/api/v2/serializers.py b/modoboa/admin/api/v2/serializers.py index 1b1c6dd25..7623a9fb8 100644 --- a/modoboa/admin/api/v2/serializers.py +++ b/modoboa/admin/api/v2/serializers.py @@ -18,7 +18,7 @@ from modoboa.lib import validators, web_utils from modoboa.lib.sysutils import exec_cmd from modoboa.parameters import tools as param_tools -from ... import constants, lib, models +from ... import constants, models class CreateDomainAdminSerializer(serializers.Serializer): diff --git a/modoboa/admin/lib.py b/modoboa/admin/lib.py index f1cd459c4..ca3db0764 100644 --- a/modoboa/admin/lib.py +++ b/modoboa/admin/lib.py @@ -10,11 +10,14 @@ from itertools import chain import dns.resolver from dns.name import IDNA_2008_UTS_46 -from django.contrib.contenttypes.models import ContentType +from django.core.exceptions import ValidationError from django.db.models import Q from django.utils.encoding import smart_text from django.utils.translation import ugettext as _ +from django.contrib.auth import password_validation +from django.contrib.contenttypes.models import ContentType + from modoboa.core import signals as core_signals from modoboa.core.models import User from modoboa.lib.exceptions import PermDeniedException @@ -254,6 +257,12 @@ def make_password(): length = int( param_tools.get_global_parameter("random_password_length", app="core") ) - return "".join( - random.SystemRandom().choice( - string.ascii_letters + string.digits) for _ in range(length)) + while True: + password = "".join( + random.SystemRandom().choice( + string.ascii_letters + string.digits) for _ in range(length)) + try: + password_validation.validate_password(password) + except ValidationError: + continue + return password