Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- AUTHENTICATION_BACKENDS = (
- 'django.contrib.auth.backends.ModelBackend',
- 'social.backends.facebook.FacebookOAuth2',
- 'social.backends.google.GoogleOAuth2',
- 'social.backends.twitter.TwitterOAuth',
- )
- LOGIN_REDIRECT_URL = '/home'
- LOGOUT_REDIRECT_URL = '/index'
- SOCIAL_AUTH_PIPELINE = (
- 'social_core.pipeline.social_auth.social_details',
- 'social_core.pipeline.social_auth.social_uid',
- 'social_core.pipeline.social_auth.auth_allowed',
- 'social_core.pipeline.social_auth.social_user',
- 'userlogin.auth_pipline.signup.create_user',
- 'social_core.pipeline.social_auth.associate_by_email',
- 'social_core.pipeline.social_auth.associate_user',
- 'social_core.pipeline.social_auth.load_extra_data',
- 'social_core.pipeline.user.user_details',
- )
- from django.contrib.auth.models import User
- from django.contrib.auth import login
- from django.core.exceptions import ObjectDoesNotExist
- from django.contrib.auth import get_user_model
- User = get_user_model()
- from django.contrib.auth.backends import ModelBackend
- from django.utils.crypto import get_random_string
- def create_user(strategy=None, backend=None, details=None, response=None, request=None, *args, **kwargs):
- provider = backend.name
- try:
- user = User.objects.get(email=details['email'])
- except ObjectDoesNotExist:
- user = User.objects.create_user(email=details['email'], name=details['fullname'],
- password=get_random_string(length=10, allowed_chars='abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789'))
- if provider == "facebook":
- user.fb_id = response["id"]
- user.age = response["age_range"]["min"]
- elif provider == "twitter":
- user.tw_id = response["id"]
- else:
- user.gp_id = response["id"]
- login(strategy.request, user)
- return {'user': user}
- from django.db import models
- from .managers import UserManager
- from django.contrib.auth.base_user import AbstractBaseUser
- from django.contrib.auth.models import PermissionsMixin
- class User(AbstractBaseUser, PermissionsMixin):
- # https://docs.djangoproject.com/en/1.10/topics/auth/customizing/
- # https://simpleisbetterthancomplex.com/tutorial/2016/07/22/how-to-extend-django-user-model.html#abstractbaseuser
- name = models.CharField(max_length=100, null=True)
- email = models.EmailField(unique=True)
- dob = models.DateField(null=True)
- is_active = models.BooleanField(default=True)
- date_joined = models.DateTimeField(null=True)
- is_superuser = models.BooleanField(default=False)
- is_staff = models.BooleanField(default=False)
- fb_id = models.CharField(max_length=255, null=True)
- gp_id = models.CharField(max_length=255, null=True)
- tw_id = models.CharField(max_length=255, null=True)
- gender = models.CharField(max_length=1, default="u")
- age = models.IntegerField(null=True)
- objects = UserManager()
- USERNAME_FIELD = 'email'
- REQUIRED_FIELDS = ['name']
- def get_full_name(self):
- return self.email
- def get_short_name(self):
- return self.email
- def __str__(self):
- return self.name
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement