def openid_callback(request, template='socialregistration/openid.html', extra_context=dict()): """ Catches the user when he's redirected back from the provider to our site """ client = OpenID( request, 'http://%s%s' % (Site.objects.get_current().domain, reverse('openid_callback')), request.session.get('openid_provider')) if client.is_valid(): user = authenticate(identity=request.GET.get('openid.claimed_id')) if user is None: request.session['socialregistration_user'] = User() request.session['socialregistration_profile'] = OpenIDProfile( identity=request.GET.get('openid.claimed_id')) return HttpResponseRedirect(reverse('socialregistration_setup')) else: login(request, user) return HttpResponseRedirect(_get_next(request)) return render_to_response(template, dict(), context_instance=RequestContext(request))
def openid_callback(request, template='socialregistration/openid.html', extra_context=dict(), account_inactive_template='socialregistration/account_inactive.html', client_class = None): """ Catches the user when he's redirected back from the provider to our site """ client = client_class( request, 'http%s://%s%s' % ( _https(), Site.objects.get_current().domain, reverse('openid_callback') ), request.session.get('openid_provider') ) if client.is_valid(): identity = client.result.identity_url if request.user.is_authenticated(): # Handling already logged in users just connecting their accounts try: profile = OpenIDProfile.objects.get(identity=identity) except OpenIDProfile.DoesNotExist: # There can only be one profile with the same identity profile = OpenIDProfile.objects.create(user=request.user, identity=identity) _connect(user, profile, client) return HttpResponseRedirect(_get_next(request)) user = authenticate(identity=identity) if user is None: request.session['socialregistration_user'] = User() request.session['socialregistration_profile'] = OpenIDProfile( identity=identity ) # Client is not pickleable with the request on it client.request = None request.session['socialregistration_client'] = client return HttpResponseRedirect(reverse('socialregistration_setup')) if not user.is_active: return render_to_response( account_inactive_template, extra_context, context_instance=RequestContext(request) ) _login(request, user, OpenIDProfile.objects.get(user = user), client) return HttpResponseRedirect(_get_next(request)) return render_to_response( template, dict(), context_instance=RequestContext(request) )
def authenticate(self, identity=None): try: openid_profile = OpenIDProfile.all() openid_profile.filter('identity = ', identity) #openid_profile.filter('site = ',Site.objects.get_current()) openid_profile = openid_profile.fetch(1) auth_user = openid_profile[0].user return auth_user #OpenIDProfile.objects.get( # identity=identity, #site=Site.objects.get_current() #).user except: return None
def authenticate(self, identity=None): try: openid_profile = OpenIDProfile.all() openid_profile.filter('identity = ',identity) #openid_profile.filter('site = ',Site.objects.get_current()) openid_profile = openid_profile.fetch(1) auth_user = openid_profile[0].user return auth_user #OpenIDProfile.objects.get( # identity=identity, #site=Site.objects.get_current() #).user except: return None
pass if client.is_valid(): identity = client.result.identity_url if request.user.is_authenticated(): # Handling already logged in users just connecting their accounts try: profile = OpenIDProfile.objects.get(identity=identity) except OpenIDProfile.DoesNotExist: # There can only be one profile with the same identity profile = OpenIDProfile.objects.create(user=request.user, identity=identity) return HttpResponseRedirect(_get_next(request)) user = authenticate(identity=identity) if user is None: request.session['socialregistration_user'] = User() request.session['socialregistration_profile'] = OpenIDProfile( identity=identity) return HttpResponseRedirect(reverse('socialregistration_setup')) if not user.is_active: return render_to_response(account_inactive_template, extra_context, context_instance=RequestContext(request)) login(request, user) return HttpResponseRedirect(_get_next(request)) return HttpResponseRedirect(reverse('login'))
def authenticate(self, identity=None): return OpenIDProfile.all().filter('identity =', identity).get()
def openid_callback(request, template='socialregistration/openid.html', extra_context=dict(), account_inactive_template='socialregistration/account_inactive.html'): """ Catches the user when he's redirected back from the provider to our site """ client = OpenID( request, 'http%s://%s%s' % ( _https(), Site.objects.get_current().domain, reverse('openid_callback') ), request.session.get('openid_provider') ) # print 'hi' # print request.GET if client.is_valid(): if request.user.is_authenticated(): # Handling already logged in users just connecting their accounts try: profile = OpenIDProfile.all().filter('identity=',request.GET.get('openid.claimed_id')).fetch(1)[0] except IndexError: # There can only be one profile with the same identity profile = OpenIDProfile( user = request.user, identity=request.GET.get('openid.claimed_id'), real_name=request.GET.get('openid.ax.value.fullname'), username=request.GET.get('openid.ax.value.nickname'), email=request.GET.get('openid.ax.value.email'), pic_url=request.GET.get('openid.ax.value.image'), ) profile.save() return HttpResponseRedirect(_get_next(request)) user = authenticate(identity=request.GET.get('openid.claimed_id')) if user is None: user = User(username='******') request.session['social_suggested_username'] = request.GET.get('openid.ax.value.nickname') request.session['socialregistration_user'] = user if request.GET.get('openid.ext2.value.email'): request.session['social_suggested_username'] = request.GET.get('openid.ext2.value.email').split('@')[0] request.session['socialregistration_profile'] = OpenIDProfile( identity=request.GET.get('openid.claimed_id'), internal_username=request.session['social_suggested_username'], email=request.GET.get('openid.ext2.value.email'), pic_url= "http://www.gravatar.com/avatar/" + md5.md5(request.GET.get('openid.ext2.value.email')).hexdigest() , ) elif request.GET.get('openid.sreg.email'): request.session['social_suggested_username'] = request.GET.get('openid.sreg.nickname') request.session['socialregistration_profile'] = OpenIDProfile( identity=request.GET.get('openid.claimed_id'), real_name=request.GET.get('openid.sreg.fullname'), internal_username=request.GET.get('openid.sreg.nickname'), email=request.GET.get('openid.sreg.email'), pic_url="http://www.gravatar.com/avatar/" + md5.md5(request.GET.get('openid.sreg.email')).hexdigest(), ) elif request.GET.get('openid.ext1.value.email'): request.session['social_suggested_username'] = request.GET.get('openid.ext1.value.email').split('@')[0] request.session['socialregistration_profile'] = OpenIDProfile( identity=request.GET.get('openid.claimed_id'), internal_username=request.session['social_suggested_username'], email=request.GET.get('openid.ext1.value.email'), pic_url= "http://www.gravatar.com/avatar/" + md5.md5(request.GET.get('openid.ext1.value.email')).hexdigest() , ) else: request.session['socialregistration_profile'] = OpenIDProfile( identity=request.GET.get('openid.claimed_id'), real_name=request.GET.get('openid.ax.value.fullname'), internal_username=request.GET.get('openid.ax.value.nickname'), email=request.GET.get('openid.ax.value.email'), pic_url=request.GET.get('openid.ax.value.image'), ) for key, value in getattr(client, 'registration_data', {}).items(): request.session['social_suggested_%s' % key] = value return HttpResponseRedirect(reverse('socialregistration_setup')) else: login(request, user) return HttpResponseRedirect(_get_next(request)) if not user.is_active: return render_to_response( account_inactive_template, extra_context, context_instance=RequestContext(request) ) login(request, user) return HttpResponseRedirect(_get_next(request)) return render_to_response( template, dict(), context_instance=RequestContext(request) )
def openid_callback( request, template='socialregistration/openid.html', extra_context=dict(), account_inactive_template='socialregistration/account_inactive.html'): """ Catches the user when he's redirected back from the provider to our site """ client = OpenID( request, 'http%s://%s%s' % (_https(), Site.objects.get_current().domain, reverse('openid_callback')), request.session.get('openid_provider')) if client.is_valid(): identity = client.result.identity_url if 'socialregistration_connect_object' in request.session and request.session[ 'socialregistration_connect_object'] != None: # this exists so that social credentials can be attached to any arbitrary object using the same callbacks. # Under normal circumstances it will not be used. Put an object in request.session named 'socialregistration_connect_object' and it will be used instead. # After the connection is made it will redirect to request.session value 'socialregistration_connect_redirect' or settings.LOGIN_REDIRECT_URL or / try: # get the profile for this facebook UID and type of connected object profile = OpenIDProfile.objects.get( identity=identity, content_type=ContentType.objects.get_for_model( request.session['socialregistration_connect_object']. __class__), object_id=request. session['socialregistration_connect_object'].pk) except OpenIDProfile.DoesNotExist: OpenIDProfile.objects.create( content_object=request. session['socialregistration_connect_object'], identity=identity) del request.session['socialregistration_connect_object'] else: if request.user.is_authenticated(): # Handling already logged in users just connecting their accounts try: profile = OpenIDProfile.objects.get( identity=identity, content_type=ContentType.objects.get_for_model(User)) except OpenIDProfile.DoesNotExist: # There can only be one profile with the same identity profile = OpenIDProfile.objects.create( content_object=request.user, identity=identity) return HttpResponseRedirect(_get_next(request)) user = authenticate(identity=identity) if user is None: request.session['socialregistration_user'] = User() request.session['socialregistration_profile'] = OpenIDProfile( identity=identity) return HttpResponseRedirect( reverse('socialregistration_setup')) if not user.is_active: return render_to_response( account_inactive_template, extra_context, context_instance=RequestContext(request)) login(request, user) return HttpResponseRedirect(_get_next(request)) return render_to_response(template, dict(), context_instance=RequestContext(request))