def authenticate(request): ''' Performs Facebook Connect authentication. * URL Name ``accounts-fbconnect-authenticate`` * Available Context None. * Template None. ''' #import ipdb #ipdb.set_trace() fb = request.facebook user = None if fb.check_session(request): if request.user.is_authenticated(): profile = request.user.get_profile() profile.facebook_id = fb.uid profile.save() user = request.user else: from django.contrib.auth import authenticate, login user = authenticate(fb=fb, request=request) if user is not None: login(request, user) else: return HttpResponseRedirect( url_for_view('accounts-postauthcmd')) user_info = fb.users.getInfo(fb.uid, fields=['first_name', 'pic'])[0] file_url = fb_utils.get_image_fb(user_info['pic']) profile_extension = user.profile_extensions.get() pic_name = file_url.split('/')[-1] profile_extension.picture.save(pic_name, File(open(file_url))) request.session['authentication'] = dict( method='facebook', name=user_info['first_name'], ) return accounts.post_auth_redirect(request) else: return HttpResponseRedirect(url_for_view('accounts-postauthcmd'))
def authenticate(request): ''' Performs Facebook Connect authentication. * URL Name ``accounts-fbconnect-authenticate`` * Available Context None. * Template None. ''' #import ipdb #ipdb.set_trace() fb = request.facebook user = None if fb.check_session(request): if request.user.is_authenticated(): profile = request.user.get_profile() profile.facebook_id = fb.uid profile.save() user = request.user else: from django.contrib.auth import authenticate, login user = authenticate(fb=fb, request=request) if user is not None: login(request, user) else: return HttpResponseRedirect(url_for_view('accounts-postauthcmd')) user_info = fb.users.getInfo(fb.uid, fields=['first_name','pic'])[0] file_url = fb_utils.get_image_fb(user_info['pic']) profile_extension = user.profile_extensions.get() pic_name = file_url.split('/')[-1] profile_extension.picture.save(pic_name,File(open(file_url))) request.session['authentication'] = dict( method='facebook', name=user_info['first_name'], ) return accounts.post_auth_redirect(request) else: return HttpResponseRedirect(url_for_view('accounts-postauthcmd'))
def authenticate(request): ''' Performs the redirect to authenticate with Twitter. * URL Name ``accounts-twitter-authenticate`` * Available Context ``twitter_error_message`` - Set only when Twitter authentication results in an exception. * Template 'accounts/twitter_error.html' - Used only when Twitter authentication results in an exception. Otherwise none. ''' auth = tweepy.OAuthHandler( settings.TWITTER_CONSUMER_KEY, settings.TWITTER_CONSUMER_SECRET, settings.BASE_URL + url_for_view('accounts-twitter-callback') ) try: authorization_url = auth.get_authorization_url(signin_with_twitter=True) except tweepy.TweepError, e: return render_to_response( 'accounts/twitter_error.html', dict(twitter_error_message=unicode(e)), context_instance=RequestContext(request) )
def _require_login(request, *args, **kwargs): if not request.user.is_authenticated(): request.session['POST_AUTH_URL'] = request.get_full_path() if ajax: return the_view(request, *args, **kwargs) else: return HttpResponseRedirect(url_for_view(login_url_name)) else: return the_view(request, *args, **kwargs)
def post_auth_redirect(request): from django.core.urlresolvers import reverse as url_for_view from django.http import HttpResponseRedirect if request.GET.get('next', None): request.session['POST_AUTH_URL'] = request.GET.get('next') return_url = request.session.get('POST_AUTH_URL') if return_url is None: return_url = url_for_view('accounts-postauthcmd') return HttpResponseRedirect(return_url)
else: from django.contrib.auth import authenticate as django_authenticate, login as django_login try: user = django_authenticate(token=auth.access_token, request=request) except tweepy.TweepError, e: return render_to_response( 'accounts/twitter_error.html', dict(twitter_error_message=unicode(e)), context_instance=RequestContext(request) ) if user is not None: django_login(request, user) else: return HttpResponseRedirect(url_for_view('accounts-postauthcmd')) request.session['authentication'] = dict( method='twitter', name=u'@%s' % credentials.screen_name, ) return accounts.post_auth_redirect(request) def get_twitter_client(): if hasattr(_thread_locals, 'twitter'): return _thread_locals.twitter else: return None class TwitterClientMiddleware(object): def process_request(self, request):