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)
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
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)
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)