perf: 优化MFA verify requierd

pull/6055/head
ibuler 2021-04-25 16:22:38 +08:00 committed by 老广
parent 4a9e83ba15
commit d1a005f750
3 changed files with 10 additions and 9 deletions

View File

@ -10,10 +10,10 @@ from common.permissions import IsOrgAdminOrAppUser, NeedMFAVerify
from common.utils import get_object_or_none, get_logger from common.utils import get_object_or_none, get_logger
from common.mixins import CommonApiMixin from common.mixins import CommonApiMixin
from ..backends import AssetUserManager from ..backends import AssetUserManager
from ..models import Asset, Node, SystemUser from ..models import Node
from .. import serializers from .. import serializers
from ..tasks import ( from ..tasks import (
test_asset_users_connectivity_manual, push_system_user_a_asset_manual test_asset_users_connectivity_manual
) )
@ -100,12 +100,6 @@ class AssetUserViewSet(CommonApiMixin, BulkModelViewSet):
obj = queryset.get(id=pk) obj = queryset.get(id=pk)
return obj return obj
def get_exception_handler(self):
def handler(e, context):
logger.error(e, exc_info=True)
return Response({"error": str(e)}, status=400)
return handler
def perform_destroy(self, instance): def perform_destroy(self, instance):
manager = AssetUserManager() manager = AssetUserManager()
manager.delete(instance) manager.delete(instance)

View File

@ -39,3 +39,9 @@ class ReferencedByOthers(JMSException):
status_code = status.HTTP_400_BAD_REQUEST status_code = status.HTTP_400_BAD_REQUEST
default_code = 'referenced_by_others' default_code = 'referenced_by_others'
default_detail = _('Is referenced by other objects and cannot be deleted') default_detail = _('Is referenced by other objects and cannot be deleted')
class MFAVerifyRequired(JMSException):
status_code = status.HTTP_400_BAD_REQUEST
default_code = 'mfa_verify_required'
default_detail = _('This action require verify your MFA')

View File

@ -3,6 +3,7 @@
import time import time
from rest_framework import permissions from rest_framework import permissions
from django.conf import settings from django.conf import settings
from common.exceptions import MFAVerifyRequired
from orgs.utils import current_org from orgs.utils import current_org
@ -114,7 +115,7 @@ class NeedMFAVerify(permissions.BasePermission):
mfa_verify_time = request.session.get('MFA_VERIFY_TIME', 0) mfa_verify_time = request.session.get('MFA_VERIFY_TIME', 0)
if time.time() - mfa_verify_time < settings.SECURITY_MFA_VERIFY_TTL: if time.time() - mfa_verify_time < settings.SECURITY_MFA_VERIFY_TTL:
return True return True
return False raise MFAVerifyRequired()
class CanUpdateDeleteUser(permissions.BasePermission): class CanUpdateDeleteUser(permissions.BasePermission):