Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- username = `abcd28`
- user_email = `abcd@gmail.com`
- user = User.objects.create_user(username, user_email, user_pass)
- email = request.POST['email']
- password = request.POST['password']
- username = User.objects.get(email=email.lower()).username
- user = authenticate(username=username, password=password)
- login(request, user)
- from django.contrib.auth import get_user_model
- from django.contrib.auth.backends import ModelBackend
- class EmailBackend(ModelBackend):
- def authenticate(self, username=None, password=None, **kwargs):
- UserModel = get_user_model()
- try:
- user = UserModel.objects.get(email=username)
- except UserModel.DoesNotExist:
- return None
- else:
- if getattr(user, 'is_active', False) and user.check_password(password):
- return user
- return None
- AUTHENTICATION_BACKENDS = ['path.to.auth.module.EmailBackend']
- class MyUser(AbstractUser):
- USERNAME_FIELD = 'email'
- email = models.EmailField(_('email address'), unique=True) # changes email to unique and blank to false
- REQUIRED_FIELDS = [] # removes email from REQUIRED_FIELDS
- from django.contrib.auth.backends import ModelBackend
- from django.contrib.auth import get_user_model
- class YourBackend(ModelBackend):
- def authenticate(self, username=None, password=None, **kwargs):
- UserModel = get_user_model()
- if username is None:
- username = kwargs.get(UserModel.USERNAME_FIELD)
- try:
- if '@' in username:
- UserModel.USERNAME_FIELD = 'email'
- else:
- UserModel.USERNAME_FIELD = 'username'
- user = UserModel._default_manager.get_by_natural_key(username)
- except UserModel.DoesNotExist:
- UserModel().set_password(password)
- else:
- if user.check_password(password) and self.user_can_authenticate(user):
- return user
- AUTHENTICATION_BACKENDS = ['path.to.class.YourBackend']
- from django.contrib.auth import get_user_model # gets the user_model django default or your own custom
- from django.contrib.auth.backends import ModelBackend
- from django.db.models import Q
- class CustomBackend(ModelBackend): #requires to define two functions authenticate and get_user
- def authenticate(self, username=None, password=None, **kwargs):
- UserModel = get_user_model()
- try:
- #below line gives query set,you can change the queryset as per your requirement
- user = UserModel.objects.filter(
- Q(username__iexact=username)|
- Q(email__iexact=username)
- ).distinct()
- except UserModel.DoesNotExist:
- return None
- if user.exists():
- user_obj = user.first() # get the user object from the underlying query set , there will only be one object since username and email should be unique fields in your models.
- if user_obj.check_password(password):
- return user_obj
- return None
- else:
- return None
- def get_user(self, user_id):
- UserModel = get_user_model()
- try:
- return UserModel.objects.get(pk=user_id)
- except UserModel.DoesNotExist:
- return None
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement