From 72fc96a3d2c38aaf59af699e29f0b91a9d3d35a9 Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Thu, 31 Mar 2022 15:38:24 +0200 Subject: [PATCH] Account detail page --- .../components/identities/AccountAliases.vue | 20 +++++++ .../src/components/identities/AccountForm.vue | 26 ++++++++ .../identities/AccountResources.vue | 39 ++++++++++++ .../identities/AccountResourcesForm.vue | 37 ++++++++++++ .../components/identities/AccountSummary.vue | 43 +++++++++++++ .../identities/DomainAdminDomains.vue | 20 +++++++ .../components/identities/IdentityList.vue | 12 +++- frontend/src/router/index.js | 9 +++ frontend/src/views/identities/Account.vue | 60 +++++++++++++++++++ modoboa/admin/api/v1/serializers.py | 3 +- modoboa/admin/api/v2/serializers.py | 53 +++++++++++++++- modoboa/admin/api/v2/viewsets.py | 11 ++-- 12 files changed, 326 insertions(+), 7 deletions(-) create mode 100644 frontend/src/components/identities/AccountAliases.vue create mode 100644 frontend/src/components/identities/AccountResources.vue create mode 100644 frontend/src/components/identities/AccountResourcesForm.vue create mode 100644 frontend/src/components/identities/AccountSummary.vue create mode 100644 frontend/src/components/identities/DomainAdminDomains.vue create mode 100644 frontend/src/views/identities/Account.vue diff --git a/frontend/src/components/identities/AccountAliases.vue b/frontend/src/components/identities/AccountAliases.vue new file mode 100644 index 000000000..88593cd64 --- /dev/null +++ b/frontend/src/components/identities/AccountAliases.vue @@ -0,0 +1,20 @@ + + + diff --git a/frontend/src/components/identities/AccountForm.vue b/frontend/src/components/identities/AccountForm.vue index fbc056284..96954c1dc 100644 --- a/frontend/src/components/identities/AccountForm.vue +++ b/frontend/src/components/identities/AccountForm.vue @@ -98,6 +98,18 @@ + + + + + Limits + + + + + + +
@@ -116,12 +128,14 @@ import { bus } from '@/main' import accounts from '@/api/accounts' import AccountGeneralForm from './AccountGeneralForm' import AccountMailboxForm from './AccountMailboxForm' +import AccountResourcesForm from './AccountResourcesForm' import AccountRoleForm from './AccountRoleForm' export default { components: { AccountGeneralForm, AccountMailboxForm, + AccountResourcesForm, AccountRoleForm }, props: ['account'], @@ -144,6 +158,12 @@ export default { return } } + if (this.$refs.resourcesForm !== undefined) { + const valid = await this.$refs.resourcesForm.validateForm() + if (!valid) { + return + } + } try { const data = JSON.parse(JSON.stringify(this.editedAccount)) if (this.usernameIsEmail) { @@ -158,6 +178,9 @@ export default { delete data.password delete data.password_confirmation } + if (this.$refs.resourcesForm !== undefined) { + data.resources = this.$refs.resourcesForm.getPayload() + } await accounts.patch(this.editedAccount.pk, data).then(resp => { bus.$emit('notification', { msg: this.$gettext('Account updated') }) }) @@ -168,6 +191,9 @@ export default { if (this.$refs.mailboxForm) { this.$refs.mailboxForm.$refs.observer.setErrors(error.response.data) } + if (this.$refs.resourcesForm) { + this.$refs.resourcesForm.$refs.observer.setErrors(error.response.data) + } } } }, diff --git a/frontend/src/components/identities/AccountResources.vue b/frontend/src/components/identities/AccountResources.vue new file mode 100644 index 000000000..e069e7eee --- /dev/null +++ b/frontend/src/components/identities/AccountResources.vue @@ -0,0 +1,39 @@ + + + diff --git a/frontend/src/components/identities/AccountResourcesForm.vue b/frontend/src/components/identities/AccountResourcesForm.vue new file mode 100644 index 000000000..a18785897 --- /dev/null +++ b/frontend/src/components/identities/AccountResourcesForm.vue @@ -0,0 +1,37 @@ + + + diff --git a/frontend/src/components/identities/AccountSummary.vue b/frontend/src/components/identities/AccountSummary.vue new file mode 100644 index 000000000..5031f548b --- /dev/null +++ b/frontend/src/components/identities/AccountSummary.vue @@ -0,0 +1,43 @@ + + + diff --git a/frontend/src/components/identities/DomainAdminDomains.vue b/frontend/src/components/identities/DomainAdminDomains.vue new file mode 100644 index 000000000..a0fc3d729 --- /dev/null +++ b/frontend/src/components/identities/DomainAdminDomains.vue @@ -0,0 +1,20 @@ + + + diff --git a/frontend/src/components/identities/IdentityList.vue b/frontend/src/components/identities/IdentityList.vue index 49f75e70a..9938f1615 100644 --- a/frontend/src/components/identities/IdentityList.vue +++ b/frontend/src/components/identities/IdentityList.vue @@ -4,7 +4,7 @@ @@ -31,6 +31,16 @@ class="elevation-1" show-select > +