perf: MFA认证App支持自定义下载二维码

pull/12643/head
wangruidong 2024-01-31 16:38:11 +08:00 committed by Bryan
parent 31b0d345ad
commit 1ae363d6bd
3 changed files with 29 additions and 5 deletions

View File

@ -3,6 +3,7 @@
path_perms_map = {
'xpack': '*',
'settings': '*',
'img': '*',
'replay': 'default',
'applets': 'terminal.view_applet',
'virtual_apps': 'terminal.view_virtualapp',

View File

@ -14,22 +14,24 @@
</strong>
</p>
<div>
<img src="{% static 'img/authenticator_android.png' %}" width="128" height="128" alt="">
<img src="{{ authenticator_android_url }}" width="128" height="128" alt="">
<p>{% trans 'Android downloads' %}</p>
</div>
<div>
<img src="{% static 'img/authenticator_iphone.png' %}" width="128" height="128" alt="">
<img src="{{ authenticator_iphone_url }}" width="128" height="128" alt="">
<p>{% trans 'iPhone downloads' %}</p>
</div>
<p style="margin: 20px auto;"><strong style="color: #000000">{% trans 'After installation, click the next step to enter the binding page (if installed, go to the next step directly).' %}</strong></p>
<p style="margin: 20px auto;"><strong
style="color: #000000">{% trans 'After installation, click the next step to enter the binding page (if installed, go to the next step directly).' %}</strong>
</p>
</div>
<a href="{% url 'authentication:user-otp-enable-bind' %}" class="next">{% trans 'Next' %}</a>
<script>
$(function(){
$(function () {
$('.change-color li:eq(1) i').css('color', '{{ INTERFACE.primary_color }}')
})
</script>

View File

@ -1,10 +1,14 @@
# ~*~ coding: utf-8 ~*~
import os
from django.conf import settings
from django.contrib.auth import logout as auth_logout
from django.http.response import HttpResponseRedirect
from django.shortcuts import redirect
from django.templatetags.static import static
from django.urls import reverse
from django.utils.translation import gettext as _
from django.utils._os import safe_join
from django.views.generic.base import TemplateView
from django.views.generic.edit import FormView
@ -45,9 +49,26 @@ class UserOtpEnableStartView(AuthMixin, TemplateView):
class UserOtpEnableInstallAppView(TemplateView):
template_name = 'users/user_otp_enable_install_app.html'
@staticmethod
def replace_authenticator_png(platform):
media_url = settings.MEDIA_URL
base_path = f'img/authenticator_{platform}.png'
authenticator_media_path = safe_join(settings.MEDIA_ROOT, base_path)
if os.path.exists(authenticator_media_path):
authenticator_url = f'{media_url}{base_path}'
else:
authenticator_url = static(base_path)
return authenticator_url
def get_context_data(self, **kwargs):
user = get_user_or_pre_auth_user(self.request)
context = {'user': user}
authenticator_android_url = self.replace_authenticator_png('android')
authenticator_iphone_url = self.replace_authenticator_png('iphone')
context = {
'user': user,
'authenticator_android_url': authenticator_android_url,
'authenticator_iphone_url': authenticator_iphone_url
}
kwargs.update(context)
return super().get_context_data(**kwargs)