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)
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)
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
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)
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
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'))
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) )
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))
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)