Exemplo n.º 1
0
    def get(self, request):
        identity = UserSocialAuth(user=request.user, provider="dummy")

        email = generate_invalid_identity_email(identity=identity)
        return MailPreview(html_template=email.html_template,
                           text_template=email.template,
                           context=email.context).render(request)
Exemplo n.º 2
0
def _googleAuth(user):
    google_auth = UserSocialAuth()
    google_auth.user = user
    google_auth.provider = 'google'
    google_auth.uid = user.email
    google_auth.extra_data = '{}'
    return google_auth
Exemplo n.º 3
0
    def testAssociation(self):
        resp = self.c.get(reverse('settings'), follow=True)
        self.assertNotIn('facebook', resp.context)
        self.assertNotIn('google', resp.context)
        self.assertNotIn('twitter', resp.context)
        self.assertNotIn('odesk', resp.context)

        self.u.get_profile().odesk_uid = '~~97784d8733806815'
        self.u.get_profile().full_name = "Testing Test"
        self.u.get_profile().save()

        Worker.objects.create_odesk(external_id='~~97784d8733806815').save()
        # Odesk assoc
        resp = self.c.get(reverse('settings'))
        self.assertIn('odesk', resp.context)

        # Facebook assoc
        usa = UserSocialAuth(user=self.u, provider='facebook', uid='Tester')
        usa.save()

        resp = self.c.get(reverse('settings'))
        self.assertIn('facebook', resp.context)

        # Google assoc
        usa = UserSocialAuth(user=self.u,
                             provider='google-oauth2',
                             uid='Tester')
        usa.save()

        resp = self.c.get(reverse('settings'))
        self.assertIn('google', resp.context)

        # Twitter assoc
        usa = UserSocialAuth(user=self.u, provider='twitter', uid='Tester')
        usa.save()

        resp = self.c.get(reverse('settings'))
        self.assertIn('twitter', resp.context)
Exemplo n.º 4
0
    def get_or_create_social_user(self, request, **kwargs):

        self.method_check(request, allowed=['get', 'post', ])
        self.throttle_check(request)

        try:
            data = json.loads(request.body)

        except ValueError as e:

            if request.GET:
                data = request.GET

            if request.POST:
                data = request.POST

        REQUIRED_FIELDS = ('provider', 'uid', 'extra_data', 'user')
        for field in REQUIRED_FIELDS:
            if field not in data:
                raise APIBadRequest(
                    code="missing_key",
                    message=_('Must provide {missing_key} when looking up a social user.').format(missing_key=field)
                )


        provider = data['provider']
        uid = data['uid']
        extra_data = data['extra_data']
        user = json.loads(data['user'])

        user_qs = User.objects.filter(social_auth__provider=provider, social_auth__uid=uid)

        if not user_qs.exists():
            """
            create new account & social user
            """

            # TODO: hack!!! try to create unique username
            username = user['username']

            while User.objects.filter(username=username).exists():
                username += uuid4().get_hex()[:8]

            remote_user = User.objects.create_user(username=username,
                                            email=user['email'],
                                            password=None)

            remote_user.first_name = user['first_name']
            remote_user.last_name = user['last_name']
            remote_user.save()

            from social_auth.models import UserSocialAuth
            social_user = UserSocialAuth(
                user=remote_user,
                provider=provider,
                uid=uid,
                extra_data=extra_data,
            )
            social_user.save()

        else:
            remote_user = user_qs[0]
            remote_user.extra_data = extra_data
            remote_user.save()



        bundle = {
            'id': remote_user.id,
            'user': {
                'id': remote_user.id,
                'username': remote_user.username,
                'first_name': remote_user.first_name,
                'last_name': remote_user.last_name,
            }
        }


        self.log_throttled_access(request)
        return self.create_response(request, bundle)