Example #1
0
def get_or_create_user_from_google(data):
    try:
        data['id']
        data['id_token']
        data['email']
    except KeyError:
        raise_error()

    try:
        google = UserGoogleData.objects.get(uid=data['id'])
        google.update(extra_data=data)
        user = google.user_profile.user
    except UserGoogleData.DoesNotExist:
        try:
            # If the user's email already exists in our DB, then just associate that user with the Google data
            user_profile = UserProfile.objects.get(
                user__email__iexact=data['email'])
            user = user_profile.user
        except UserProfile.DoesNotExist:
            # No data related to the user exists on our DB - so create the User, record the Data
            user = UserProfile.create(email=data['email'],
                                      first_name=data['first_name'],
                                      last_name=data['last_name']).user

        UserGoogleData.create(user=user, data=data)

    if user and user.is_active:
        token = jwt_utils.get_token_for_user(user)
        return token
    else:
        raise_error(code='ERR0006')
Example #2
0
def auth_signup(first_name,
                last_name,
                password1,
                password2,
                otp=None,
                email=None,
                phone=None,
                username=None,
                phone_otp=None,
                email_otp=None):
    if password1 != password2:
        raise_error('ERR-AUTH-UNMATCHED-PASSWORD')

    user = UserProfile.create(phone=phone,
                              email=email,
                              first_name=first_name,
                              last_name=last_name,
                              username=username,
                              phone_otp=phone_otp,
                              email_otp=email_otp).user
    user.set_password(password1)
    user.save()
    token = jwt_utils.get_token_for_user(user)
    data = {'username': user.username, 'token': token, 'user_id': user.id}
    return data
Example #3
0
def get_or_create_user_from_linkedin_mob(user_id, email, first_name, last_name,
                                         profile_image):
    try:
        user = UserLinkedInData.objects.get(uid=user_id).user
        print(user, 1)
    except ObjectDoesNotExist:
        try:
            user = User.objects.get(email=email)
            print(user, 2)
        except ObjectDoesNotExist:
            user = UserProfile.create(email=email,
                                      first_name=first_name,
                                      last_name=last_name).user

        UserLinkedInData.update(uid=user_id, user=user)

    if user and user.is_active:
        UserProfile.update(user=user, profile_image=profile_image)
        token = jwt_utils.get_token_for_user(user)
        return token
    else:
        raise_error(code='ERR0006')
Example #4
0
def get_or_create_user_from_linkedin(code, redirect_uri):
    if not code:
        raise_error(code='ERR0000')

    client_id = settings.LINKEDIN['client_id']
    client_secret = settings.LINKEDIN['client_secret']

    data = {
        'client_id': client_id,
        'client_secret': client_secret,
        'code': code,
        'redirect_uri': redirect_uri,
        'grant_type': 'authorization_code'
    }
    headers = {"Content-Type": "application/x-www-form-urlencoded"}

    try:
        resp = requests.post(
            url='https://www.linkedin.com/oauth/v2/accessToken',
            data=data,
            headers=headers)
    except requests.exceptions.HTTPError as err:
        logger.error(err)
        raise_error(code='ERR0001')

    RESPONSE = json.loads(resp.text)
    print(RESPONSE)
    print(type(RESPONSE))

    try:
        access_token = RESPONSE['access_token']
    except:
        raise_error(code='ERR0002')

    file_ = requests.get(constants.linkedin_access_url,
                         headers={"Authorization": "Bearer " + access_token})
    ret = file_.json()
    user_id_from_linkedin = ret['id']
    print(user_id_from_linkedin)
    try:
        user = UserLinkedInData.objects.get(uid=user_id_from_linkedin).user
    except ObjectDoesNotExist:
        user_email = ret['emailAddress'].encode('utf-8')
        try:
            user = User.objects.get(email=user_email)
        except ObjectDoesNotExist:
            user_first_name = ret['firstName'].encode('utf-8')
            user_last_name = ret['lastName'].encode('utf-8')
            user = UserProfile.create(email=user_email,
                                      first_name=user_first_name,
                                      last_name=user_last_name).user

        UserLinkedInData.update(uid=user_id_from_linkedin,
                                token=access_token,
                                data=ret,
                                user=user)

    if user and user.is_active:
        token = jwt_utils.get_token_for_user(user)
        return token
    else:
        raise_error(code='ERR0006')