mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-17 05:41:25 +02:00
Various frontend fixes.
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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 @@
|
||||
{"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"}}
|
||||
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user