1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
import typing
from django.contrib import messages
from example.users.models import User
from allauth.account.adapter import DefaultAccountAdapter
class AccountAdapter(DefaultAccountAdapter):
def set_phone(self, user, phone: str, verified: bool):
user.phone = phone
user.phone_verified = verified
user.save(update_fields=["phone", "phone_verified"])
def get_phone(self, user) -> typing.Optional[typing.Tuple[str, bool]]:
if user.phone:
return user.phone, user.phone_verified
return None
def set_phone_verified(self, user, phone):
self.set_phone(user, phone, True)
def send_verification_code_sms(self, user, phone: str, code: str, **kwargs):
messages.add_message(
self.request,
messages.WARNING,
f"⚠️ SMS demo stub: assume code {code} was sent to {phone}.",
)
def send_unknown_account_sms(self, phone: str, **kwargs):
messages.add_message(
self.request,
messages.WARNING,
f"⚠️ SMS demo stub: Enumeration prevention: texted {phone} informing no account exists.",
)
def send_account_already_exists_sms(self, phone: str, **kwargs):
messages.add_message(
self.request,
messages.WARNING,
f"⚠️ SMS demo stub: Enumeration prevention: texted {phone} informing account already exists.",
)
def get_user_by_phone(self, phone):
return User.objects.filter(phone=phone).order_by("-phone_verified").first()
|