Various frontend fixes.

This commit is contained in:
Antoine Nguyen
2021-07-06 16:16:36 +02:00
parent f2761c41b4
commit 4b73d27475
12 changed files with 105 additions and 242 deletions
+36 -32
View File
@@ -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"
+36 -32
View File
@@ -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"
@@ -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()
})
@@ -1,123 +0,0 @@
<template>
<div>
<v-toolbar flat color="white">
<v-text-field
v-model="search"
append-icon="mdi-magnify"
label="Search"
single-line
hide-details
></v-text-field>
<v-spacer></v-spacer>
<v-btn class="mr-2" fab small>
<v-icon>mdi-file-import-outline</v-icon>
</v-btn>
<v-btn class="mr-2" fab small @click="exportList" title="Export data">
<v-icon>mdi-file-export-outline</v-icon>
</v-btn>
<v-btn fab small color="primary" @click="showForm = true">
<v-icon>mdi-plus</v-icon>
</v-btn>
</v-toolbar>
<v-data-table :headers="headers" :items="domainAliases" :search="search" class="elevation-1">
<template v-slot:item.actions="{ item }">
<v-btn icon small title="Edit this domain alias" @click="editDomainAlias(item)">
<v-icon>mdi-circle-edit-outline</v-icon>
</v-btn>
<v-btn icon small title="Remove" @click="confirmDelete(item)">
<v-icon>mdi-delete-outline</v-icon>
</v-btn>
</template>
<template v-slot:item.name="{ item }">
{{ item.name }}
</template>
<template v-slot:item.dns_status="{ }">
</template>
</v-data-table>
<confirm-dialog v-model="showConfirmDialog"
:message="deleteDomainMsg"
@confirm="deleteDomainAlias" />
<v-dialog v-model="showForm"
persistent
max-width="800px">
<domain-alias-form @close="closeForm" :domain-alias="selectedDomainAlias" />
</v-dialog>
</div>
</template>
<script>
import { mapGetters } from 'vuex'
import ConfirmDialog from '@/components/layout/ConfirmDialog'
import DomainAliasForm from '@/components/domains/DomainAliasForm'
export default {
components: {
ConfirmDialog,
DomainAliasForm
},
computed: mapGetters({
domainAliases: 'domains/domainAliases'
}),
data () {
return {
headers: [
{ text: '', value: 'actions', sortable: false },
{ text: 'Name', value: 'name' },
{ text: 'Target', value: 'target.name' },
{ text: 'DNS status', value: 'dns_status', sortable: false }
],
deleteDomainMsg: 'Confirm deletion?',
showConfirmDialog: false,
showForm: false,
search: '',
selectedDomainAlias: null
}
},
created () {
this.$store.dispatch('domains/getDomainAliases')
},
methods: {
closeForm () {
this.showForm = false
this.selectedDomainAlias = null
},
editDomainAlias (domainAlias) {
this.selectedDomainAlias = domainAlias
this.showForm = true
},
confirmDelete (domainAlias) {
this.selectedDomainAlias = domainAlias
this.showConfirmDialog = true
},
deleteDomainAlias () {
this.$store.dispatch('domains/deleteDomainAlias', this.selectedDomainAlias.pk)
},
getDNSTagType (value) {
if (value === 'unknown') {
return 'orange'
}
if (value === 'ok') {
return 'warning'
}
return 'success'
},
exportList () {
this.$axios.get('/domainaliases/', { headers: { Accept: 'text/csv' } }).then(resp => {
const url = window.URL.createObjectURL(
new Blob([resp.data], { type: 'text/csv' }))
const link = document.createElement('a')
link.style.display = 'none'
link.href = url
link.setAttribute('download', 'domain_aliases.csv')
document.body.appendChild(link)
link.click()
window.URL.revokeObjectURL(link.href)
document.body.removeChild(link)
})
}
}
}
</script>
@@ -103,6 +103,7 @@
<domain-alias-form
@close="closeDomainAliasForm"
:domain-alias="selectedDomainAlias"
@alias-created="domainAliasCreated"
@alias-deleted="domainAliasDeleted"
/>
</v-dialog>
@@ -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) {
+1 -1
View File
@@ -178,7 +178,7 @@ export default {
},
{
icon: 'mdi-cog',
text: this.$gettext('Parameters'),
text: this.$gettext('Settings'),
children: [],
roles: ['SuperAdmins']
}
@@ -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') {
@@ -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) {
+2 -44
View File
@@ -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)
}
}
+1 -1
View File
@@ -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"}}
{"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"}}
+1 -1
View File
@@ -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):
+13 -4
View File
@@ -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