Exemplo n.º 1
0
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'))
Exemplo n.º 2
0
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'))
Exemplo n.º 3
0
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)
        )
Exemplo n.º 4
0
 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)
Exemplo n.º 5
0
 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)
Exemplo n.º 6
0
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)
Exemplo n.º 7
0
    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):