I use a plugin / python program

AUTHENTICATION_BACKENDS = (
# AxesStandaloneBackend should be the first backend in the AUTHENTICATION_BACKENDS list.
    'axes.backends.AxesModelBackend',

    'django.contrib.auth.email-auth.EmailBackend',
    'django.contrib.auth.backends.ModelBackend',
 )

email-auth.py

place in project root or

/usr/local/lib/python2.7/site-packages/Django-1.11.29-py2.7.egg/django/contrib/auth

use phone number for the user account id and email address will kick in automatically

can use either for login with valid password



_______________________________________________________________
# cat email-auth.py
from django.contrib.auth.models import User
import re

# vem = Verify E-Mail. This regular expression is from http://www.regular-expressions.info/email.html
# and is designed to detect anything that meets the RFC-2822 standard.
vem = re.compile(r"""(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])""", re.I)


class BasicBackend:
        def get_user(self, user_id):
                try:
                        return User.objects.get(pk=user_id)
                except User.DoesNotExist:
                        return None

class EmailBackend(BasicBackend):
        def authenticate(self, username=None, password=None):
                #If username is an email address, then try to pull it up
                if vem.search(username):
                        try:
                                user = User.objects.get(email=username)
                        except User.DoesNotExist:
                                return None
                else:
#We have a non-email address username we should try username
                        try:
                                user = User.objects.get(username=username)
                        except User.DoesNotExist:
                                return None
                if user.check_password(password):
                        return user
____________________________________________________________________________




Happy Sunday !!!
Thanks - paul

Paul Kudla


Scom.ca Internet Services <http://www.scom.ca>
004-1009 Byron Street South
Whitby, Ontario - Canada
L1N 4S3

Toronto 416.642.7266
Main 1.866.411.7266
Fax 1.888.892.7266
Email [email protected]

On 2023-02-26 8:35 a.m., Manobhav Joshi wrote:
is there any way to use both email and phone number as username to login safely which we can use authenticate() function.

--
You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected] <mailto:[email protected]>. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/fd5721c4-0a55-48c3-8a1c-5ef75e470e1cn%40googlegroups.com <https://groups.google.com/d/msgid/django-users/fd5721c4-0a55-48c3-8a1c-5ef75e470e1cn%40googlegroups.com?utm_medium=email&utm_source=footer>.

--
This message has been scanned for viruses and
dangerous content by *MailScanner* <http://www.mailscanner.info/>, and is
believed to be clean.

--
You received this message because you are subscribed to the Google Groups "Django 
users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/a875a175-d6d2-1ab2-c9aa-3460ee1e97c8%40scom.ca.

Reply via email to