def authenticated( request, template='im/third_party_check_local.html', extra_context=None): if extra_context is None: extra_context = {} consumer = oauth.Consumer(settings.TWITTER_TOKEN, settings.TWITTER_SECRET) client = oauth.Client(consumer) if request.GET.get('denied'): return HttpResponseRedirect(reverse('edit_profile')) if not 'request_token' in request.session: messages.error(request, 'Twitter handshake failed') return HttpResponseRedirect(reverse('edit_profile')) token = oauth.Token(request.session['request_token']['oauth_token'], request.session['request_token']['oauth_token_secret']) client = oauth.Client(consumer, token) # Step 2. Request the authorized access token from Twitter. parts = list(urlsplit(access_token_url)) params = dict(parse_qsl(parts[3], keep_blank_values=True)) oauth_verifier = request.GET.get('oauth_verifier') params['oauth_verifier'] = oauth_verifier parts[3] = urlencode(params) parameterized_url = urlunsplit(parts) resp, content = client.request(parameterized_url, "GET") if resp['status'] != '200': try: del request.session['request_token'] except: pass messages.error(request, 'Invalid Twitter response') logger.error("Invalid twitter response %s", resp) return HttpResponseRedirect(reverse('edit_profile')) access_token = dict(cgi.parse_qsl(content)) userid = access_token['user_id'] username = access_token.get('screen_name', userid) provider_info = {'screen_name': username} affiliation = 'Twitter.com' try: return handle_third_party_login(request, 'twitter', userid, provider_info, affiliation) except AstakosUser.DoesNotExist, e: third_party_key = get_pending_key(request) user_info = {'affiliation': affiliation} return handle_third_party_signup(request, userid, 'twitter', third_party_key, provider_info, user_info, template, extra_context)
def authenticated(request, template='im/third_party_check_local.html', extra_context=None): if extra_context is None: extra_context = {} consumer = oauth.Consumer(settings.TWITTER_TOKEN, settings.TWITTER_SECRET) client = oauth.Client(consumer) if request.GET.get('denied'): return HttpResponseRedirect(reverse('edit_profile')) if not 'request_token' in request.session: messages.error(request, 'Twitter handshake failed') return HttpResponseRedirect(reverse('edit_profile')) token = oauth.Token(request.session['request_token']['oauth_token'], request.session['request_token']['oauth_token_secret']) client = oauth.Client(consumer, token) # Step 2. Request the authorized access token from Twitter. parts = list(urlsplit(access_token_url)) params = dict(parse_qsl(parts[3], keep_blank_values=True)) oauth_verifier = request.GET.get('oauth_verifier') params['oauth_verifier'] = oauth_verifier parts[3] = urlencode(params) parameterized_url = urlunsplit(parts) resp, content = client.request(parameterized_url, "GET") if resp['status'] != '200': try: del request.session['request_token'] except: pass messages.error(request, 'Invalid Twitter response') logger.error("Invalid twitter response %s", resp) return HttpResponseRedirect(reverse('edit_profile')) access_token = dict(cgi.parse_qsl(content)) userid = access_token['user_id'] username = access_token.get('screen_name', userid) provider_info = {'screen_name': username} affiliation = 'Twitter.com' try: return handle_third_party_login(request, 'twitter', userid, provider_info, affiliation) except AstakosUser.DoesNotExist, e: third_party_key = get_pending_key(request) user_info = {'affiliation': affiliation} return handle_third_party_signup(request, userid, 'twitter', third_party_key, provider_info, user_info, template, extra_context)
def test_extended_list_json(self): url = join_urls(self.pithos_path, self.user, 'apples') params = {'format': 'json', 'limit': 2, 'prefix': 'photos/animals', 'delimiter': '/'} r = self.get('%s?%s' % (url, urlencode(params))) self.assertEqual(r.status_code, 200) try: objects = json.loads(r.content) except: self.fail('json format expected') self.assertEqual(objects[0]['subdir'], 'photos/animals/cats/') self.assertEqual(objects[1]['subdir'], 'photos/animals/dogs/')
def get(self, path, data={}, **extra): "Request a response from the server using GET." r = { 'CONTENT_LENGTH': None, 'CONTENT_TYPE': 'text/html; charset=utf-8', 'PATH_INFO': path, 'QUERY_STRING': urlencode(data), 'REQUEST_METHOD': 'GET', } r.update(extra) return self.request(**r)
def setUp(self): super(IpnHandlerViewTestCase, self).setUp() self.view_url = reverse('ipn_handler') self.order = factories.create_order(5) ipn_data = json.loads(utils.load_fixture("refund_ipn.json")) ipn_data["pay_key"] = self.order.payment.pay_key self.ipn_data = urlencode(ipn_data) self.notifier_patcher = mock.patch('apps.purchase.models.notifier') self.notifier_patcher.start() self.addCleanup(self.notifier_patcher.stop)
def test_extended_list_xml(self): url = join_urls(self.pithos_path, self.user, 'apples') params = {'format': 'xml', 'limit': 4, 'prefix': 'photos', 'delimiter': '/'} r = self.get('%s?%s' % (url, urlencode(params))) self.assertEqual(r.status_code, 200) try: xml = minidom.parseString(r.content) except: self.fail('xml format expected') self.assert_extended(xml, 'xml', 'object', size=4) dirs = xml.getElementsByTagName('subdir') self.assertEqual(len(dirs), 2) self.assertEqual(dirs[0].attributes['name'].value, 'photos/animals/') self.assertEqual(dirs[1].attributes['name'].value, 'photos/plants/') objects = xml.getElementsByTagName('name') self.assertEqual(len(objects), 1) self.assertEqual(objects[0].childNodes[0].data, 'photos/me.jpg')
def browserid_verify(request): next = request.REQUEST.get('next') redirect_to = next or getattr(settings, 'LOGIN_REDIRECT_URL', '/') redirect_to_failure = getattr(settings, 'LOGIN_REDIRECT_URL_FAILURE', '/') form = BrowserIDForm(data=request.POST) if form.is_valid(): verifier = BrowserIDBackend().get_verifier() result = verifier.verify(form.cleaned_data['assertion'], get_audience(request)) if result: if request.user.is_authenticated( ) and request.user.email != result.email: # User is already signed and wants to change their email. request.user.email = result.email request.user.save() return redirect(reverse('users.edit_profile')) else: # Verified so log in email = result.email user = User.objects.filter(email=email) contributor = 'contributor' in request.POST if len(user) == 0: # Add the email to the session and redirect to signup request.session['browserid-email'] = email signup_url = reverse('users.browserid_signup') return redirect('%s?%s' % (signup_url, urlencode({'next': next}))) else: user = user[0] user.backend = 'django_browserid.auth.BrowserIDBackend' if contributor: add_to_contributors(request, user) auth.login(request, user) return redirect(redirect_to) return redirect(redirect_to_failure)
def browserid_verify(request): next = request.REQUEST.get('next') redirect_to = next or getattr(settings, 'LOGIN_REDIRECT_URL', '/') redirect_to_failure = getattr(settings, 'LOGIN_REDIRECT_URL_FAILURE', '/') form = BrowserIDForm(data=request.POST) if form.is_valid(): verifier = BrowserIDBackend().get_verifier() result = verifier.verify(form.cleaned_data['assertion'], get_audience(request)) if result: if request.user.is_authenticated() and request.user.email != result.email: # User is already signed and wants to change their email. request.user.email = result.email request.user.save() return redirect(reverse('users.edit_profile')) else: # Verified so log in email = result.email user = User.objects.filter(email=email) contributor = 'contributor' in request.POST if len(user) == 0: # Add the email to the session and redirect to signup request.session['browserid-email'] = email signup_url = reverse('users.browserid_signup') return redirect('%s?%s' % (signup_url, urlencode({'next': next}))) else: user = user[0] user.backend = 'django_browserid.auth.BrowserIDBackend' if contributor: add_to_contributors(request, user) auth.login(request, user) return redirect(redirect_to) return redirect(redirect_to_failure)
def oauth_login(request): print 'dropbox.views.oauth_login' # Step 0. Get the current hostname and port for the callback if request.META['SERVER_PORT'] == 443: current_server = "https://" + request.META['HTTP_HOST'] else: current_server = "http://" + request.META['HTTP_HOST'] oauth_callback = current_server + "/login/authenticated" # Step 1. Get a request token from Provider. sess = session.DropboxSession(settings.DROPBOX_KEY, settings.DROPBOX_SECRET, settings.DROPBOX_ACCESS) request_token = sess.obtain_request_token() url = sess.build_authorize_url(request_token) # Step 2. Store the request token in a session for later use. request.session['dropbox_request_token'] = request_token request.session['dropbox_session'] = sess # Step 3. Redirect the user to the authentication URL. param = urlencode({'oauth_callback': oauth_callback}) url = url + '&' + param print url return HttpResponseRedirect(url)
def browserid_verify(request): next = request.REQUEST.get("next") redirect_to = next or getattr(settings, "LOGIN_REDIRECT_URL", "/") redirect_to_failure = getattr(settings, "LOGIN_REDIRECT_URL_FAILURE", "/") form = BrowserIDForm(data=request.POST) if form.is_valid(): result = verify(form.cleaned_data["assertion"], get_audience(request)) if result: if request.user.is_authenticated(): # User is already signed in so they must want an email change request.user.email = result["email"] request.user.save() return redirect(reverse("users.edit_profile")) else: # Verified so log in email = result["email"] user = User.objects.filter(email=email) contributor = "contributor" in request.POST if len(user) == 0: # Add the email to the session and redirect to signup request.session["browserid-email"] = email signup_url = reverse("users.browserid_signup") return redirect("%s?%s" % (signup_url, urlencode({"next": next}))) else: user = user[0] user.backend = "django_browserid.auth.BrowserIDBackend" if contributor: add_to_contributors(request, user) auth.login(request, user) return redirect(redirect_to) return redirect(redirect_to_failure)
user.renew_token( flush_sessions=True, current_key=request.session.session_key ) try: user.save() except ValidationError, e: return HttpResponseBadRequest(e) next = restrict_next(next, domain=settings.COOKIE_DOMAIN) if settings.FORCE_PROFILE_UPDATE and \ not user.is_verified and not user.is_superuser: params = '' if next: params = '?' + urlencode({'next': next}) next = reverse('edit_profile') + params response = HttpResponse() # authenticate before login user = authenticate(email=user.email, auth_token=user.auth_token) login(request, user) request.session.set_expiry(user.auth_token_expires) if not next: next = settings.LOGIN_SUCCESS_URL response['Location'] = next response.status_code = 302 return response
renew = renew or user.token_expired() if renew: user.renew_token(flush_sessions=True, current_key=request.session.session_key) try: user.save() except ValidationError, e: return HttpResponseBadRequest(e) next = restrict_next(next, domain=settings.COOKIE_DOMAIN) if settings.FORCE_PROFILE_UPDATE and \ not user.is_verified and not user.is_superuser: params = '' if next: params = '?' + urlencode({'next': next}) next = reverse('edit_profile') + params response = HttpResponse() # authenticate before login user = authenticate(email=user.email, auth_token=user.auth_token) login(request, user) request.session.set_expiry(user.auth_token_expires) if not next: next = settings.LOGIN_SUCCESS_URL response['Location'] = next response.status_code = 302 return response
def get_absolute_url(self): return "?".join( (reverse("todo-day"), urlencode(tuple((i, str(getattr(self.date, i))) for i in ("year", "month", "day")))) )
def test_valid_response(self, mock_validate): mock_validate.return_value = True response = self.do_post(urlencode({"pay_key": "someignoredvalue"})) self.assertEqual(response.status_code, 200)
def setUp(self): super(IpnDataParseTestCase, self).setUp() data = json.loads(utils.load_fixture("refund_ipn.json")) # Use a querydict as that is what the client object will parse # and there are some subtleties to them self.data = QueryDict(urlencode(data))