Exemplo n.º 1
0
def client_access_request(request, provider, next=None):
    provider = provider.lower()
    try:
        if not request.session[provider]['request_token']['oauth_token'] == request.GET.get('oauth_token') \
            and request.GET.get('oauth_verifier') :
            return HttpResponseRedirect(reverse('georemindme.views.login_panel'))
    except:
        return HttpResponseRedirect(reverse('georemindme.views.login_panel'))
    #lee el token recibido
    if 'denied' in request.GET:
        del request.session[provider]
        if 'cls' in request.GET:
            return HttpResponseRedirect(reverse('geouser.views.close_window'))
        else:
            return reverse('geouser.views.dashboard')
    token = oauth2.Token(request.GET.get('oauth_token'), 
                         request.session[provider]['request_token']['oauth_token_secret'])
    token.set_verifier(request.GET.get('oauth_verifier'))
    
    consumer = oauth2.Consumer(settings.OAUTH[provider]['app_key'],
                               settings.OAUTH[provider]['app_secret'])
    client = oauth2.Client(consumer, token) 
    #lo intercambia por un token de acceso
    response, content = client.request(settings.OAUTH[provider]['access_token_url'], method="GET")
    if response['status'] != 200:
        raise Exception("Invalid response from server.")
    params = parse_qs(content, keep_blank_values=False)
    token = {   
                'oauth_token_secret' : params['oauth_token_secret'][0], 
                'oauth_token' : params['oauth_token'][0],
            }
    if provider == 'twitter':
        from clients.twitter import TwitterClient
        client = TwitterClient(token=oauth2.Token(token['oauth_token'], token['oauth_token_secret']))
        if request.user.is_authenticated():#usuario ya esta logeado, guardamos el token de su cuenta
            client.authorize(request.user, login = False if 'nologin' in request.GET else True)
        else:
            user = client.authenticate()
            init_user_session(request, user)
    
    elif provider == 'google':
        from clients.google import GoogleClient
        client = GoogleClient(token=oauth2.Token(token['oauth_token'], token['oauth_token_secret']))
        if request.user.is_authenticated():#usuario ya esta logeado, guardamos el token de su cuenta
            client.authorize(request.user)
        else:
            raise OAUTHException()
    else:
        raise OAUTHException("Invalid server.")
    if 'cls' in request.GET:
        return HttpResponseRedirect(reverse('geouser.views.close_window'))
    if next is None:
        next = reverse('geouser.views.dashboard')
    return HttpResponseRedirect(next)
Exemplo n.º 2
0
def facebook_access_request(request, next=None, close=None):
    code = request.GET.get('code', None)
    if code is not None:
        from clients.facebook import get_access_token
        OAUTH = settings.OAUTH
        if close:
            callback_url = OAUTH['facebook']['callback_url'] + 'close/'
        else:
            callback_url = OAUTH['facebook']['callback_url']
        try:
            content = get_access_token(
                code,
                callback_url,
                OAUTH['facebook']['app_key'],
                OAUTH['facebook']['app_secret'],
            )
        except:
            return facebook_authenticate_request(request, cls=close)


#        url = OAUTH['facebook']['access_token_url']+'?redirect_uri=%s' % OAUTH['facebook']['callback_url']
#        body = {
#                'client_id': OAUTH['facebook']['app_key'],
#                'client_secret': OAUTH['facebook']['app_secret'],
#                'code': code,
#                }
#        response, content = oauth2.httplib2.Http().request(url, method='POST', body=body)
#        if response['status'] != 200:
#            raise Exception(response)
        token = {
            'access_token': content,
        }
        from clients.facebook import FacebookClient
        client = FacebookClient(access_token=content)
        if request.user.is_authenticated(
        ):  #usuario ya esta logeado, guardamos el token de su cuenta
            client.authorize(request.user)
        else:
            user = client.authenticate()
            if isinstance(user, User):
                init_user_session(request, user)
    else:
        return HttpResponseRedirect(reverse('georemindme.views.login_panel'))
    if close:
        return HttpResponseRedirect(reverse('geouser.views.close_window'))
    if next is None:
        return HttpResponseRedirect(reverse('geouser.views.dashboard'))
    return HttpResponseRedirect(next)
Exemplo n.º 3
0
 def process_request(self, request):
     if 'signed_request' in request.REQUEST:
         data = parse_signed_request(request.REQUEST['signed_request'])
         if 'oauth_token' in data:
             request.facebook = {
                 'uid': data['user_id'],
                 'access_token': data['oauth_token'],
                 'client': FacebookClient(access_token=data['oauth_token'])
             }
     if not hasattr(request, 'facebook'):
         try:
             cookie = get_user_from_cookie(request.COOKIES)
             if cookie is not None:
                 request.facebook = {
                     'uid':
                     cookie['user_id'],
                     'access_token':
                     cookie['oauth_token'],
                     'client':
                     FacebookClient(access_token=cookie['oauth_token'])
                 }
         except:
             pass
     if not hasattr(request, 'facebook'):
         from facebookApp.watchers import disconnect_all
         disconnect_all()
     else:
         if request.user.is_authenticated():
             if request.facebook['client'].user is not None:
                 if request.facebook['client'].user.id != request.user.id:
                     # son usuarios distintos, cerramos la sesion del viejo usuario conectado
                     #request.session.delete()
                     from geouser.funcs import init_user_session
                     init_user_session(request,
                                       request.facebook['client'].user,
                                       remember=True,
                                       is_from_facebook=True)
                     from facebookApp.watchers import new_comment, new_vote, deleted_post
         else:
             if request.facebook['client'].user is not None:
                 # login desde facebook de un usuario conocido
                 from geouser.funcs import init_user_session
                 init_user_session(request,
                                   request.facebook['client'].user,
                                   remember=True,
                                   is_from_facebook=True)
                 from facebookApp.watchers import new_comment, new_vote, deleted_post
Exemplo n.º 4
0
def facebook_access_request(request, next=None, close=None):
    code = request.GET.get('code', None)
    if code is not None:
        from clients.facebook import get_access_token
        OAUTH = settings.OAUTH
        if close:
            callback_url = OAUTH['facebook']['callback_url']+'close/'
        else:
            callback_url = OAUTH['facebook']['callback_url']
        try:
            content = get_access_token(code, 
                                   callback_url,
                                   OAUTH['facebook']['app_key'],
                                   OAUTH['facebook']['app_secret'], 
                                   )
        except:
            return facebook_authenticate_request(request, cls=close)
#        url = OAUTH['facebook']['access_token_url']+'?redirect_uri=%s' % OAUTH['facebook']['callback_url']
#        body = {
#                'client_id': OAUTH['facebook']['app_key'],
#                'client_secret': OAUTH['facebook']['app_secret'],
#                'code': code,
#                }
#        response, content = oauth2.httplib2.Http().request(url, method='POST', body=body)
#        if response['status'] != 200:
#            raise Exception(response)
        token = {   
                'access_token' : content, 
            }
        from clients.facebook import FacebookClient
        client = FacebookClient(access_token = content)
        if request.user.is_authenticated():#usuario ya esta logeado, guardamos el token de su cuenta
            client.authorize(request.user)
        else:
            user = client.authenticate()
            if isinstance(user, User):
                init_user_session(request, user)
    else:
        return HttpResponseRedirect(reverse('georemindme.views.login_panel'))
    if close:
        return HttpResponseRedirect(reverse('geouser.views.close_window'))
    if next is None:
        return HttpResponseRedirect(reverse('geouser.views.dashboard'))
    return HttpResponseRedirect(next)
Exemplo n.º 5
0
 def process_request(self, request):
     if 'signed_request' in request.REQUEST:
         data = parse_signed_request(request.REQUEST['signed_request'])
         if 'oauth_token' in data:
             request.facebook = {'uid': data['user_id'],
                                 'access_token': data['oauth_token'],
                                 'client': FacebookClient(access_token=data['oauth_token'])
                                 }
     if not hasattr(request, 'facebook'):
             try:
                 cookie = get_user_from_cookie(request.COOKIES)
                 if cookie is not None:
                     request.facebook = {'uid': cookie['user_id'],
                                     'access_token': cookie['oauth_token'],
                                     'client': FacebookClient(access_token=cookie['oauth_token'])
                                 }
             except:
                 pass
     if not hasattr(request, 'facebook'):
         from facebookApp.watchers import disconnect_all
         disconnect_all()
     else:
         if request.user.is_authenticated():
             if request.facebook['client'].user is not None:
                 if request.facebook['client'].user.id != request.user.id:
                     # son usuarios distintos, cerramos la sesion del viejo usuario conectado
                     #request.session.delete()
                     from geouser.funcs import init_user_session
                     init_user_session(request, request.facebook['client'].user, remember=True, is_from_facebook=True)
                     from facebookApp.watchers import new_comment, new_vote, deleted_post
         else:
             if request.facebook['client'].user is not None:
                 # login desde facebook de un usuario conocido
                 from geouser.funcs import init_user_session
                 init_user_session(request, request.facebook['client'].user, remember=True, is_from_facebook=True)
                 from facebookApp.watchers import new_comment, new_vote, deleted_post
Exemplo n.º 6
0
def client_access_request(request, provider):
    provider = provider.lower()
    if not request.session[provider]['request_token']['oauth_token'] == request.GET.get('oauth_token') \
            and request.GET.get('oauth_verifier') :
        messages.error(request, _("Invalid response from server."))
        return HttpResponseRedirect(reverse('georemindme.views.home'))
    #lee el token recibido
    token = oauth2.Token(request.GET.get('oauth_token'), 
                         request.session[provider]['request_token']['oauth_token_secret'])
    token.set_verifier(request.GET.get('oauth_verifier'))
    
    consumer = oauth2.Consumer(settings.OAUTH[provider]['app_key'],
                               settings.OAUTH[provider]['app_secret'])
    client = oauth2.Client(consumer, token) 
    #lo intercambia por un token de acceso
    response, content = client.request(settings.OAUTH[provider]['access_token_url'], "GET")
    if response['status'] != '200':
        raise Exception("Invalid response from server.")
    params = parse_qs(content, keep_blank_values=False)
    token = {   
                'oauth_token_secret' : params['oauth_token_secret'][0], 
                'oauth_token' : params['oauth_token'][0],
            }
    if provider == 'twitter':
        from clients import TwitterClient
        client = TwitterClient(token=oauth2.Token(token['oauth_token'], token['oauth_token_secret']))
        if 'user' in request.session:#usuario ya esta logeado, guardamos el token de su cuenta
            if client.authorize(request.session['user']):
                messages.success(request, _('Got access from %s' % provider))
        else:
            user = client.authenticate()
            messages.success(request, _('Logged from %s' % provider))
            init_user_session(request, user)
    else:
        raise Exception("Invalid server.")
    return HttpResponseRedirect(reverse('geouser.views.dashboard'))
Exemplo n.º 7
0
def login_panel(request):
    from geouser.forms import SocialFacebookGoogleUserForm
    if hasattr(request, 'facebook'):
        if not request.user.is_authenticated():
            user = request.facebook['client'].authenticate()
            if not user:
                return render_to_response('register.html', {"permissions": __web_settings.OAUTH['facebook']['scope'] },
                              context_instance=RequestContext(request)
                              )
            # ya conociamos al usuario
            init_user_session(request, user, remember=True, is_from_facebook=True)
            request.user = user
        if request.user.is_authenticated():
            if request.user.username is None or request.user.email is None:
                if request.method == 'POST':
                    f = SocialFacebookGoogleUserForm(request.POST, 
                                       prefix='user_set_username', 
                                       initial = { 'email': request.user.email,
                                                   'username': request.user.username,
                                                 }
                                       )
                    if f.is_valid():
                        user = f.save(request.user)
                        if user:
                            init_user_session(request, user, remember=True, is_from_facebook=True)
                            return HttpResponseRedirect(reverse('facebookApp.views.dashboard'))
                else:
                    f = SocialFacebookGoogleUserForm(prefix='user_set_username', 
                                       initial = { 'email': request.user.email,
                                                   'username': request.user.username,
                                                  }
                                       )
                return render_to_response('generic/create_social_profile.html', {'form': f}, 
                                           context_instance=RequestContext(request)
                                          )
            else: # setup del usuario completo
                try:
                    request.facebook['client'].authorize(request.user)
                    init_user_session(request, request.user, remember=True, is_from_facebook=True)
                except:
                    return render_to_response('register.html', {'permissions': __web_settings.OAUTH['facebook']['scope'] },
                                            context_instance=RequestContext(request)
                          )
                return HttpResponseRedirect(reverse('facebookApp.views.dashboard'))
    #Identificarse o registrarse
    return render_to_response('register.html', {'permissions': __web_settings.OAUTH['facebook']['scope'] },
                                                context_instance=RequestContext(request)
                              )
Exemplo n.º 8
0
def login_panel(request):
    from geouser.forms import SocialFacebookGoogleUserForm
    if hasattr(request, 'facebook'):
        if not request.user.is_authenticated():
            user = request.facebook['client'].authenticate()
            if not user:
                return render_to_response(
                    'register.html',
                    {"permissions": __web_settings.OAUTH['facebook']['scope']},
                    context_instance=RequestContext(request))
            # ya conociamos al usuario
            init_user_session(request,
                              user,
                              remember=True,
                              is_from_facebook=True)
            request.user = user
        if request.user.is_authenticated():
            if request.user.username is None or request.user.email is None:
                if request.method == 'POST':
                    f = SocialFacebookGoogleUserForm(
                        request.POST,
                        prefix='user_set_username',
                        initial={
                            'email': request.user.email,
                            'username': request.user.username,
                        })
                    if f.is_valid():
                        user = f.save(request.user)
                        if user:
                            init_user_session(request,
                                              user,
                                              remember=True,
                                              is_from_facebook=True)
                            return HttpResponseRedirect(
                                reverse('facebookApp.views.dashboard'))
                else:
                    f = SocialFacebookGoogleUserForm(
                        prefix='user_set_username',
                        initial={
                            'email': request.user.email,
                            'username': request.user.username,
                        })
                return render_to_response(
                    'generic/create_social_profile.html', {'form': f},
                    context_instance=RequestContext(request))
            else:  # setup del usuario completo
                try:
                    request.facebook['client'].authorize(request.user)
                    init_user_session(request,
                                      request.user,
                                      remember=True,
                                      is_from_facebook=True)
                except:
                    return render_to_response(
                        'register.html', {
                            'permissions':
                            __web_settings.OAUTH['facebook']['scope']
                        },
                        context_instance=RequestContext(request))
                return HttpResponseRedirect(
                    reverse('facebookApp.views.dashboard'))
    #Identificarse o registrarse
    return render_to_response(
        'register.html',
        {'permissions': __web_settings.OAUTH['facebook']['scope']},
        context_instance=RequestContext(request))
Exemplo n.º 9
0
def client_access_request(request, provider, next=None):
    provider = provider.lower()
    try:
        if not request.session[provider]['request_token']['oauth_token'] == request.GET.get('oauth_token') \
            and request.GET.get('oauth_verifier') :
            return HttpResponseRedirect(
                reverse('georemindme.views.login_panel'))
    except:
        return HttpResponseRedirect(reverse('georemindme.views.login_panel'))
    #lee el token recibido
    if 'denied' in request.GET:
        del request.session[provider]
        if 'cls' in request.GET:
            return HttpResponseRedirect(reverse('geouser.views.close_window'))
        else:
            return reverse('geouser.views.dashboard')
    token = oauth2.Token(
        request.GET.get('oauth_token'),
        request.session[provider]['request_token']['oauth_token_secret'])
    token.set_verifier(request.GET.get('oauth_verifier'))

    consumer = oauth2.Consumer(settings.OAUTH[provider]['app_key'],
                               settings.OAUTH[provider]['app_secret'])
    client = oauth2.Client(consumer, token)
    #lo intercambia por un token de acceso
    response, content = client.request(
        settings.OAUTH[provider]['access_token_url'], method="GET")
    if response['status'] != 200:
        raise Exception("Invalid response from server.")
    params = parse_qs(content, keep_blank_values=False)
    token = {
        'oauth_token_secret': params['oauth_token_secret'][0],
        'oauth_token': params['oauth_token'][0],
    }
    if provider == 'twitter':
        from clients.twitter import TwitterClient
        client = TwitterClient(token=oauth2.Token(token['oauth_token'],
                                                  token['oauth_token_secret']))
        if request.user.is_authenticated(
        ):  #usuario ya esta logeado, guardamos el token de su cuenta
            client.authorize(request.user,
                             login=False if 'nologin' in request.GET else True)
        else:
            user = client.authenticate()
            init_user_session(request, user)

    elif provider == 'google':
        from clients.google import GoogleClient
        client = GoogleClient(token=oauth2.Token(token['oauth_token'],
                                                 token['oauth_token_secret']))
        if request.user.is_authenticated(
        ):  #usuario ya esta logeado, guardamos el token de su cuenta
            client.authorize(request.user)
        else:
            raise OAUTHException()
    else:
        raise OAUTHException("Invalid server.")
    if 'cls' in request.GET:
        return HttpResponseRedirect(reverse('geouser.views.close_window'))
    if next is None:
        next = reverse('geouser.views.dashboard')
    return HttpResponseRedirect(next)