Files
GNX-mailEnterprise/venv/lib/python3.12/site-packages/allauth/mfa/adapter.py
Iliyan Angelov c67067a2a4 Mail
2025-09-14 23:24:25 +03:00

68 lines
2.3 KiB
Python

from django.utils.translation import gettext_lazy as _
from allauth import app_settings as allauth_settings
from allauth.account.utils import user_email, user_username
from allauth.core import context
from allauth.mfa import app_settings
from allauth.utils import import_attribute
class DefaultMFAAdapter:
"""The adapter class allows you to override various functionality of the
``allauth.mfa`` app. To do so, point ``settings.MFA_ADAPTER`` to your own
class that derives from ``DefaultMFAAdapter`` and override the behavior by
altering the implementation of the methods according to your own need.
"""
error_messages = {
"unverified_email": _(
"You cannot activate two-factor authentication until you have verified your email address."
),
"add_email_blocked": _(
"You cannot add an email address to an account protected by two-factor authentication."
),
"incorrect_code": _("Incorrect code."),
}
"The error messages that can occur as part of MFA form handling."
def get_totp_label(self, user) -> str:
"""Returns the label used for representing the given user in a TOTP QR
code.
"""
label = user_email(user)
if not label:
label = user_username(user)
if not label:
label = str(user)
return label
def get_totp_issuer(self) -> str:
"""Returns the TOTP issuer name that will be contained in the TOTP QR
code.
"""
issuer = app_settings.TOTP_ISSUER
if not issuer:
if allauth_settings.SITES_ENABLED:
from django.contrib.sites.models import Site
issuer = Site.objects.get_current(context.request).name
else:
issuer = context.request.get_host()
return issuer
def encrypt(self, text: str) -> str:
"""Secrets such as the TOTP key are stored in the database. This
hook can be used to encrypt those so that they are not stored in the
clear in the database.
"""
return text
def decrypt(self, encrypted_text: str) -> str:
"""Counter part of ``encrypt()``."""
text = encrypted_text
return text
def get_adapter():
return import_attribute(app_settings.ADAPTER)()