From ddbd7f6c190aaa2f8215916e40fa9e25cdd987c7 Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Wed, 21 Oct 2020 19:20:23 +0200 Subject: [PATCH] API refactoring and new domain form fields. --- frontend/src/components/domains/DomainForm.vue | 11 ++++++++++- frontend/src/store/modules/auth.js | 2 +- modoboa/admin/api.py | 7 ------- modoboa/core/viewsets.py | 8 ++++++++ 4 files changed, 19 insertions(+), 9 deletions(-) diff --git a/frontend/src/components/domains/DomainForm.vue b/frontend/src/components/domains/DomainForm.vue index 2421c0ee0..3327a6c3c 100644 --- a/frontend/src/components/domains/DomainForm.vue +++ b/frontend/src/components/domains/DomainForm.vue @@ -13,6 +13,7 @@ :error-messages="formErrors['name']" > + + + @@ -71,7 +79,8 @@ export default { data () { return { formErrors: {}, - domain: {} + domain: {}, + domainTypes: ['Domain', 'Relay domain'] } }, computed: { diff --git a/frontend/src/store/modules/auth.js b/frontend/src/store/modules/auth.js index c10dd1ed5..13ce9e8f6 100644 --- a/frontend/src/store/modules/auth.js +++ b/frontend/src/store/modules/auth.js @@ -7,7 +7,7 @@ function setupAxios (token) { } function fetchUser (commit) { - return Vue.prototype.$axios.get('/accounts/me').then(resp => { + return Vue.prototype.$axios.get('/account/me').then(resp => { commit('SET_AUTH_USER', { authUser: resp.data, isAuthenticated: true }) }) } diff --git a/modoboa/admin/api.py b/modoboa/admin/api.py index a4513982c..2c7ee274c 100644 --- a/modoboa/admin/api.py +++ b/modoboa/admin/api.py @@ -67,7 +67,6 @@ class AccountViewSet(viewsets.ModelViewSet): """Return a serializer.""" action_dict = { "list": serializers.AccountSerializer, - "me": serializers.AccountSerializer, "retrieve": serializers.AccountSerializer, "password": serializers.AccountPasswordSerializer, "reset_password": serializers.ResetPasswordSerializer, @@ -87,12 +86,6 @@ class AccountViewSet(viewsets.ModelViewSet): queryset = queryset.filter(mailbox__domain__name=domain) return queryset - @action(methods=["get"], detail=False) - def me(self, request): - """Return information about connected user.""" - serializer = self.get_serializer(request.user) - return Response(serializer.data) - @action(methods=["put"], detail=True) def password(self, request, pk=None): """Change account password.""" diff --git a/modoboa/core/viewsets.py b/modoboa/core/viewsets.py index 876277199..bd5a226db 100644 --- a/modoboa/core/viewsets.py +++ b/modoboa/core/viewsets.py @@ -8,6 +8,8 @@ from django_otp.plugins.otp_totp.models import TOTPDevice from rest_framework import permissions, response, viewsets from rest_framework.decorators import action +from modoboa.admin import serializers as admin_serializers + from . import models from . import serializers @@ -20,6 +22,12 @@ class AccountViewSet(viewsets.ViewSet): permission_classes = (permissions.IsAuthenticated, ) + @action(methods=["get"], detail=False) + def me(self, request): + """Return information about connected user.""" + serializer = admin_serializers.AccountSerializer(request.user) + return response.Response(serializer.data) + @action(methods=["post"], detail=False, url_path="tfa/setup") def tfa_setup(self, request): """Initiate TFA setup."""