From 5d86604cc8fe367b8750775b092aa89fb3ab57b3 Mon Sep 17 00:00:00 2001 From: vapao Date: Mon, 7 Jun 2021 11:17:54 +0800 Subject: [PATCH] fix issues --- spug_api/apps/setting/urls.py | 2 +- spug_api/apps/setting/views.py | 17 +++++++++-------- .../src/pages/system/setting/SecuritySetting.js | 9 +++++++++ 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/spug_api/apps/setting/urls.py b/spug_api/apps/setting/urls.py index 6622927..781345e 100644 --- a/spug_api/apps/setting/urls.py +++ b/spug_api/apps/setting/urls.py @@ -7,8 +7,8 @@ from .views import * urlpatterns = [ url(r'^$', SettingView.as_view()), - url(r'^basic/$', get_basic), url(r'^ldap_test/$', ldap_test), url(r'^email_test/$', email_test), + url(r'^mfa_test/$', mfa_test), url(r'^about/$', get_about) ] diff --git a/spug_api/apps/setting/views.py b/spug_api/apps/setting/views.py index d43c034..b281431 100644 --- a/spug_api/apps/setting/views.py +++ b/spug_api/apps/setting/views.py @@ -5,6 +5,7 @@ import django from django.views.generic import View from django.conf import settings from libs import JsonParser, Argument, json_response +from apps.account.models import User from apps.setting.utils import AppSetting from apps.setting.models import Setting import platform @@ -59,13 +60,20 @@ def email_test(request): else: server = smtplib.SMTP(form.server, form.port, timeout=3) server.login(form.username, form.password) - return json_response() + return json_response() except Exception as e: error = f'{e}' return json_response(error=error) +def mfa_test(request): + for user in User.objects.filter(is_supper=True): + if not user.wx_token: + return json_response(error=f'检测到管理员账户 {user.nickname} 未配置微信Token,请配置后再尝试启用MFA认证,否则可能造成系统无法正常登录。') + return json_response() + + def get_about(request): return json_response({ 'python_version': platform.python_version(), @@ -73,10 +81,3 @@ def get_about(request): 'spug_version': settings.SPUG_VERSION, 'django_version': django.get_version() }) - - -def get_basic(request): - keys, data = ('MFA',), {} - for item in Setting.objects.filter(key__in=keys): - data[item.key] = item.real_val - return json_response(data) diff --git a/spug_web/src/pages/system/setting/SecuritySetting.js b/spug_web/src/pages/system/setting/SecuritySetting.js index 48e551b..8f5c353 100644 --- a/spug_web/src/pages/system/setting/SecuritySetting.js +++ b/spug_web/src/pages/system/setting/SecuritySetting.js @@ -25,6 +25,15 @@ export default observer(function () { function handleChangeMFA(v) { if (v && !store.settings.spug_key) return message.error('开启MFA认证需要先在基本设置中配置调用凭据'); + if (v) { + http.get('/api/setting/mfa_test/') + .then(() => _doModify(v)) + } else { + _doModify(v) + } + } + + function _doModify(v) { setMFA({...mfa, enable: v}); http.post('/api/setting/', {data: [{key: 'MFA', value: {...mfa, enable: v}}]}) .then(() => {