Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Merge remote-tracking branch 'upstream/master'

Conflicts:
	README.rst
	doc/backends/google.rst
	doc/configuration.rst
	doc/miscellaneous.rst
	example/app/pipeline.py
	example/app/views.py
	example/local_settings.py.template
	example/settings.py
	example/templates/home.html
	social_auth/__init__.py
	social_auth/backends/__init__.py
	social_auth/backends/browserid.py
	social_auth/backends/contrib/github.py
	social_auth/backends/contrib/instagram.py
	social_auth/backends/facebook.py
	social_auth/backends/google.py
	social_auth/backends/pipeline/misc.py
	social_auth/backends/twitter.py
	social_auth/tests/google.py
	social_auth/utils.py
	social_auth/views.py
  • Loading branch information...
commit c4b7e717d1840f0345d37c4ed8969b737ebf57b4 2 parents 85c568c + 60e4013
krvss krvss authored
Showing with 2,477 additions and 206 deletions.
  1. +1 −1  .gitignore
  2. +1,841 −0 ChangeLog
  3. +51 −24 README.rst
  4. +3 −1 contrib/tests/runtests.py
  5. +10 −5 contrib/tests/test_core.py
  6. +22 −0 doc/backends/google.rst
  7. +14 −12 doc/conf.py
  8. +51 −17 doc/configuration.rst
  9. +4 −4 doc/miscellaneous.rst
  10. +1 −1  doc/testing.rst
  11. +1 −0  example/app/models.py
  12. +3 −2 example/app/pipeline.py
  13. +3 −0  example/app/views.py
  14. +7 −2 example/manage.py
  15. +1 −0  setup.py
  16. +1 −1  social_auth/__init__.py
  17. +48 −25 social_auth/backends/__init__.py
  18. +4 −2 social_auth/backends/browserid.py
  19. +87 −0 social_auth/backends/contrib/fitbit.py
  20. +1 −1  social_auth/backends/contrib/flickr.py
  21. +1 −1  social_auth/backends/contrib/foursquare.py
  22. +61 −0 social_auth/backends/contrib/gae.py
  23. +43 −33 social_auth/backends/contrib/github.py
  24. +1 −1  social_auth/backends/contrib/instagram.py
  25. +2 −1  social_auth/backends/contrib/livejournal.py
  26. +52 −2 social_auth/backends/exceptions.py
  27. +33 −17 social_auth/backends/facebook.py
  28. +22 −5 social_auth/backends/google.py
  29. +3 −2 social_auth/backends/pipeline/associate.py
  30. +2 −3 social_auth/backends/pipeline/misc.py
  31. +3 −2 social_auth/backends/pipeline/social.py
  32. +2 −1  social_auth/backends/twitter.py
  33. +1 −1  social_auth/context_processors.py
  34. +2 −1  social_auth/signals.py
  35. +1 −1  social_auth/store.py
  36. +3 −1 social_auth/tests/facebook.py
  37. +17 −8 social_auth/tests/google.py
  38. +35 −7 social_auth/utils.py
  39. +39 −21 social_auth/views.py
2  .gitignore
View
@@ -1,6 +1,6 @@
*.pyc
.*.sw[po]
-test.db
+test*.db
local_settings.py
build/
dist/
1,841 ChangeLog
View
@@ -0,0 +1,1841 @@
+2012-03-03 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/backends/__init__.py: Only load defined (and enabled) backends.
+ Closes #277.
+
+2012-03-01 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/tests/google.py: PEP8
+
+ * contrib/tests/runtests.py, contrib/tests/test_core.py, doc/conf.py,
+ example/app/models.py, example/app/pipeline.py, example/app/views.py,
+ example/manage.py, setup.py, social_auth/backends/__init__.py,
+ social_auth/backends/contrib/fitbit.py,
+ social_auth/backends/contrib/foursquare.py,
+ social_auth/backends/contrib/gae.py, social_auth/backends/contrib/github.py,
+ social_auth/backends/contrib/instagram.py, social_auth/backends/facebook.py,
+ social_auth/backends/google.py, social_auth/context_processors.py,
+ social_auth/signals.py, social_auth/store.py, social_auth/tests/facebook.py,
+ social_auth/tests/google.py, social_auth/utils.py, social_auth/views.py: PEP8
+
+ * README.rst, doc/configuration.rst, doc/miscellaneous.rst, doc/testing.rst,
+ social_auth/backends/__init__.py, social_auth/backends/browserid.py,
+ social_auth/backends/contrib/gae.py, social_auth/backends/contrib/github.py,
+ social_auth/backends/contrib/livejournal.py,
+ social_auth/backends/exceptions.py, social_auth/backends/facebook.py,
+ social_auth/backends/google.py, social_auth/backends/pipeline/associate.py,
+ social_auth/backends/pipeline/social.py, social_auth/backends/twitter.py,
+ social_auth/utils.py, social_auth/views.py: Differentiate exceptions raised.
+ Closes #119. Refs #175
+
+2012-02-29 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst, doc/configuration.rst: Remove deprecated setting from docs.
+ Refs #175.
+
+2012-02-29 Adam McKerlie <adammckerlie@gmail.com>
+
+ * social_auth/backends/contrib/flickr.py: Typo
+
+2012-02-26 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/backends/__init__.py, social_auth/utils.py,
+ social_auth/views.py: Clean partial pipeline before auth process begins. Refs
+ #271
+
+ * .gitignore: Ignore test databases
+
+ * social_auth/backends/__init__.py, social_auth/backends/pipeline/misc.py,
+ social_auth/views.py: Clean partial pipeline on Stop exception. Closes #271
+
+2012-02-24 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/backends/contrib/gae.py, social_auth/backends/gae.py: Move
+ GoogleAppEngine backend to contrib and apply pep8. Refs #258.
+
+ * social_auth/backends/contrib/fitbit.py: PEP8 and use dsa setting util
+
+2012-02-24 Larry Price <laprice@gmail.com>
+
+ * social_auth/backends/contrib/fitbit.py: replaced with a version based on
+ the flickr backend. Works for basic functionality.
+
+2012-02-24 Seyi Ogunyemi <micrypt@gmail.com>
+
+ * doc/configuration.rst: Update doc/configuration.rst
+
+ * README.rst: Remove reference to deprecated SOCIAL_AUTH_USERNAME_FIXER.
+
+2012-02-23 tschmidt <tschmidt@sacfoodcoop.com>
+
+ * doc/backends/google.rst, social_auth/backends/google.py: added
+ GOOGLE_WHITE_LISTED_EMAILS setting and updated docs
+
+2012-02-22 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/views.py: Add missing argument.
+
+ * README.rst, doc/configuration.rst, social_auth/views.py: Inicial per
+ backend settings, just URLs so far.
+
+ * social_auth/utils.py, social_auth/views.py: Per backend-settings option.
+
+2012-02-21 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst, doc/miscellaneous.rst: Google group. Closes #263
+
+2012-02-20 Larry Price <laprice@aigle.local>
+
+ * social_auth/backends/contrib/fitbit.py: Added the fitbit.py which started
+ off as a clone of the github interface. current status: NOT FUNCTIONAL YET
+ Trying to debug.
+
+2012-02-20 tschmidt <tschmidt@sacfoodcoop.com>
+
+ * doc/backends/google.rst, social_auth/backends/google.py: added
+ GOOGLE_WHITE_LISTED_DOMAINS setting to Google OAuth, updated documentation
+
+2012-02-20 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/backends/__init__.py: Catch OAuth 400 response when user denies
+ access. Closes #260
+
+2012-02-19 User <user@goku.localdomain>
+
+ * social_auth/backends/gae.py: change name to google-appengine to match some
+ of the other backends. make sure we don't get redirected from our auth_url.
+
+2012-02-18 Derrick Petzold <contact@derrickpetzold.com>
+
+ * social_auth/views.py: If the user was already logged in they would not be
+ redirected to the corrent url if it was overriden in the session.
+
+2012-02-18 User <user@goku.localdomain>
+
+ * social_auth/backends/gae.py: Get GAE backend working properly.
+
+2012-02-17 User <user@goku.localdomain>
+
+ * social_auth/backends/gae.py: Add a social_auth wrapper backend around the
+ Google App Engine User API.
+
+2012-02-16 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/__init__.py: v0.6.6
+
+ * social_auth/backends/browserid.py, social_auth/backends/contrib/github.py,
+ social_auth/backends/facebook.py: Add missing 'auth' arguments before
+ authenticate. Refs #255
+
+ * README.rst, doc/configuration.rst: Remove old doc
+
+2012-02-16 Johannes Holmberg <johannes@update.uu.se>
+
+ * social_auth/backends/pipeline/misc.py: Use list.index instead of
+ tuple.index to regain compatibility with Python 2.5
+
+ * social_auth/backends/pipeline/misc.py: Add own tuple_index function to stay
+ compatible with python 2.5
+
+2012-02-15 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/backends/pipeline/user.py: Overrideable user check for
+ get_username pipeline. Refs #253
+
+ * social_auth/backends/__init__.py, social_auth/utils.py: Save model
+ instances into session in a easy format to retrieve it later. Refs #251
+
+2012-02-14 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/__init__.py: v0.6.5
+
+ * social_auth/backends/__init__.py, social_auth/backends/pipeline/misc.py,
+ social_auth/views.py: Improve and fix partial pipeline arguments management.
+ Closes #251
+
+2012-02-14 Jannis Leidel <jannis@leidel.info>
+
+ * README.rst: Fixed formatting of README file to correctly render as rST on
+ PyPI.
+
+2012-02-14 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst, doc/pipeline.rst: Styling
+
+ * README.rst, doc/configuration.rst, social_auth/views.py: Raise exceptions
+ setting. Closes #248.
+
+ * social_auth/__init__.py: v0.6.4
+
+ * social_auth/backends/yahoo.py: Change Yahoo OpenID URL. Closes #249
+
+2012-02-13 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst, doc/pipeline.rst: Doc fix
+
+2012-02-12 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst, doc/backends/index.rst, doc/backends/instagram.rst,
+ social_auth/backends/contrib/instagram.py: Instagram doc and small code
+ styling. Refs #247
+
+2012-02-12 Ravi Kotecha <kotecha.ravi@gmail.com>
+
+ * .gitignore, README.rst, example/settings.py,
+ social_auth/backends/contrib/instagram.py: Add Instagram support
+
+2012-02-11 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/__init__.py: v0.6.3
+
+ * README.rst, doc/backends/browserid.rst, doc/configuration.rst,
+ doc/miscellaneous.rst, doc/use_cases.rst, example/settings.py,
+ example/templates/base.html, example/templates/done.html,
+ example/templates/home.html, social_auth/backends/__init__.py,
+ social_auth/backends/browserid.py: BrowserID support. Closes #228
+
+2012-02-10 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * doc/index.rst: Remove repeated section
+
+2012-02-09 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/backends/facebook.py: Protect dict access. Closes #246
+
+ * README.rst, doc/index.rst, doc/use_cases.rst: Use cases doc section. Closes
+ #239
+
+ * README.rst, doc/configuration.rst: More ReST fixes
+
+ * README.rst, doc/configuration.rst: ReST fixes
+
+ * README.rst, doc/configuration.rst, social_auth/context_processors.py,
+ social_auth/utils.py: Context processor improvements on code and doc. Closes
+ #245
+
+ * social_auth/backends/twitter.py: Check for denied access on twitter
+ backend.
+
+ * social_auth/backends/__init__.py,
+ social_auth/backends/contrib/foursquare.py,
+ social_auth/backends/contrib/github.py,
+ social_auth/backends/contrib/linkedin.py,
+ social_auth/backends/contrib/livejournal.py,
+ social_auth/backends/contrib/orkut.py, social_auth/backends/facebook.py,
+ social_auth/backends/google.py, social_auth/backends/twitter.py,
+ social_auth/backends/yahoo.py, social_auth/utils.py, social_auth/views.py:
+ Improve logging. Closes #244
+
+2012-02-08 Johannes Holmberg <johannes@update.uu.se>
+
+ * social_auth/backends/__init__.py: Add a BACKENDS dictionary for the basic
+ OpenID backend, allowing it to be discovered by get_backends.
+
+ * social_auth/backends/__init__.py: Rename the BACKENDS cache to keep
+ get_backends from discovering it.
+
+2012-02-07 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst, doc/backends/github.rst: Small clarification about github conf.
+ Refs #241
+
+2012-02-06 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/views.py: Simplfy code
+
+ * README.rst, doc/configuration.rst, social_auth/backends/__init__.py: Extra
+ arguments for request-token process. Closes #235
+
+ * social_auth/backends/google.py: PEP8
+
+ * README.rst, doc/pipeline.rst: Line number
+
+ * README.rst, doc/pipeline.rst, example/app/pipeline.py,
+ example/app/views.py, example/local_settings.py.template,
+ example/templates/form.html, example/urls.py,
+ social_auth/backends/__init__.py, social_auth/backends/google.py,
+ social_auth/backends/pipeline/__init__.py,
+ social_auth/backends/pipeline/misc.py, social_auth/urls.py,
+ social_auth/views.py: Partial pipeline. Refs #90
+
+2012-02-05 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst, doc/deprecated.rst, doc/index.rst, doc/pipeline.rst: Deprecated
+ settings doc
+
+ * social_auth/__init__.py: v0.6.2
+
+ * README.rst, doc/index.rst, doc/intro.rst, doc/pipeline.rst,
+ social_auth/backends/__init__.py: Pipeline doc
+
+2012-02-04 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/backends/__init__.py, social_auth/backends/contrib/dropbox.py,
+ social_auth/backends/contrib/flickr.py,
+ social_auth/backends/contrib/github.py,
+ social_auth/backends/contrib/linkedin.py,
+ social_auth/backends/contrib/orkut.py, social_auth/backends/facebook.py,
+ social_auth/backends/google.py, social_auth/backends/pipeline/associate.py,
+ social_auth/backends/pipeline/social.py,
+ social_auth/backends/pipeline/user.py, social_auth/models.py,
+ social_auth/tests/__init__.py, social_auth/tests/facebook.py,
+ social_auth/tests/google.py, social_auth/tests/twitter.py,
+ social_auth/views.py: Improve settings values gathering
+
+2012-02-01 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/backends/__init__.py: PEP8
+
+2012-02-01 Andjelko Horvat <comel@knopso.com>
+
+ * social_auth/backends/__init__.py: Do not sign OAuth authorization request
+ (see http://tools.ietf.org/html/rfc5849#page-10).
+
+2012-01-22 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/views.py: Remove space
+
+2012-01-21 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * LICENSE: Update license
+
+2012-01-20 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst, doc/configuration.rst: Doc about django auth backend. Refs #154
+
+2012-01-20 Alexander Todorov <atodorov@otb.bg>
+
+ * Makefile, django-social-auth.spec: add .spec file and Makefile to build RPM
+ package
+
+2012-01-20 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/views.py: Use get instead of pop to get redirect value from
+ session. Refs #192
+
+ * social_auth/views.py: Get '?next=' value before the session is trashed.
+ Refs #221
+
+2012-01-20 yekibud <tony@yekibud.com>
+
+ * doc/backends/google.rst, social_auth/backends/google.py: added GOOGLE_
+ prefix to WHITE_LISTED_DOMAINS setting
+
+2012-01-18 Riccardo Magliocchetti <riccardo.magliocchetti@gmail.com>
+
+ * README.rst: README.rst: Remove reference to south introspection for
+ JSONField Since https://github.com/omab/django-social-auth/pull/57 the code
+ has been added to fields.py so no need to mention it in the README.
+
+2012-01-17 tschmidt <tschmidt@sacfoodcoop.com>
+
+ * doc/backends/google.rst, social_auth/backends/google.py: changed Google
+ OpenID WHITE_LISTED_DOMAINS setting to only check strings and added
+ documentation
+
+2012-01-16 tschmidt <tschmidt@sacfoodcoop.com>
+
+ * social_auth/backends/google.py: fixed WHITE_LISTED_DOMAINS default setting
+ and exception handling
+
+2012-01-16 tschmidt <none@none>
+
+ * social_auth/backends/google.py: restrict google login by white-listed
+ domains
+
+2012-01-10 Sid Mitra <sidmitra.del@gmail.com>
+
+ * social_auth/backends/__init__.py: Passing request instance to pipeline
+ methods.
+
+2012-01-09 Andres Villavicencio <andres@unholster.com>
+
+ * social_auth/backends/__init__.py: Using dict.get to avoid KeyError
+
+2012-01-09 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/backends/pipeline/user.py: Avoid override of id/pk attributes
+ with service provided data. Closes #217
+
+2012-01-09 Andres Villavicencio <andres@unholster.com>
+
+ * social_auth/backends/__init__.py: Fix to make
+ SOCIAL_AUTH_NEW_USER_REDIRECT_URL work
+
+2012-01-02 Ravi Kotecha <kotecha.ravi+github@gmail.com>
+
+ * social_auth/backends/contrib/foursquare.py: Fix for backend breaking with
+ "KeyError('lastName')" if foursquare user doesn't have a lastName set.
+
+2011-12-30 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/backends/__init__.py, social_auth/backends/contrib/dropbox.py,
+ social_auth/backends/contrib/flickr.py,
+ social_auth/backends/contrib/foursquare.py,
+ social_auth/backends/contrib/github.py,
+ social_auth/backends/contrib/livejournal.py,
+ social_auth/backends/contrib/orkut.py,
+ social_auth/backends/pipeline/social.py,
+ social_auth/backends/pipeline/user.py: Small PEP8 fixes and import orders
+
+ * social_auth/backends/__init__.py, social_auth/views.py: Pipeline call
+ cleanups
+
+2011-12-29 Stephen McDonald <steve@jupo.org>
+
+ * social_auth/backends/__init__.py, social_auth/context_processors.py,
+ social_auth/utils.py: Refactored loading of BACKENDS to provide a proper
+ entry point (get_backends) responsible for populating BACKENDS where
+ required.
+
+ * social_auth/context_processors.py: Cleaned up whitespace.
+
+2011-12-28 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/tests/twitter.py: Remove pdb line
+
+2011-12-27 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * doc/configuration.rst: Doc fixes
+
+2011-12-25 Alexey Kinyov <rudy@05bit.com>
+
+ * LICENCE, LICENCE.django-openid-auth, LICENSE, LICENSE.django-openid-auth,
+ README.rst: * renames: LICENCE -> LICENSE, LICENCE.django-openid-auth ->
+ LICENSE.django-openid-auth * chapter on basic usage added to README.rst
+
+2011-12-25 Stephen McDonald <steve@jupo.org>
+
+ * README.rst, doc/configuration.rst: Fixed a docs typo.
+
+ * example/settings.py, example/social_auth: Remove duplicate package from the
+ example app and load it from the parent path in the settings module.
+
+ * social_auth/tests/base.py, social_auth/tests/facebook.py,
+ social_auth/tests/google.py, social_auth/tests/twitter.py: Added testing for
+ cached backend loading.
+
+ * README.rst, doc/configuration.rst: Removed SOCIAL_AUTH_IMPORT_BACKENDS from
+ docs as its deprecated.
+
+ * social_auth/backends/__init__.py: Refactored backend loading to avoid a
+ race condition. Fixes #204
+
+2011-12-22 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/__init__.py: v0.6.1
+
+ * social_auth/backends/__init__.py, social_auth/backends/google.py: Fix
+ google oauth athorization request. Closes #202.
+
+2011-12-21 Tim Richardson <mrichytech@gmail.com>
+
+ * social_auth/backends/__init__.py: Since "Google-Oauth2" is called precisely
+ that and we want to use "GOOGLE_OAUTH2_AUTH_EXTRA_ARGUMENTS = {'access_type':
+ 'offline'}" in our settings we must replace "-" with "_"
+
+2011-12-18 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/backends/facebook.py: Fix log parameters
+
+ * social_auth/backends/facebook.py: Remove extra line
+
+ * README.rst, doc/configuration.rst, social_auth/views.py: Difference
+ active/inactive users on complete process. Closes #197
+
+2011-12-15 Youngrok pak <pak.youngrok@gmail.com>
+
+ * social_auth/views.py: read redirect field value from session before login()
+ will flush session
+
+2011-12-13 Daniel Greenfeld <pydanny@gmail.com>
+
+ * doc/conf.py: Bump the version in Sphinx to match the released version. This
+ is confusing me! ;)
+
+2011-12-06 Przemek Lewandowski <prze.lewandowski@gmail.com>
+
+ * social_auth/backends/facebook.py: Unnecessary set django username as
+ facebook full name.
+
+2011-12-03 Sandeep <sandeep@systematixtechnocrates.com>
+
+ * social_auth/views.py: Patch for login error message.
+
+2011-11-24 Przemek Lewandowski <prze.lewandowski@gmail.com>
+
+ * social_auth/backends/__init__.py: Fixed is_new user flag from pipelines to
+ complete_process view helper.
+
+2011-11-18 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/backends/pipeline/user.py: That was dumb. Fixes #182
+
+2011-11-18 Steven Van Bael <steven.v.bael@gmail.com>
+
+ * social_auth/backends/__init__.py: Override get_user() in SocialAuthBackend
+ so it supports returning users from a custom user model
+
+2011-11-17 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/fields.py: Use str(e) to get exception message. Refs gh-176
+
+2011-11-15 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/fields.py: Fix JSONField rendering on admin section. Closes
+ gh-176
+
+2011-11-14 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/backends/__init__.py: Don't incude OpenId backend if disabled.
+ Closes gh-179
+
+2011-10-31 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/backends/facebook.py: Code cleanup
+
+2011-10-29 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/backends/google.py: PEP8
+
+2011-10-29 mlavin <markdlavin@gmail.com>
+
+ * social_auth/backends/google.py: Don't set xoauth_displayname for registered
+ Google OAuth applications. Refs #156.
+
+2011-10-28 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/backends/pipeline/social.py: Return User to avoid garbage user
+ creation. Closes gh-169
+
+2011-10-25 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/backends/pipeline/user.py: PyLint
+
+ * example/settings.py, social_auth/backends/contrib/flickr.py: Fix Flickr
+ attribute getter
+
+ * social_auth/backends/contrib/flickr.py: PyLint
+
+2011-10-22 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/backends/__init__.py: Fix syntax error
+
+2011-10-21 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/fields.py: South migration code for JSONField. Refs gh-57
+
+2011-10-18 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/backends/__init__.py, social_auth/utils.py,
+ social_auth/views.py: Clean imports
+
+2011-10-18 Luis Nell <ln@nells.eu>
+
+ * setup.py: Add new non-magical pipeline to setup.py
+
+2011-10-17 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/__init__.py: v0.6.0
+
+ * social_auth/backends/pipeline/__init__.py,
+ social_auth/backends/pipeline/associate.py,
+ social_auth/backends/pipeline/social.py,
+ social_auth/backends/pipeline/user.py: Issue warnings for deprecated
+ settings. Refs gh-90
+
+ * social_auth/backends/__init__.py: Remove debug code. Refs gh-90
+
+ * example/settings.py, social_auth/backends/__init__.py,
+ social_auth/backends/exceptions.py,
+ social_auth/backends/pipeline/__init__.py,
+ social_auth/backends/pipeline/associate.py,
+ social_auth/backends/pipeline/social.py,
+ social_auth/backends/pipeline/user.py, social_auth/views.py: Pipeline. Refs
+ gh-90
+
+2011-10-10 Daniel G. Taylor <danielgtaylor@gmail.com>
+
+ * social_auth/backends/contrib/flickr.py: Fix Dropbox references to say
+ Flickr instead.
+
+2011-10-10 Daniel G. Taylor <dan@programmer-art.org>
+
+ * README.rst: Update contributors in README
+
+ * social_auth/context_processors.py: Add context processor to access social
+ auth information by backend name, useful to easily provide backend-specific
+ functionality in your app by checking e.g. social_auth.facebook and allowing
+ the user to publish to Facebook if it exists.
+
+ * README.rst, social_auth/backends/contrib/flickr.py: Add Flickr backend
+
+2011-10-06 Daniel G. Taylor <dan@programmer-art.org>
+
+ * social_auth/backends/contrib/dropbox.py: Remove unneeded print statement
+
+ * README.rst: Fix typo
+
+ * README.rst, social_auth/backends/contrib/dropbox.py: Add support for
+ Dropbox OAuth so that users can associate their account with Dropbox and
+ allow getting / putting files easily
+
+2011-09-27 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst, doc/configuration.rst: Fix docs. Closes gh-149
+
+2011-09-26 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/__init__.py: v0.5.13
+
+ * social_auth/backends/__init__.py, social_auth/backends/facebook.py: Migrate
+ Facebook to OAuth2. Closes gh-134
+
+2011-09-19 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/backends/twitter.py: Fix twitter first_name/last_name filling.
+ Closes gh-146
+
+ * social_auth/models.py, social_auth/views.py: Remove ERROR_KEY/NAME_KEY
+
+2011-09-19 Mathijs de Bruin <mathijs@mathijsfietst.nl>
+
+ * social_auth/backends/facebook.py: Even more detailed logging of fetched
+ user data.
+
+ * social_auth/backends/__init__.py: Whoops.
+
+ * social_auth/utils.py: Beware of cyclical imports!
+
+ * social_auth/backends/__init__.py: Some more logging.
+
+ * social_auth/views.py: Get rid of session logging (?) and replaced by proper
+ Python error logging, including request data (so Sentry knows what to do with
+ it).
+
+ * social_auth/backends/facebook.py: Whoops in FB logging patch.
+
+ * social_auth/backends/__init__.py, social_auth/backends/facebook.py: Some
+ exception logging, making debugging easier.
+
+ * social_auth/utils.py: Helper function for 'clean' logging of data.
+
+ * social_auth/backends/__init__.py,
+ social_auth/backends/contrib/foursquare.py,
+ social_auth/backends/contrib/github.py,
+ social_auth/backends/contrib/linkedin.py,
+ social_auth/backends/contrib/livejournal.py,
+ social_auth/backends/contrib/orkut.py, social_auth/backends/facebook.py,
+ social_auth/backends/google.py, social_auth/backends/twitter.py,
+ social_auth/backends/yahoo.py, social_auth/views.py: Make a named logger
+ available everywhere we might need it.
+
+2011-09-16 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/__init__.py: v0.5.12
+
+ * social_auth/views.py: Additional params to complete view
+
+ * social_auth/backends/__init__.py: Define sender
+
+ * social_auth/__init__.py: v0.5.11
+
+ * social_auth/backends/__init__.py, social_auth/signals.py: Send signal for
+ cases where tracking failed registering is needed
+
+ * social_auth/backends/__init__.py, social_auth/views.py: Allow views to pass
+ extra parameters to authentication backends
+
+2011-09-15 George Dorn <georgedorn@gmail.com>
+
+ * social_auth/urls.py: Don't assume that the association_id (actually, user
+ id) is a number.
+
+2011-09-12 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst, doc/miscellaneous.rst: Fix link reference
+
+2011-09-11 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/__init__.py: v0.5.10
+
+2011-09-09 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst, doc/miscellaneous.rst: Mention
+ http://djangopackages.com/grids/g/social-auth-backends/ in docs
+
+2011-09-08 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/__init__.py: v0.5.9
+
+ * social_auth/views.py: Leave exception handling to decorator
+
+2011-09-07 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/__init__.py: v0.5.8
+
+2011-09-06 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst, doc/configuration.rst, social_auth/views.py: Switch for
+ sanitize redirect call
+
+2011-08-29 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/context_processors.py: Fix error on context processor. Closes
+ gh-137.
+
+ * example/app/views.py, example/templates/error.html, social_auth/views.py:
+ Use messages framework if available. Refs gh-136
+
+ * social_auth/views.py: Improve error handling. Closes gh-136
+
+2011-08-29 Marco Monaco <inventore1@gmail.com>
+
+ * social_auth/views.py: removed logging
+
+ * social_auth/views.py: modified the exception handling to be more uniform
+ with social_auth
+
+2011-08-28 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/backends/contrib/github.py: Use blank string if no email.
+ Closes gh-135
+
+2011-08-26 Marco Monaco <inventore1@gmail.com>
+
+ * social_auth/views.py: if a backend crashes the exception is catched, logged
+ and the user is redirected to a specific error page
+
+2011-08-25 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst, doc/backends/google.rst, doc/configuration.rst,
+ example/local_settings.py.template, social_auth/backends/google.py: Rename
+ GOOGLE_OAUTH2_CLIENT_KEY to GOOGLE_OAUTH2_CLIENT_ID, keep backward
+ compatibility name. Closes gh-133
+
+ * README.rst, doc/backends/google.rst: Doc fix
+
+ * social_auth/__init__.py: v0.5.7
+
+ * social_auth/backends/__init__.py: Protect for possible race condition. Refs
+ #131
+
+2011-08-24 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst, doc/configuration.rst, social_auth/backends/__init__.py,
+ social_auth/backends/contrib/github.py, social_auth/backends/facebook.py: Add
+ setting to define extra arguments that should be sent to providers
+
+ * social_auth/backends/facebook.py: Style for items
+
+ * social_auth/backends/facebook.py: Reduce indentation
+
+2011-08-23 Mike Zupan <mike@zcentric.com>
+
+ * README.rst: error in the readme.. should be foursquare not orkut for the
+ FoursquareBackend
+
+2011-08-22 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/models.py: Remove fields and methods check for custom user
+ models. Closes gh-126
+
+2011-08-22 revolunet <julien@bouquillon.com>
+
+ * social_auth/backends/contrib/github.py: fix typo first_name
+
+2011-08-22 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst, doc/backends/github.rst, doc/backends/index.rst,
+ social_auth/backends/contrib/github.py: Small changes to github backend doc
+ and code. Refs #122
+
+2011-08-21 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/__init__.py: v0.5.6
+
+ * social_auth/backends/__init__.py: Fix user details update
+
+2011-08-19 revolunet <julien@bouquillon.com>
+
+ * README.rst: README update for github
+
+ * README.rst, example/local_settings.py.template,
+ social_auth/backends/contrib/github.py: add github OAuth backend fix #122
+
+2011-07-25 Cassus Adam Banko <banko.adam@gmail.com>
+
+ * social_auth/tests/__init__.py: settings options to control which tests to
+ run SOCIAL_AUTH_TEST_TWITTER, SOCIAL_AUTH_TEST_GOOGLE,
+ SOCIAL_AUTH_TEST_FACEBOOK
+
+2011-07-26 Cassus Adam Banko <banko.adam@gmail.com>
+
+ * social_auth/backends/facebook.py: switch to urllib2 urlopen - the old one
+ blocked for a long time
+
+2011-08-16 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/__init__.py: v0.5.5
+
+ * social_auth/views.py: Do not use current user when completing /login/
+ process. Closes gh-107
+
+2011-08-13 Michael Bashkirov <bashmish@gmail.com>
+
+ * social_auth/backends/__init__.py: Fixed bug in OpenIDBackend.extra_data()
+
+2011-07-11 Lior Sion <lior.sion@gmail.com>
+
+ * README.rst: slight readme change to avoid confusion
+
+2011-08-14 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst, doc/configuration.rst: Mention URL names prefix in doc. Refs
+ gh-115
+
+ * social_auth/__init__.py: v0.5.4
+
+ * social_auth/backends/__init__.py: Avoid updating with empty values. Closes
+ gh-111
+
+ * social_auth/__init__.py: v0.5.3
+
+ * social_auth/views.py: Remove more lame prints
+
+ * social_auth/__init__.py: v0.5.2
+
+ * social_auth/context_processors.py: Remove lame print :-/
+
+ * social_auth/__init__.py: v0.5.1
+
+ * README.rst, doc/configuration.rst: Document context processors. Refs gh-113
+
+ * example/app/views.py, example/settings.py, example/templates/done.html,
+ example/templates/home.html: Make use of context processors on example app.
+ Refs gh-113
+
+ * social_auth/context_processors.py, social_auth/utils.py: SocialAuth context
+ processors. Closes gh-113
+
+ * README.rst, doc/configuration.rst, example/settings.py,
+ social_auth/backends/__init__.py: Add setting to control enabled backends.
+ Closes gh-112
+
+ * social_auth/views.py: Decorate views to retrieve backend or return http
+ error if not correct. Closes gh-116
+
+ * social_auth/__init__.py: v0.5.0
+
+ * social_auth/backends/google.py: Use primary email as user ID for Google
+ OpenId. Closes gh-117
+
+2011-07-17 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/views.py: Avoid csrf check on complete views in case provider
+ uses POST and doesn't send CSRF token. Refs gh-67
+
+2011-07-16 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/backends/__init__.py: Use details username only if it's
+ non-blank. Closes gh-104
+
+2011-07-14 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/__init__.py: v0.4.2
+
+ * social_auth/backends/__init__.py, social_auth/views.py: Refactor repeated
+ code. Refs gh-102
+
+2011-07-14 Siddharth Mitra <sidmitra.del@gmail.com>
+
+ * social_auth/views.py: Adding exception handling for Value Error: Account
+ already in use, in view.associate_complete
+
+2011-07-11 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/backends/__init__.py: Change data loading order to be more
+ useful when signals are called. Refs gh-99
+
+ * social_auth/__init__.py: v0.4.1
+
+ * social_auth/views.py: Fix association redirect URL bug
+
+2011-07-10 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * example/local_settings.py.template: Misspell
+
+ * example/local_settings.py.template: Fix URL name in example settings.
+ Closes gh-101
+
+2011-07-03 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * example/app/views.py, example/templates/done.html,
+ example/templates/home.html: Dynamic backend list on example app
+
+ * social_auth/__init__.py: v0.4.0
+
+ * example/templates/done.html, example/templates/home.html,
+ social_auth/tests/facebook.py, social_auth/tests/google.py,
+ social_auth/tests/twitter.py, social_auth/urls.py, social_auth/views.py:
+ Non-backward compatible URL name changes. Closes gh-95
+
+ * social_auth/views.py: Redirect new users to properly. Closes gh-98
+
+2011-06-29 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst, doc/configuration.rst, social_auth/views.py: Association and
+ Disconnect custom URLs
+
+ * README.rst, doc/configuration.rst, social_auth/views.py: Associationd and
+ Disconnect custom URLs
+
+2011-06-21 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/__init__.py: v0.3.20
+
+ * social_auth/backends/contrib/linkedin.py: Fix linkedin data processing.
+ Closes #91
+
+ * README.rst, doc/miscellaneous.rst: Add import note to warn about recursive
+ import case
+
+ * example/app/views.py, example/templates/done.html,
+ social_auth/backends/__init__.py, social_auth/urls.py: Rename disconnect
+ individual view and simplify example done view. Refs #85.
+
+ * social_auth/backends/contrib/livejournal.py: Correct exception
+ initialization
+
+ * social_auth/backends/facebook.py: Use facebook username if present in
+ response. Closes gh-83
+
+ * social_auth/views.py: Move some settings to the top
+
+2011-06-20 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/backends/__init__.py: Force username field limit when
+ generating username. Closes gh-93
+
+2011-06-20 Flavio Curella <flavio.curella@gmail.com>
+
+ * social_auth/views.py: fixes an UnboundLocalError that occours when
+ SOCIAL_AUTH_SESSION_EXPIRATION is set to False
+
+2011-06-13 Rohan Jain <crodjer@gmail.com>
+
+ * example/settings.py: Redirect to / on login Prevent 404 for profile page
+ by redirecting to '/' page always on login.
+
+ * social_auth/backends/__init__.py, social_auth/urls.py,
+ social_auth/views.py: Disconnect accounts by associations. Fix gh-#85 Add
+ url for disconnecting by individual association. Allow association id as arg
+ when dissociating. This does not add any backward compatibility issues.
+
+2011-06-03 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst: Link to Read the Docs documentation
+
+ * social_auth/__init__.py: v0.3.19
+
+ * README.rst, doc/configuration.rst, social_auth/backends/__init__.py,
+ social_auth/views.py: Add redirect url for newly created users. Closes gh-47
+
+2011-06-02 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/__init__.py: v0.3.18
+
+ * README.rst, doc/backends/facebook.rst, doc/backends/google.rst,
+ doc/backends/oauth.rst, doc/backends/openid.rst, doc/backends/twitter.rst,
+ doc/configuration.rst, doc/demo.rst, doc/installing.rst, doc/signals.rst,
+ doc/testing.rst: Docs small improvements
+
+ * README.rst, doc/backends/index.rst, doc/backends/linkedin.rst,
+ social_auth/backends/contrib/linkedin.py: Add linkedin fields selector
+ support
+
+2011-05-30 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/models.py: Properly split custom user string for get_model
+ usage. Closes gh-80
+
+2011-05-27 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/__init__.py: v0.3.17
+
+ * social_auth/backends/contrib/linkedin.py: Use cgi.parse_qs instead of
+ urlparse one, import ExpatError properly. Closes gh-78
+
+ * social_auth/backends/contrib/orkut.py: Send orkut scope on each request,
+ check email value properly. Closes gh-77
+
+ * example/app/views.py, example/templates/done.html, social_auth/views.py:
+ Add last login backend name to session on login. Closes gh-76
+
+2011-05-25 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * contrib/tests/test_core.py: Check facebook Allow app screen on test
+
+2011-05-23 Miguel Araujo Perez <miguel.araujo.perez@gmail.com>
+
+ * contrib/tests/test_core.py: Fixing English grammar error, not my native
+ language, sorry
+
+ * contrib/tests/runtests.py: Updating test runner to use
+ DjangoTestSuiteRunner instead of function run_tests
+
+2011-05-23 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst, doc/testing.rst: Selenium tests doc
+
+ * social_auth/views.py: Remove unused import
+
+ * social_auth/backends/__init__.py, social_auth/views.py: Use OpenID
+ identity_url field to identify UserSocialAuth instances. Closes gh-73
+
+2011-05-21 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst: More markdown fixes
+
+ * README.rst, doc/miscellaneous.rst: README fix
+
+ * README.rst, doc/miscellaneous.rst: Add doc about convore community
+
+2011-05-19 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/__init__.py: v0.3.16
+
+ * contrib/models.py, example/urls.py, social_auth/tests/base.py: Endline
+ spaces and unused import cleanup
+
+ * example/templates/done.html, example/templates/home.html: Foursquare links
+ on example page
+
+ * README.rst, doc/configuration.rst, doc/contributions.rst,
+ social_auth/backends/contrib/foursquare.py: Docs
+
+2011-05-19 Duccio C <bedspax@gmail.com>
+
+ * social_auth/backends/contrib/foursquare.py,
+ social_auth/backends/foursquare.py: Foursquare support
+
+2011-05-19 Miguel Araujo Perez <miguel.araujo.perez@gmail.com>
+
+ * contrib/tests/test_core.py: Twitter's input password id changed, updating
+ test
+
+2011-05-18 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * .gitignore, contrib/tests/test_core.py, contrib/tests/test_settings.py,
+ contrib/tests/test_settings.py.template: Small changes to selenium tests
+
+ * contrib/tests/runtests.py: Small changes to runtest script
+
+2011-05-16 JasonGiedymin <jason.giedymin@gmail.com>
+
+ * README.rst: - Even clearer SOCIAL_AUTH_ASSOCIATE_BY_MAIL directions. Yes, I
+ absolutely need more coffee.
+
+ * README.rst: Slightly confusing directions for the
+ SOCIAL_AUTH_ASSOCIATE_BY_MAIL param. Maybe I need more coffee? :-P
+
+2011-05-05 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst, doc/index.rst, doc/miscellaneous.rst: Add doc about South
+ migrations
+
+2011-05-04 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/views.py: Use filter instead of get to avoid 'Multiple objects
+ returned' error. Closes gh-52
+
+ * README.rst, doc/configuration.rst, social_auth/backends/__init__.py: Move
+ UUID max length to settings. Closes gh-62
+
+2011-05-01 Miguel Araujo Perez <miguel.araujo.perez@gmail.com>
+
+ * contrib/tests/test_settings.py: Adding more User accounts to settings.py.
+
+ * contrib/tests/test_core.py: Adding Selenium2 Linkedin test.
+
+ * contrib/tests/test_core.py: Addding Selenium2 facebook test.
+
+ * contrib/tests/test_core.py: Adding Selenium2 google-oauth and google-oauth2
+ tests. Both up and running.
+
+ * contrib/models.py, contrib/tests/runtests.py, contrib/tests/test_core.py,
+ contrib/tests/test_settings.py: Adding contrib app to the root level.
+ Contains a tests directory with Selenium2 tests for django-social-auth
+ contrib is the minimum viable app structure. DjangoTestSuiteRunner expects a
+ file named tests or a module named tests.
+
+ * social_auth/tests/runtests.py, social_auth/tests/test_core.py,
+ social_auth/tests/test_settings.py: Moving Selenium2 testing to contrib
+ directory as discussed in GH-25
+
+2011-04-30 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/__init__.py: v0.3.15
+
+ * setup.py: Fixed licence in setup.py file. Closes gh-60
+
+2011-04-28 Roderic Morris <roderyc@gmail.com>
+
+ * social_auth/backends/__init__.py: Include social_user in exception raised
+ when an account is already registered. Give exception handling code more
+ information to mitigate the conflict.
+
+ * social_auth/backends/__init__.py: Don't ignore user defined EXTRA_DATA.
+
+2011-04-27 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/backends/__init__.py, social_auth/views.py: Use request.REQUEST
+ because some providers use form URLs with GET parameters
+
+2011-04-27 Ian Langworth ☠ <ian@langworth.com>
+
+ * README.rst: Fixed a tiny typo in the README
+
+2011-04-21 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/__init__.py: v0.3.14
+
+2011-04-21 Seyi Ogunyemi <micrypt@gmail.com>
+
+ * social_auth/admin.py: korneevm's fix for Issue #55
+
+2011-04-20 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/fields.py: Properly convert JSONField values to string when
+ doing dumpdata. Closes gh-53
+
+2011-04-18 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/backends/__init__.py, social_auth/backends/contrib/orkut.py,
+ social_auth/backends/facebook.py, social_auth/backends/google.py,
+ social_auth/backends/twitter.py: Use ValueError instad of JSONDecodeError to
+ support django.utils.simplejson utility properly on systems where
+ python-simplejson is not present
+
+2011-04-15 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/__init__.py: v0.3.13
+
+ * README.rst, doc/configuration.rst, social_auth/views.py: Correct
+ user-defined redirect page that overrides django auth app LOGIN_REDIRECT_URL.
+ Closes gh-47
+
+2011-04-14 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst, doc/signals.rst: Updated doc with user-new signal details
+
+ * social_auth/backends/__init__.py: Fix email association if clause. Closes
+ gh-51.
+
+ * social_auth/__init__.py: v0.3.12
+
+ * README.rst, doc/configuration.rst, social_auth/backends/__init__.py:
+ Associate users if the share the same email address and if there's only a
+ single user entry with same email. Closes gh-49
+
+ * social_auth/backends/__init__.py: Grouped settings on top of module
+
+2011-04-13 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/__init__.py: v0.3.11
+
+2011-04-13 Jakub Roztočil <jakub@roztocil.name>
+
+ * social_auth/backends/__init__.py: Fixed
+ `settings.SOCIAL_AUTH_USERNAME_FIXER`
+
+2011-04-01 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/__init__.py: v0.3.10
+
+ * social_auth/backends/__init__.py: Fix bug caused by undefined username
+ variable
+
+2011-03-31 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/fields.py: Use get_prep_value instead of the database related
+ one. Closes gh-42
+
+2011-03-29 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/__init__.py: v0.3.9
+
+ * social_auth/backends/__init__.py: User uuid4 to generate unique usernames.
+ Closes gh-41
+
+ * setup.py: Typo
+
+ * social_auth/fields.py: Use get_db_prep_value instead of get_db_prep_save.
+ Closes gh-42
+
+2011-03-27 Miguel Araujo Perez <miguel.araujo.perez@gmail.com>
+
+ * social_auth/tests/__init__.py, social_auth/tests/runtests.py,
+ social_auth/tests/test_core.py, social_auth/tests/test_settings.py: Adding
+ Twitter Backend testing using Selenium2 aka "WebDriver"
+
+2011-03-25 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst, doc/testing.rst, social_auth/tests/__init__.py,
+ social_auth/tests/base.py, social_auth/tests/facebook.py,
+ social_auth/tests/google.py, social_auth/tests/twitter.py: Google OpenID
+ testing, improvements pending. Refs gh-25
+
+ * .gitignore: Ignore some scripts html on example dir
+
+ * README.rst, doc/testing.rst, social_auth/tests/__init__.py,
+ social_auth/tests/base.py, social_auth/tests/facebook.py: Facebook login
+ testing. Refs gh-25
+
+ * social_auth/tests/base.py, social_auth/tests/twitter.py: Twitter tests
+ using urllib2 module. Refs gh-25
+
+2011-03-24 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * requirements.txt, setup.py: Updated django version and added
+ requirements.txt file
+
+ * social_auth/backends/__init__.py: Create random username if none was
+ supplied or generated. Closes gh-40
+
+2011-03-21 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * doc/conf.py: Remove static directory setting
+
+ * doc/backends/index.rst, doc/index.rst: Doc improvements
+
+ * .gitignore, doc/Makefile, doc/backends/facebook.rst,
+ doc/backends/google.rst, doc/backends/oauth.rst, doc/backends/openid.rst,
+ doc/backends/twitter.rst, doc/bugs.rst, doc/conf.py, doc/configuration.rst,
+ doc/contributions.rst, doc/demo.rst, doc/index.rst, doc/installing.rst,
+ doc/intro.rst, doc/signals.rst, doc/testing.rst: Initial documentation
+ migration to sphinx
+
+2011-03-15 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/backends/google.py: Removed unneeded var
+
+ * README.rst: Amend doc
+
+ * README.rst, social_auth/__init__.py: Update doc and version. Google OAuth2
+ support complete, so far.
+
+ * social_auth/__init__.py: v0.3.7
+
+ * social_auth/backends/google.py: Bug fix
+
+ * social_auth/__init__.py: v0.3.6
+
+ * social_auth/backends/google.py: Fix Google OAuth process
+
+ * README.rst: Updated doc
+
+ * social_auth/__init__.py: v0.3.5
+
+ * README.rst: Updated README
+
+ * social_auth/__init__.py: v0.3.4
+
+ * README.rst, example/local_settings.py.template, example/settings.py,
+ example/templates/done.html, example/templates/home.html,
+ social_auth/backends/__init__.py, social_auth/backends/google.py: Google
+ OAuth2 support
+
+2011-03-07 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst: Updated readme
+
+2011-03-06 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/__init__.py: v0.3.3
+
+ * social_auth/utils.py, social_auth/views.py: Merged sanitize redirect url
+ checker. Closes gh-38
+
+ * social_auth/__init__.py: v0.3.2
+
+ * README.rst, example/app/views.py, setup.py,
+ social_auth/backends/__init__.py: Migration to OAuth2 lib. Closes gh-37.
+ Closes gh-28. Closes gh-31.
+
+ * README.rst, example/app/views.py, example/settings.py,
+ example/templates/done.html, social_auth/backends/contrib/linkedin.py:
+ LinkedIn Support from Quard. Closes gh-34
+
+ * social_auth/backends/contrib/linkedin.py, social_auth/backends/linkedin.py:
+ LinkedIn Support from Quard
+
+2011-03-06 Darian Moody <mail@djm.org.uk>
+
+ * social_auth/utils.py, social_auth/views.py: Fixed security hole - redirects
+ via the next param are now properly sanitized to disallow redirecting to
+ external hosts; also DRY'd up views file a little.
+
+2011-03-06 Seyi Ogunyemi <micrypt@gmail.com>
+
+ * social_auth/backends/__init__.py: Switched to python-oauth2
+
+2011-03-05 Bernardo Kyotoku <bernardo@kyotoku.org>
+
+ * social_auth/models.py: max_length=255 correction
+
+ * social_auth/models.py: TextField to CharField change
+
+2011-02-28 Vadym Zakovinko <vp@zakovinko.com>
+
+ * README.rst, example/local_settings.py.template: readme with linkedin info
+
+ * .gitignore, example/settings.py, example/templates/home.html,
+ social_auth/backends/linkedin.py: added linkedin support
+
+2011-02-28 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst: Typo
+
+2011-02-27 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst, social_auth/tests/twitter.py: Initial testing suite. Only
+ twitter so far, more to come soon. Refs gh-25
+
+ * social_auth/tests/__init__.py, social_auth/tests/base.py,
+ social_auth/tests/twitter.py: Initial testing suite. Only twitter so far,
+ more to come soon. Refs gh-25
+
+2011-02-25 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst, social_auth/views.py: Save expiration time if not disabled by
+ setting
+
+2011-02-23 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/__init__.py: v0.3.1
+
+ * social_auth/models.py: Catch TypeError on int()
+
+ * social_auth/__init__.py: v0.3.0
+
+ * README.rst, social_auth/backends/facebook.py, social_auth/models.py,
+ social_auth/views.py: Add support for session expiration. Closes gh-29
+
+ * README.rst, social_auth/backends/__init__.py,
+ social_auth/backends/facebook.py, social_auth/backends/twitter.py,
+ social_auth/models.py: Store extra data in JSON format, also add method to
+ extend extra values to store. Closes gh-30
+
+ * social_auth/fields.py: Store extra data in JSON format, also add method to
+ extend extra values to store. Closes gh-30
+
+2011-02-21 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/backends/__init__.py, social_auth/signals.py: Added
+ socialauth_registered signal for newly registered users. Closes gh-26
+
+ * social_auth/backends/__init__.py, social_auth/views.py: Moved transaction
+ management to view, Closes gh-23. Closes gh-24
+
+2011-02-16 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * example/templates/base.html: Small css change
+
+ * social_auth/backends/__init__.py, social_auth/backends/google.py: Google
+ OAuth is always enabled because of anon access, small comment fix
+
+2011-02-15 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/__init__.py: v0.2.8
+
+ * social_auth/backends/__init__.py, social_auth/backends/facebook.py,
+ social_auth/backends/google.py: Make AUTH_BACKEND a mandatory attribute
+
+ * social_auth/__init__.py: v0.2.7
+
+ * example/templates/base.html, example/templates/done.html,
+ example/templates/home.html, social_auth/backends/__init__.py,
+ social_auth/backends/twitter.py, social_auth/urls.py, social_auth/views.py:
+ Disconnect account feature
+
+ * social_auth/__init__.py: v0.2.6
+
+ * social_auth/admin.py, social_auth/models.py: Little admin improvements,
+ clear comment
+
+ * social_auth/backends/__init__.py: Fix fixer :-/
+
+2011-02-14 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/__init__.py: v0.2.5
+
+ * README.rst, social_auth/backends/__init__.py: Added username purifier
+ method
+
+ * README.rst: Update doc to notify about incorrect facebook app setup on
+ facebook site
+
+2011-02-12 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst: Typo
+
+ * social_auth/__init__.py: v0.2.4
+
+ * README.rst, example/app/views.py, example/local_settings.py.template,
+ example/templates/base.html, example/templates/error.html,
+ social_auth/views.py: Trap errors and pass them by session if defined
+
+2011-02-01 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst, example/app/models.py, example/app/views.py,
+ example/templates/base.html: Added doc warning about imports when using
+ pre_update signal and custom user model, updated example
+
+ * social_auth/backends/facebook.py: Shorter comment line
+
+2011-02-01 Lior Sion <liorsion@Lior-Sions-MacBook-Air.local>
+
+ * social_auth/backends/facebook.py: fixed an exception when offline access
+ flag is requested
+
+2011-02-01 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/backends/facebook.py: Show facebook error properly
+
+2011-01-31 Alfredo <alfredoaguirre@theteam.co.uk>
+
+ * social_auth/backends/facebook.py: Raise error code
+
+2011-01-31 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/__init__.py: v0.2.3
+
+ * social_auth/backends/__init__.py: Raise exception if current logged in user
+ is different to user associated with Social Account
+
+2011-01-28 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/backends/contrib/livejournal.py: Convert livejournal backend to
+ self.data instead of request.POST
+
+2011-01-24 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/backends/__init__.py, social_auth/backends/facebook.py,
+ social_auth/views.py: Check request method to access it's data
+
+ * social_auth/backends/__init__.py: Update user only if needed
+
+2011-01-20 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/backends/contrib/orkut.py: Fix dict keys on orkut contrib
+
+ * social_auth/backends/__init__.py: Default to empty string on AX support
+
+ * README.rst: Updated doc. Closes gh-15
+
+2011-01-19 Alfredo <alfredoaguirre@theteam.co.uk>
+
+ * README.rst: Amended import path on example
+
+2011-01-19 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/backends/__init__.py, social_auth/backends/contrib/orkut.py,
+ social_auth/backends/facebook.py, social_auth/backends/google.py,
+ social_auth/backends/twitter.py: Added 'enabled' checking to backends
+
+ * social_auth/__init__.py: v0.2.2
+
+ * example/local_settings.py.template: Remove namespace from example settings
+ template
+
+ * social_auth/backends/__init__.py: Add basic OpenID backend to enabled list
+
+2011-01-18 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * setup.py, social_auth/__init__.py: Fix setup.py
+
+ * README.rst, example/settings.py, example/templates/done.html,
+ example/templates/home.html, social_auth/__init__.py, social_auth/admin.py,
+ social_auth/auth.py, social_auth/backends.py,
+ social_auth/backends/__init__.py, social_auth/backends/contrib/__init__.py,
+ social_auth/backends/contrib/livejournal.py,
+ social_auth/backends/contrib/orkut.py, social_auth/backends/facebook.py,
+ social_auth/backends/google.py, social_auth/backends/twitter.py,
+ social_auth/backends/yahoo.py, social_auth/conf.py, social_auth/store.py,
+ social_auth/urls.py, social_auth/views.py: Added backends module with
+ contribs section and simpler way to add extra backends support. Closes gh-16
+
+2011-01-17 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst, example/urls.py: Removed namespace urls flavor from example and
+ doc, they were mostly confused
+
+ * README.rst: Update doc to be compatible with django 1.2 and above
+
+ * social_auth/__init__.py: v0.1.7
+
+ * social_auth/backends.py: Remove username update, username is already
+ generated and loaded in user instance. Closes gh-12
+
+ * README.rst: Doc update adding contributor
+
+ * social_auth/backends.py: Simplify extra_data update process
+
+ * social_auth/__init__.py: v0.1.6
+
+ * social_auth/backends.py: Fix signal handlers update result checking
+
+ * README.rst: Small doc change. Closes gh-13
+
+ * social_auth/conf.py: Removed unnecesary spacing
+
+2011-01-17 Alfredo <alfredoaguirre@theteam.co.uk>
+
+ * README.rst, social_auth/auth.py, social_auth/backends.py: Facebook extended
+ permissions settings implemented
+
+2011-01-15 Matt Brown <matt@thataddress.com>
+
+ * social_auth/backends.py: This change moves extra_data fetch to
+ authenticate, to ensure that it gets updated in the UserSocialAuth record
+ even if the user account exists already.
+
+ * social_auth/backends.py, social_auth/conf.py: Modified the twitter backend
+ to use the authenticate url instead of authorize. Fixed the default value
+ for SOCIAL_AUTH_EXTRA_DATA.
+
+2011-01-14 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/backends.py: Restored changed check
+
+ * social_auth/__init__.py: v0.1.5
+
+ * example/app/views.py, example/settings.py, example/templates/done.html,
+ example/templates/home.html: Google OAuth support in example proyect
+
+ * README.rst: Update doc about Google OAuth support
+
+ * social_auth/auth.py, social_auth/backends.py, social_auth/conf.py: Google
+ OAuth support
+
+2011-01-13 Stas Kravets <skravets@internal-rfc1918.hn.nnov.stream.ru>
+
+ * example/app/views.py, example/settings.py, example/templates/home.html,
+ social_auth/auth.py, social_auth/backends.py, social_auth/conf.py: Minor
+ style updates.
+
+2011-01-13 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/__init__.py: v0.1.4
+
+ * social_auth/backends.py: Setup signal sender properly. Closes gh-10
+
+2011-01-12 Stas Kravets <skravets@internal-rfc1918.hn.nnov.stream.ru>
+
+ * example/app/views.py, example/local_settings.py.template,
+ social_auth/auth.py, social_auth/conf.py, social_auth/views.py: LiveJournal
+ backend added to social_auth and example.
+
+2011-01-12 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * example/templates/base.html: Keywords change
+
+ * example/templates/base.html: Keywords change
+
+2011-01-10 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/__init__.py: Increase version number
+
+ * social_auth/auth.py, social_auth/models.py, social_auth/signals.py,
+ social_auth/store.py, social_auth/views.py: Moved auth backend access to auth
+ module, small docstring changes
+
+ * README.rst: Fix doc variable value. Closes gh-9
+
+2011-01-09 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * example/templates/base.html: Reset headings margin and padding
+
+ * example/templates/base.html: Reposition badges
+
+ * example/templates/base.html: Remove images border and position badges
+ properly
+
+ * example/templates/base.html: Validation badges
+
+ * example/templates/done.html: HTML validation changes
+
+ * example/templates/base.html: Declare encoding
+
+ * example/templates/base.html, example/templates/home.html: HTML validation
+ changes
+
+ * example/robots.txt, example/templates/base.html,
+ example/templates/done.html, example/templates/home.html, example/urls.py:
+ Added robots.txt and marked some link targets and nofollow
+
+ * example/templates/base.html, example/templates/done.html,
+ example/templates/error.html, example/templates/home.html: Uniform title
+
+ * example/templates/base.html, example/templates/done.html,
+ example/templates/home.html: Small html changes on template
+
+2011-01-06 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst: Updated doc
+
+ * example/templates/base.html: Remove image border on example
+
+ * social_auth/__init__.py: v0.1.2
+
+ * README.rst: easy_install installation example
+
+ * README.rst: Updated demo information
+
+ * README.rst: Docs
+
+ * README.rst, example/templates/base.html: Example little improvements, added
+ demo to README file
+
+ * example/settings.py, example/templates/base.html: Common templates
+ directory
+
+ * example/app/templates/base.html, example/app/templates/done.html,
+ example/app/templates/error.html, example/app/templates/home.html,
+ example/templates/base.html, example/templates/done.html,
+ example/templates/error.html, example/templates/home.html: Common templates
+ directory
+
+ * example/app/templates/base.html: Small styling
+
+ * example/app/templates/base.html, example/app/templates/done.html,
+ example/app/templates/error.html, example/app/templates/home.html,
+ example/app/views.py: Example app styling
+
+2011-01-05 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst: Updated README with link to issues section
+
+ * README.rst: Updated attributions on README.rst file
+
+ * social_auth/backends.py: Removed unneeded str() call. Closes gh-8
+
+2011-01-05 Jannis Leidel <jannis@leidel.info>
+
+ * social_auth/backends.py: Fixed typo.
+
+ * social_auth/backends.py: Use Django's md5_constructor for backwards
+ compatibility.
+
+2011-01-05 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst: Correct documentation, Closes gh-7
+
+ * social_auth/backends.py: Replaced deprecated md5 import, Refs gh-7
+
+ * social_auth/__init__.py: Increased version to 0.1.1
+
+ * README.rst: Amend documentation and add contribution
+
+2011-01-05 Jannis Leidel <jannis@leidel.info>
+
+ * README.rst: Minor rST bugfix to allow correct rendering on PyPI.
+
+2011-01-05 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * setup.py, social_auth/__init__.py: Updated setup.py file to install
+ properly, added version to social_auth module
+
+2011-01-05 Jannis Leidel <jannis@leidel.info>
+
+ * README.rst: Minor rST bugfix to allow correct rendering on PyPI.
+
+2011-01-05 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst: Attributions added
+
+ * README.rst, setup.py: Updated setup.py and README with installation
+ instructions
+
+2011-01-04 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * .gitignore, setup.py: setup.py updated
+
+2010-12-27 Stas Kravets <skravets@internal-rfc1918.hn.nnov.stream.ru>
+
+ * setup.py: setup.py file added for correct install with pip
+
+2010-12-28 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/auth.py, social_auth/backends.py, social_auth/conf.py,
+ social_auth/models.py, social_auth/store.py, social_auth/views.py: A bit of
+ pylint and django-lint
+
+2010-12-28 Stas Kravets <skravets@Applebough.local>
+
+ * social_auth/backends.py: Added new option to control saving of updates,
+ fixed update signal results check.
+
+2010-12-27 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst, example/app/models.py, example/app/views.py,
+ example/settings.py, social_auth/auth.py, social_auth/backends.py,
+ social_auth/models.py, social_auth/views.py: Improved user creation handling,
+ closes gh-3
+
+2010-12-27 Stas Kravets <skravets@internal-rfc1918.hn.nnov.stream.ru>
+
+ * setup.py: removed dependencies to avoid potential conflicts
+
+ * setup.py: setup.py file added for correct install with pip
+
+2010-12-26 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst: Small doc change
+
+2010-12-10 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/backends.py, social_auth/signals.py, social_auth/views.py:
+ Added missing module and remove debugging prints
+
+ * README.rst, social_auth/backends.py, social_auth/models.py,
+ social_auth/views.py: Signal user updating, still pending extra arguments
+ request
+
+ * social_auth/auth.py, social_auth/backends.py: Removed unnecessary base
+ module, moved clases where they are used
+
+ * social_auth/base.py: Removed unnecessary base module, moved clases where
+ they are used
+
+2010-11-25 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst, example/app/views.py, example/urls.py, social_auth/auth.py,
+ social_auth/backends.py, social_auth/base.py, social_auth/models.py,
+ social_auth/urls.py, social_auth/views.py: Association of multiple social
+ credentials to single user account support, Closes gh-5
+
+ * social_auth/base.py: Rename variable
+
+2010-11-23 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/models.py: Switch uid from TextField to CharField
+
+ * README.rst: Orkut authentication included, Closes gh-4
+
+ * README.rst, example/app/views.py, social_auth/auth.py,
+ social_auth/backends.py, social_auth/base.py, social_auth/conf.py: OAuth
+ improvements. Changes: - Parametrize backend name - Common base class
+ between Twitter and Orkut authentication mechanism - Updated Doc - Updated
+ example application with Orkut
+
+2010-11-23 Caio Ariede <caio.ariede@gmail.com>
+
+ * README.rst, example/local_settings.py.template, social_auth/auth.py,
+ social_auth/backends.py, social_auth/conf.py, social_auth/views.py: orkut
+ support
+
+2010-11-23 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/models.py: Little improve on custom user class import. Refs
+ gh-3
+
+ * README.rst: Style documentation
+
+ * README.rst, social_auth/models.py: Doc fix and added missing check
+
+ * README.rst, example/app/models.py, example/local_settings.py.template,
+ example/settings.py, social_auth/backends.py, social_auth/base.py,
+ social_auth/conf.py, social_auth/models.py: Improvements and documentation on
+ custom User class definition. Closes #2
+
+2010-11-22 Caio Ariede <caio.ariede@gmail.com>
+
+ * social_auth/models.py: get_user_model() more Django compliant
+
+2010-11-20 Caio Ariede <caio.ariede@gmail.com>
+
+ * social_auth/models.py: typo
+
+ * social_auth/base.py, social_auth/models.py: Allow setting a custom user
+ model through SOCIAL_AUTH_MODEL_USER
+
+2010-11-19 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst, social_auth/backends.py, social_auth/base.py,
+ social_auth/models.py: Store OAuth access token by default
+
+2010-11-16 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst: Ammend doc
+
+ * README.rst: Ammend doc
+
+ * README.rst: Ammend doc
+
+ * README.rst, social_auth/base.py: Added callable function to supply possible
+ username
+
+2010-11-15 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst, example/app/views.py, example/local_settings.py.template,
+ example/urls.py, social_auth/views.py: Redirect user to an error url if
+ configured
+
+ * social_auth/views.py: Typo
+
+ * README.rst: README updates
+
+ * README.rst: README updates
+
+ * README.rst: README updates
+
+ * README.rst, example/local_settings.py.template, social_auth/views.py:
+ Removed incorrect namespace name from complete url in view, replaced with
+ setting value
+
+ * README.rst, social_auth/auth.py, social_auth/oauth.py: Removed oauth module
+ in favor of oauth original code
+
+ * social_auth/models.py: Remove max_length from TextFields and replace short
+ text fields with CharFields
+
+2010-11-12 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * social_auth/__init__.py, social_auth/admin.py, social_auth/auth.py,
+ social_auth/backends.py, social_auth/base.py, social_auth/conf.py,
+ social_auth/models.py, social_auth/oauth.py, social_auth/store.py,
+ social_auth/urls.py, social_auth/views.py: Small docstrings, code a little
+ pylinted and checked
+
+ * social_auth/auth.py: Fix twitter process with custom redirect parameter
+
+2010-11-12 Caio Ariede <caio.ariede@gmail.com>
+
+ * README.rst, social_auth/auth.py: there is no need to specify the url
+ callback on Twitter
+
+2010-11-11 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst: Link sections in README
+
+ * README.rst: Link sections in README
+
+2010-11-09 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * README.rst: Silly simplication
+
+ * README.rst: More doc improvements
+
+ * COPYRIGHT.Django-Socialauth, COPYRIGHT.django-twitter-oauth, README.rst:
+ Fixed code licence, apps names where incorrect. Updated documentation
+
+2010-11-08 Matías Aguirre <matiasaguirre@gmail.com>
+
+ * COPYRIGHT, COPYRIGHT.Django-Socialauth: File rename
+
+ * .gitignore, README.rst, example/settings.py, example/urls.py,
+ social_auth/auth.py, social_auth/backends.py, social_auth/conf.py,
+ social_auth/models.py, social_auth/urls.py, social_auth/views.py: Commiting
+ missing files
75 README.rst
View
@@ -131,12 +131,6 @@ Configuration
Don't miss ``django.contrib.auth.backends.ModelBackend`` if using ``django.auth``
user model or users won't be able to login.
-- Define desired backends for your site::
-
- SOCIAL_AUTH_ENABLED_BACKENDS = ('google', 'google-oauth', 'facebook', ...)
-
- All backends are enabled by default.
-
- Setup needed OAuth keys (see OAuth_ section for details)::
TWITTER_CONSUMER_KEY = ''
@@ -187,13 +181,10 @@ Configuration
SOCIAL_AUTH_DISCONNECT_REDIRECT_URL = '/account-disconnected-redirect-url/'
- In case of authentication error, the message can be stored in session
- if the following setting is defined::
+ Users will be redirected to ``LOGIN_ERROR_URL`` in case of error or user
+ cancellation on some backends. This URL can be override by this setting::
- SOCIAL_AUTH_ERROR_KEY = 'social_errors'
-
- This defines the desired session key where last error message should be
- stored. It's disabled by default.
+ SOCIAL_AUTH_BACKEND_ERROR_URL = '/new-error-url/'
- Configure authentication and association complete URL names to avoid
possible clashes::
@@ -255,11 +246,6 @@ Configuration
import random
SOCIAL_AUTH_DEFAULT_USERNAME = lambda: random.choice(['Darth Vader', 'Obi-Wan Kenobi', 'R2-D2', 'C-3PO', 'Yoda'])
- or::
-
- from django.template.defaultfilters import slugify
- SOCIAL_AUTH_USERNAME_FIXER = lambda u: slugify(u)
-
in case your user layout needs to purify username on some weird way.
Final user name will have a random UUID-generated suffix in case it's already
@@ -350,15 +336,55 @@ Configuration
Defaults to ``LOGIN_ERROR_URL``.
-- The app catches any exception and logs errors to ``logger`` or
- ``django.contrib.messagess`` app. Having tracebacks is really useful when
- debugging, for that purpose this setting was defined::
+- The application catches any exception and logs errors to ``logger`` or
+ ``django.contrib.messagess`` application by default. But it's possible to
+ override the default behavior by defining a function to process the
+ exceptions using this setting::
+
+ SOCIAL_AUTH_PROCESS_EXCEPTIONS = 'social_auth.utils.process_exceptions'
+
+ The function parameters will ``request`` holding the current request object,
+ ``backend`` with the current backend and ``err`` which is the exception
+ instance.
+
+ Recently this set of exceptions were introduce to describe the situations
+ a bit more than the old ``ValueError`` usually raised::
+
+ AuthException - Base exception class
+ AuthFailed - Authentication failed for some reason
+ AuthCanceled - Authentication was canceled by the user
+ AuthUnknownError - An unknown error stoped the authentication
+ process
+ AuthTokenError - Unauthorized or access token error, it was
+ invalid, impossible to authenticate or user
+ removed permissions to it.
+ AuthMissingParameter - A needed parameter to continue the process was
+ missing, usually raised by the services that
+ need some POST data like myOpenID
+
+ These are a subclass of ``ValueError`` to keep backward compatibility.
+
+ Having tracebacks is really useful when debugging, for that purpose this
+ setting was defined::
SOCIAL_AUTH_RAISE_EXCEPTIONS = DEBUG
It's default value is ``DEBUG``, so you need to set it to ``False`` to avoid
tracebacks when ``DEBUG = True``.
+
+Some settings can be tweak by backend by adding the backend name prefix (all
+uppercase and replace ``-`` with ``_``), here's the supported settings so far::
+
+ LOGIN_ERROR_URL
+ SOCIAL_AUTH_BACKEND_ERROR_URL
+ SOCIAL_AUTH_NEW_ASSOCIATION_REDIRECT_URL
+ SOCIAL_AUTH_DISCONNECT_REDIRECT_URL
+ SOCIAL_AUTH_NEW_USER_REDIRECT_URL
+ SOCIAL_AUTH_LOGIN_REDIRECT_URL
+ SOCIAL_AUTH_INACTIVE_USER_URL
+
+
Authentication Pipeline
-----------------------
@@ -806,7 +832,7 @@ Instagram uses OAuth v2 for Authentication
Testing
-------
-To test the app just run::
+To test the application just run::
./manage.py test social_auth
@@ -894,9 +920,9 @@ Some particular use cases are listed below.
Miscellaneous
-------------
-Join to django-social-auth_ community on Convore_ and bring any questions or
-suggestions that will improve this app.
-
+Join to `django-social-auth discussion list`_ and bring any questions or suggestions
+that would improve this application. Convore_ discussion group is deprecated since
+the service is going to be shut down on April 1st.
If defining a custom user model, do not import social_auth from any models.py
that would finally import from the models.py that defines your User class or it
will make your project fail with a recursive import because social_auth uses
@@ -1045,3 +1071,4 @@ Base work is copyrighted by:
.. _example application: https://github.com/omab/django-social-auth/blob/master/example/local_settings.py.template#L23
.. _BrowserID: https://browserid.org
.. _Instagram API: http://instagr.am/developer/
+.. _django-social-auth discussion list: https://groups.google.com/group/django-social-auth
4 contrib/tests/runtests.py
View
@@ -1,8 +1,10 @@
#!/usr/bin/env python
-import os, sys
+import os
+import sys
from os.path import dirname, abspath
+
os.environ['DJANGO_SETTINGS_MODULE'] = 'test_settings'
parent = dirname(dirname(dirname(abspath(__file__))))
15 contrib/tests/test_core.py
View
@@ -20,7 +20,8 @@ def url(self, path):
def test_twitter_backend(self):
# We grab the Twitter testing user details from settings file
TEST_TWITTER_USER = getattr(settings, 'TEST_TWITTER_USER', None)
- TEST_TWITTER_PASSWORD = getattr(settings, 'TEST_TWITTER_PASSWORD', None)
+ TEST_TWITTER_PASSWORD = getattr(settings, 'TEST_TWITTER_PASSWORD',
+ None)
self.assertTrue(TEST_TWITTER_USER)
self.assertTrue(TEST_TWITTER_PASSWORD)
@@ -107,7 +108,8 @@ def test_google_oauth2_backend(self):
def test_facebook_backend(self):
TEST_FACEBOOK_USER = getattr(settings, 'TEST_FACEBOOK_USER', None)
- TEST_FACEBOOK_PASSWORD = getattr(settings, 'TEST_FACEBOOK_PASSWORD', None)
+ TEST_FACEBOOK_PASSWORD = getattr(settings, 'TEST_FACEBOOK_PASSWORD',
+ None)
self.assertTrue(TEST_FACEBOOK_USER)
self.assertTrue(TEST_FACEBOOK_PASSWORD)
@@ -135,17 +137,20 @@ def test_facebook_backend(self):
def test_linkedin_backend(self):
TEST_LINKEDIN_USER = getattr(settings, 'TEST_LINKEDIN_USER', None)
- TEST_LINKEDIN_PASSWORD = getattr(settings, 'TEST_LINKEDIN_PASSWORD', None)
+ TEST_LINKEDIN_PASSWORD = getattr(settings, 'TEST_LINKEDIN_PASSWORD',
+ None)
self.assertTrue(TEST_LINKEDIN_USER)
self.assertTrue(TEST_LINKEDIN_PASSWORD)
self.driver.get(self.url('/login/linkedin/'))
# We log in
- username_field = self.driver.find_element_by_id('session_key-oauthAuthorizeForm')
+ username_field = self.driver.find_element_by_id(
+ 'session_key-oauthAuthorizeForm')
username_field.send_keys(TEST_LINKEDIN_USER)
- password_field = self.driver.find_element_by_id('session_password-oauthAuthorizeForm')
+ password_field = self.driver.find_element_by_id(
+ 'session_password-oauthAuthorizeForm')
password_field.send_keys(TEST_LINKEDIN_PASSWORD)
password_field.submit()
22 doc/backends/google.rst
View
@@ -33,6 +33,14 @@ anonymous values will be used if not configured as described in their
GOOGLE_OAUTH_EXTRA_SCOPE = [...]
+- Supply a list of Google Apps account domain strings to be checked. The default (empty list) allows all domains. If a list is provided and a user attempts to sign in with a Google account that is not in the list, then a ValueError will be raised and the user will be redirected to your login error page::
+
+ GOOGLE_WHITE_LISTED_DOMAINS = ['mygoogleappsdomain.com']
+
+- Supply a list of Google Apps or Gmail email strings to be checked::
+
+ GOOGLE_WHITE_LISTED_EMAILS = ['me@mygoogleappsdomain.com', 'you@gmail.com']
+
Check which applications can be included in their `Google Data Protocol Directory`_
@@ -70,6 +78,20 @@ Google OpenID
Configurable settings:
+- Supply a list of Google Apps account domain strings to be checked::
+
+ GOOGLE_WHITE_LISTED_DOMAINS = ['mygoogleappsdomain.com']
+
+- Supply a list of Google Apps or Gmail email strings to be checked::
+
+ GOOGLE_WHITE_LISTED_EMAILS = ['me@mygoogleappsdomain.com', 'you@gmail.com']
+
+
+Google OpenID
+-------------
+
+Configurable settings:
+
- Supply a list of domain strings to be checked. The default (empty list) allows all domains. If a list is provided and a user attempts to sign in with a Google account that is not in the list, then a ValueError will be raised and the user will be redirected to your login error page::
GOOGLE_WHITE_LISTED_DOMAINS = ['mydomain.com']
26 doc/conf.py
View
@@ -3,7 +3,8 @@
# Django Social Auth documentation build configuration file, created by
# sphinx-quickstart on Sun Mar 20 23:07:14 2011.
#
-# This file is execfile()d with the current directory set to its containing dir.
+# This file is execfile()d with the current directory set to its containing
+# dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
@@ -11,21 +12,20 @@
# All configuration values have a default; values that are commented out
# serve to show the default.
-import sys, os
-
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#sys.path.insert(0, os.path.abspath('.'))
-# -- General configuration -----------------------------------------------------
+# -- General configuration ----------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
#needs_sphinx = '1.0'
-# Add any Sphinx extension module names here, as strings. They can be extensions
-# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
-extensions = ['sphinx.ext.autodoc', 'sphinx.ext.intersphinx', 'sphinx.ext.todo', 'sphinx.ext.viewcode']
+# Add any Sphinx extension module names here, as strings. They can be
+# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+extensions = ['sphinx.ext.autodoc', 'sphinx.ext.intersphinx',
+ 'sphinx.ext.todo', 'sphinx.ext.viewcode']
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
@@ -66,7 +66,8 @@
# directories to ignore when looking for source files.
exclude_patterns = ['_build']
-# The reST default role (used for this markup: `text`) to use for all documents.
+# The reST default role (used for this markup: `text`) to use for all
+# documents.
#default_role = None
# If true, '()' will be appended to :func: etc. cross-reference text.
@@ -87,7 +88,7 @@
#modindex_common_prefix = []
-# -- Options for HTML output ---------------------------------------------------
+# -- Options for HTML output --------------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
@@ -167,7 +168,7 @@
htmlhelp_basename = 'DjangoSocialAuthdoc'
-# -- Options for LaTeX output --------------------------------------------------
+# -- Options for LaTeX output -------------------------------------------------
# The paper size ('letter' or 'a4').
#latex_paper_size = 'letter'
@@ -176,7 +177,8 @@
#latex_font_size = '10pt'
# Grouping the document tree into LaTeX files. List of tuples
-# (source start file, target name, title, author, documentclass [howto/manual]).
+# (source start file, target name, title, author, documentclass
+# [howto/manual]).
latex_documents = [
('index', 'DjangoSocialAuth.tex', u'Django Social Auth Documentation',
u'Matías Aguirre', 'manual'),
@@ -206,7 +208,7 @@
#latex_domain_indices = True
-# -- Options for manual page output --------------------------------------------
+# -- Options for manual page output -------------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
68 doc/configuration.rst
View
@@ -33,12 +33,6 @@ Configuration
Don't miss ``django.contrib.auth.backends.ModelBackend`` if using ``django.auth``
user model or users won't be able to login.
-- Define desired backends for your site::
-
- SOCIAL_AUTH_ENABLED_BACKENDS = ('google', 'google-oauth', 'facebook', ...)
-
- All backends are enabled by default.
-
- Setup needed OAuth keys (see OAuth_ section for details)::
TWITTER_CONSUMER_KEY = ''
@@ -81,13 +75,10 @@ Configuration
SOCIAL_AUTH_DISCONNECT_REDIRECT_URL = '/account-disconnected-redirect-url/'
- In case of authentication error, the message can be stored in session
- if the following setting is defined::
+ Users will be redirected to ``LOGIN_ERROR_URL`` in case of error or user
+ cancellation on some backends. This URL can be override by this setting::
- SOCIAL_AUTH_ERROR_KEY = 'social_errors'
-
- This defines the desired session key where last error message should be
- stored. It's disabled by default.
+ SOCIAL_AUTH_BACKEND_ERROR_URL = '/new-error-url/'
- Configure authentication and association complete URL names to avoid
possible clashes::
@@ -149,11 +140,6 @@ Configuration
import random
SOCIAL_AUTH_DEFAULT_USERNAME = lambda: random.choice(['Darth Vader', 'Obi-Wan Kenobi', 'R2-D2', 'C-3PO', 'Yoda'])
- or::
-
- from django.template.defaultfilter import slugify
- SOCIAL_AUTH_USERNAME_FIXER = lambda u: slugify(u)
-
in case your user layout needs to purify username on some weird way.
Final user name will have a random UUID-generated suffix in case it's already
@@ -243,6 +229,54 @@ Configuration
Defaults to ``LOGIN_ERROR_URL``.
+- The application catches any exception and logs errors to ``logger`` or
+ ``django.contrib.messagess`` application by default. But it's possible to
+ override the default behavior by defining a function to process the
+ exceptions using this setting::
+
+ SOCIAL_AUTH_PROCESS_EXCEPTIONS = 'social_auth.utils.process_exceptions'
+
+ The function parameters will ``request`` holding the current request object,
+ ``backend`` with the current backend and ``err`` which is the exception
+ instance.
+
+ Recently this set of exceptions were introduce to describe the situations
+ a bit more than the old ``ValueError`` usually raised::
+
+ AuthException - Base exception class
+ AuthFailed - Authentication failed for some reason
+ AuthCanceled - Authentication was canceled by the user
+ AuthUnknownError - An unknown error stoped the authentication
+ process
+ AuthTokenError - Unauthorized or access token error, it was
+ invalid, impossible to authenticate or user
+ removed permissions to it.
+ AuthMissingParameter - A needed parameter to continue the process was
+ missing, usually raised by the services that
+ need some POST data like myOpenID
+
+ These are a subclass of ``ValueError`` to keep backward compatibility.
+
+ Having tracebacks is really useful when debugging, for that purpose this
+ setting was defined::
+
+ SOCIAL_AUTH_RAISE_EXCEPTIONS = DEBUG
+
+ It's default value is ``DEBUG``, so you need to set it to ``False`` to avoid
+ tracebacks when ``DEBUG = True``.
+
+
+Some settings can be tweak by backend by adding the backend name prefix (all
+uppercase and replace ``-`` with ``_``), here's the supported settings so far::
+
+ LOGIN_ERROR_URL
+ SOCIAL_AUTH_BACKEND_ERROR_URL
+ SOCIAL_AUTH_NEW_ASSOCIATION_REDIRECT_URL
+ SOCIAL_AUTH_DISCONNECT_REDIRECT_URL
+ SOCIAL_AUTH_NEW_USER_REDIRECT_URL
+ SOCIAL_AUTH_LOGIN_REDIRECT_URL
+ SOCIAL_AUTH_INACTIVE_USER_URL
+
- The app catches any exception and logs errors to ``logger`` or
``django.contrib.messagess`` app. Having tracebacks is really useful when
debugging, for that purpose this setting was defined::
8 doc/miscellaneous.rst
View
@@ -1,9 +1,9 @@
Miscellaneous
=============
-Join to django-social-auth_ community on Convore_ and bring any questions or
-suggestions that will improve this app.
-
+Join to `django-social-auth discussion list`_ and bring any questions or suggestions
+that would improve this application. Convore_ discussion group is deprecated since
+the service is going to be shut down on April 1st.
South_ users should add this rule to enable migrations::
@@ -29,4 +29,4 @@ package and link it there.
.. _django-social-auth: https://github.com/omab/django-social-auth
.. _Convore: https://convore.com/
.. _djangopackages.com: http://djangopackages.com/grids/g/social-auth-backends/
-
+.. _django-social-auth discussion list: https://groups.google.com/group/django-social-auth
2  doc/testing.rst
View
@@ -3,7 +3,7 @@ Testing
Django-social-auth aims to be a fully tested project, some partial test are
present at the moment and others are being worked.
-To test the app just run::
+To test the application just run::
./manage.py test social_auth
1  example/app/models.py
View
@@ -20,6 +20,7 @@ def is_authenticated(self):
from social_auth.signals import pre_update
from social_auth.backends.facebook import FacebookBackend
+
def facebook_extra_values(sender, user, response, details, **kwargs):
return False
5 example/app/pipeline.py
View
@@ -6,9 +6,10 @@ def username(request, *args, **kwargs):
username = kwargs['user'].username
else:
username = request.session.get('saved_username')
- return { 'username': username }
+ return {'username': username}
def redirect_to_form(*args, **kwargs):
- if not kwargs['request'].session.get('saved_username') and kwargs.get('user') is None:
+ if not kwargs['request'].session.get('saved_username') and \
+ kwargs.get('user') is None:
return HttpResponseRedirect('/form/')
3  example/app/views.py
View
@@ -16,6 +16,7 @@ def home(request):
return render_to_response('home.html', {'version': version},
RequestContext(request))
+
@login_required
def done(request):
"""Login complete view, displays user data"""
@@ -25,6 +26,7 @@ def done(request):
}
return render_to_response('done.html', ctx, RequestContext(request))
+
def error(request):
"""Error view"""
messages = get_messages(request)
@@ -32,6 +34,7 @@ def error(request):
'messages': messages},
RequestContext(request))
+
def logout(request):
"""Logs out user"""
auth_logout(request)
9 example/manage.py
View
@@ -1,10 +1,15 @@
#!/usr/bin/env python
from django.core.management import execute_manager
try:
- import settings # Assumed to be in the same directory.
+ import settings # Assumed to be in the same directory.
except ImportError:
import sys
- sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n(If the file settings.py does indeed exist, it's causing an ImportError somehow.)\n" % __file__)
+ sys.stderr.write(("Error: Can't find the file 'settings.py' in the " +
+ "directory containing %r. It appears you've "
+ "customized things.\nYou'll have to run "
+ "django-admin.py, passing it your settings module.\n" +
+ "(If the file settings.py does indeed exist, it's " +
+ "causing an ImportError somehow.)\n") % __file__)
sys.exit(1)
if __name__ == "__main__":
1  setup.py
View
@@ -15,6 +15,7 @@
third parties.
"""
+
def long_description():
"""Return long description from README.rst if it's present
because it doesn't get installed."""
2  social_auth/__init__.py
View
@@ -2,5 +2,5 @@
Django-social-auth application, allows OpenId or OAuth user
registration/authentication just adding a few configurations.
"""
-version = (0, 6, 5)
+version = (0, 6, 6)
__version__ = '.'.join(map(str, version))
73 social_auth/backends/__init__.py
View
@@ -9,7 +9,7 @@
(which is used for URLs matching) and Auth class, otherwise it won't be
enabled.
"""
-from urllib2 import Request, urlopen
+from urllib2 import Request, urlopen, HTTPError
from urllib import urlencode
from urlparse import urlsplit
@@ -26,9 +26,13 @@
from django.utils import simplejson
from django.utils.importlib import import_module
-from social_auth.utils import setting, log, model_to_ctype, ctype_to_model
+from social_auth.utils import setting, log, model_to_ctype, ctype_to_model, \
+ clean_partial_pipeline
from social_auth.store import DjangoOpenIDStore
-from social_auth.backends.exceptions import StopPipeline
+from social_auth.backends.exceptions import StopPipeline, AuthException, \
+ AuthFailed, AuthCanceled, \
+ AuthUnknownError, AuthTokenError, \
+ AuthMissingParameter
if setting('SOCIAL_AUTH_USER_MODEL'):
@@ -136,6 +140,9 @@ def pipeline(self, pipeline, *args, **kwargs):
try:
result = func(*args, **out) or {}
except StopPipeline:
+ # Clean partial pipeline on stop
+ if 'request' in kwargs:
+ clean_partial_pipeline(kwargs['request'])
break
if isinstance(result, dict):
@@ -163,7 +170,9 @@ def get_user_details(self, response):
raise NotImplementedError('Implement in subclass')
def get_user(self, user_id):
- """Return user with given ID from the User model used by this backend"""
+ """
+ Return user with given ID from the User model used by this backend
+ """
try:
return User.objects.get(pk=user_id)
except User.DoesNotExist:
@@ -342,7 +351,7 @@ def request_token_extra_arguments(self):
setting is per backend and defined by:
<backend name in uppercase>_REQUEST_TOKEN_EXTRA_ARGUMENTS.
"""
- backend_name = self.AUTH_BACKEND.name.upper().replace('-','_')
+ backend_name = self.AUTH_BACKEND.name.upper().replace('-', '_')
return setting(backend_name + '_REQUEST_TOKEN_EXTRA_ARGUMENTS', {})
def auth_extra_arguments(self):
@@ -350,7 +359,7 @@ def auth_extra_arguments(self):
backend and defined by:
<backend name in uppercase>_AUTH_EXTRA_ARGUMENTS.
"""
- backend_name = self.AUTH_BACKEND.name.upper().replace('-','_')
+ backend_name = self.AUTH_BACKEND.name.upper().replace('-', '_')
return setting(backend_name + '_AUTH_EXTRA_ARGUMENTS', {})
@property
@@ -414,7 +423,7 @@ def auth_complete(self, *args, **kwargs):
response = self.consumer().complete(dict(self.data.items()),
self.request.build_absolute_uri())
if not response:
- raise ValueError('This is an OpenID relying party endpoint')
+ raise AuthException(self, 'OpenID relying party endpoint')
elif response.status == SUCCESS:
kwargs.update({
'auth': self,
@@ -423,13 +432,11 @@ def auth_complete(self, *args, **kwargs):
})
return authenticate(*args, **kwargs)
elif response.status == FAILURE:
- raise ValueError('OpenID authentication failed: %s' % \
- response.message)
+ raise AuthFailed(self, response.message)
elif response.status == CANCEL:
- raise ValueError('Authentication cancelled')
+ raise AuthCanceled(self)
else:
- raise ValueError('Unknown OpenID response type: %r' % \
- response.status)
+ raise AuthUnknownError(self, response.status)
def setup_request(self, extra_params=None):
"""Setup request"""
@@ -470,14 +477,14 @@ def openid_request(self, extra_params=None):
try:
return self.consumer().begin(openid_url)
except DiscoveryFailure, err:
- raise ValueError('OpenID discovery error: %s' % err)
+ raise AuthException(self, 'OpenID discovery error: %s' % err)
def openid_url(self):
"""Return service provider URL.
This base class is generic accepting a POST parameter that specifies
provider URL."""
if OPENID_ID_FIELD not in self.data:
- raise ValueError('Missing openid identifier')
+ raise AuthMissingParameter(self, OPENID_ID_FIELD)
return self.data[OPENID_ID_FIELD]
@@ -517,13 +524,20 @@ def auth_complete(self, *args, **kwargs):
name = self.AUTH_BACKEND.name + 'unauthorized_token_name'
unauthed_token = self.request.session.get(name)
if not unauthed_token:
- raise ValueError('Missing unauthorized token')
+ raise AuthTokenError('Missing unauthorized token')
token = Token.from_string(unauthed_token)
if token.key != self.data.get('oauth_token', 'no-token'):
- raise ValueError('Incorrect tokens')
+ raise AuthTokenError('Incorrect tokens')
+
+ try:
+ access_token = self.access_token(token)
+ except HTTPError, e:
+ if e.code == 400:
+ raise AuthCanceled(self)
+ else:
+ raise
- access_token = self.access_token(token)
data = self.user_data(access_token)
if data is not None:
data['access_token'] = access_token.to_string()
@@ -630,7 +644,7 @@ def auth_complete(self, *args, **kwargs):
"""Completes loging process, must return user instance"""
if self.data.get('error'):
error = self.data.get('error_description') or self.data['error']
- raise ValueError('OAuth2 authentication failed: %s' % error)
+ raise AuthFailed(self, error)
client_id, client_secret = self.get_key_and_secret()
params = {'grant_type': 'authorization_code', # request auth code
@@ -644,12 +658,17 @@ def auth_complete(self, *args, **kwargs):
try:
response = simplejson.loads(urlopen(request).read())
+ except HTTPError, e:
+ if e.code == 400:
+ raise AuthCanceled(self)
+ else:
+ raise
except (ValueError, KeyError):
- raise ValueError('Unknown OAuth2 response type')
+ raise AuthUnknownError(self)
if response.get('error'):
error = response.get('error_description') or response.get('error')
- raise ValueError('OAuth2 authentication failed: %s' % error)
+ raise AuthFailed(self, error)
else:
response.update(self.user_data(response['access_token']) or {})
kwargs.update({
@@ -704,11 +723,15 @@ def get_backends(force_load=False):
"""
if not BACKENDSCACHE or force_load:
for auth_backend in setting('AUTHENTICATION_BACKENDS'):
- module = import_module(auth_backend.rsplit(".", 1)[0])
- backends = getattr(module, "BACKENDS", {})
- for name, backend in backends.items():
- if backend.enabled():
- BACKENDSCACHE[name] = backend
+ mod, cls_name = auth_backend.rsplit('.', 1)
+ module = import_module(mod)
+ backend = getattr(module, cls_name)
+
+ if issubclass(backend, SocialAuthBackend):
+ name = backend.name
+ backends = getattr(module, 'BACKENDS', {})
+ if name in backends and backends[name].enabled():
+ BACKENDSCACHE[name] = backends[name]
return BACKENDSCACHE
6 social_auth/backends/browserid.py
View
@@ -11,6 +11,7 @@
from social_auth.backends import SocialAuthBackend, BaseAuth, USERNAME
from social_auth.utils import log, setting
+from social_auth.backends.exceptions import AuthFailed, AuthMissingParameter
# BrowserID verification server
@@ -60,7 +61,7 @@ class BrowserIDAuth(BaseAuth):
def auth_complete(self, *args, **kwargs):
"""Completes loging process, must return user instance"""
if not 'assertion' in self.data:
- raise ValueError('Missing assertion parameter')
+ raise AuthMissingParameter(self, 'assertion')
data = urlencode({
'assertion': self.data['assertion'],
@@ -75,9 +76,10 @@ def auth_complete(self, *args, **kwargs):
else:
if response.get('status') == 'failure':
log('debug', 'Authentication failed.')
- raise ValueError('Authentication failed')
+ raise AuthFailed(self)
kwargs.update({
+ 'auth': self,
'response': response,
self.AUTH_BACKEND.name: True
})
87 social_auth/backends/contrib/fitbit.py
View
@@ -0,0 +1,87 @@
+"""
+Fitbit OAuth support.
+
+This contribution adds support for Fitbit OAuth service. The settings
+FITBIT_CONSUMER_KEY and FITBIT_CONSUMER_SECRET must be defined with the values
+given by Fitbit application registration process.
+
+By default account id, username and token expiration time are stored in
+extra_data field, check OAuthBackend class for details on how to extend it.
+"""
+try:
+ from urlparse import parse_qs
+ parse_qs # placate pyflakes
+except ImportError:
+ # fall back for Python 2.5
+ from cgi import parse_qs
+
+from oauth2 import Token
+
+from social_auth.utils import setting
+from social_auth.backends import ConsumerBasedOAuth, OAuthBackend, USERNAME
+
+
+# Fitbit configuration
+FITBIT_SERVER = 'https://api.fitbit.com'
+FITBIT_REQUEST_TOKEN_URL = '%s/oauth/request_token' % FITBIT_SERVER
+FITBIT_AUTHORIZATION_URL = '%s/oauth/authorize' % FITBIT_SERVER
+FITBIT_ACCESS_TOKEN_URL = '%s/oauth/a