예제 #1
0
def login(request):
    auth_url = create_authorize_url()
    error = None
    
    if request.GET:
        if 'code' in request.GET:
            logging.debug('CODE FOUND')
            session = FacebookSession(request.GET['code'])
            user = auth.authenticate(session=session)
            if user:
                if user.is_active:
                    logging.debug('ACTIVE USER')
                    auth.login(request, user)
                    return redirect(settings.MAIN_URL)
                else:
                    error = 'AUTH_DISABLED'
            else:
                error = 'AUTH_FAILED'
        elif 'error_reason' in request.GET:
            error = 'AUTH_DENIED'
    elif request.user.is_authenticated():
        logging.debug('AUTHORIZED USER')
        return redirect(settings.MAIN_URL)

    template_context = {'error': error, 'auth_url': auth_url}
    return render_to_response('login.html', template_context,
                              context_instance=Context(request))
예제 #2
0
 def wrap(request, *args, **kwargs):    
     authorize_url = create_authorize_url()
     timeout = 60
     
     try:
         token = Token.objects.get(user=request.user)
     except Exception, e:
         logging.error(e)
         return redirect(urlresolvers.reverse('login'))
예제 #3
0
    def wrap(request, *args, **kwargs):
        refresh_token_url = create_authorize_url(state=request.path)
        timeout = 60

        fb_token = request.session.get('fb_token')
        if not fb_token:
            logging.info(u'Facebook token not found. Will redirect to login')
            login_url = '/login?next={0}'.format(request.path)
            return redirect(login_url)

        timestamp_now = time.mktime(datetime.datetime.utcnow().timetuple())
        if fb_token['expires'] < timestamp_now + timeout:
            logging.warn('Token expired. Trying to fetch a new one.')
            return redirect(refresh_token_url)

        request.access_token = fb_token['access_token']
        try:
            return func(request, *args, **kwargs)
        except FacebookSessionError, e:
            logging.error(str(e))
            return redirect(refresh_token_url)
예제 #4
0
def login(request):
    next_url = request.GET.get('next')
    state_url = request.GET.get('state')
    if not next_url or next_url == 'None':
        if state_url:
            next_url = state_url
        else:
            next_url = settings.MAIN_URL

    error = None
    if request.GET:
        if 'code' in request.GET:
            logging.debug('CODE FOUND')
            facebook_session = FacebookSession(request.GET['code'])
            user = auth.authenticate(facebook_session=facebook_session,
                                     django_session=request.session,
                                     user=request.user or None)
            if user:
                if user.is_active:
                    logging.debug('ACTIVE USER')
                    auth.login(request, user)
                    return redirect(next_url)
                else:
                    logging.error('User is not active.')
                    error = 'AUTH_DISABLED'
            else:
                logging.error('User does not exists.')
                error = 'AUTH_FAILED'
        elif 'error_reason' in request.GET:
            logging.error('Facebook authentication failed.')
            error = 'AUTH_DENIED'
    elif request.user.is_authenticated():
        logging.debug('AUTHORIZED USER')
        return redirect(next_url)

    auth_url = utils.create_authorize_url(state=next_url)
    template_context = {'error': error, 'auth_url': auth_url}
    return render_to_response('login.html', template_context,
                              context_instance=RequestContext(request))