- Switched to a declarative setup.
- Switched from Travis CI to GitHub actions.
0.10 (2020-10-04)
- Modified
authlib.admin_oauth
to persist the users' email address and pass it to Google as alogin_hint
so that website managers do not have to repeatedly select the account over and over. - Allowed specifying arbitrary query parameters for Google's authorization URL.
- Fixed an
authlib.admin_oauth
crash when fetching user data fails. - Replaced
ugettext*
withgettext*
. - Replaced
url()
withre_path()
. - Fixed a crash when creating
little_auth
users with invalid email addresses. - Stopped carrying over login hints from one user to the other in the Google OAuth client...
- BACKWARDS INCOMPATIBLE Dropped the request argument from
authlib.email.get_confirmation_code
, it wasn't used, ever.
0.9 (2019-02-09)
- Dropped support for Python 2.
- Fixed a few problems around inactive users where authlib would either handle them incorrectly or reveal that inactive users exist.
- Added many unittests, raised the code coverage to 100% (except for the
uncovered Facebook and Twitter OAuth clients). Switched to mocking
requests and responses instead of simply replacing the
GoogleOAuth2Client
for testing. - Moved the
BaseUser
andBaseUserManager
toauthlib.base_user
for consistency withdjango.contrib.auth.base_user
. - Dropped the useless
OAuthClient
base class. - Removed compatibility code for Django<1.11 when verifying whether a redirection URL is safe.
- Changed the
retrieve_next
implementations to only consider HTTPS URLs as safe when processing HTTPS requests. - Changed the admin OAuth functionality to also use the cookies code
from
authlib.views
for redirecting users after authentication. - Fixed a possible crash in the Twitter OAuth flow when the token from the authentication redirect cannot be determined anymore.
- Fixed a crash in the OAuth2 view if fetching user data fails.
0.8 (2018-11-17)
- BACKWARDS INCOMPATIBLE Replaced the email registration
functionality of referencing users with arbitrary payloads. This
allows not only verifying the email address but also additional data
which may or may not be related to the user in question. On the other
hand the comparison of
last_login
timestamps is gone, which means that links may be reused as long as less thanmax_age
seconds have passed. This makes it even more important to keepmax_age
small. The change mostly affects the functions inauthlib.email
.
0.7 (2018-11-04)
- Fixed a race condition when creating new users by using
get_or_create
instead of some homegrownexists
andcreate
trickery. - Changed all locations to pass
new_user
as keyword argument topost_login_response
. - Changed the
admin/login.html
template inauthlib.admin_oauth
to make the SSO button a bit more prominent. Also, replaced "SSO" with "Google" because that is all that is supported right now. - Added the possibility to use callables in
ADMIN_OAUTH_PATTERNS
instead of hard-coded staff email addresses. - Extracted the confirmation code generation from
get_confirmation_url
asget_confirmation_code
. - Fixed usage of deprecated Google OAuth2 scopes.
- Added compatibility with Python 2.
- Extracted the post login redirect cookie setting into a new
set_next_cookie
decorator. - Dropped compatibility shims for Django<1.11.
- Changed the
EmailBackend
to use_default_manager
instead of assuming that the default manager is calledobjects
. - Fixed an edge case bug where
render_to_mail
would crash when encountering an empty text for the subject and body. - Enforced keyword-only usage of the views and functions in
authlib.views
where it is appropriate. - Removed the default messages emitted when creating a new user and when logging out.
- Added a
post_logout_response
callable and argument toauthlib.views.logout
to customize messages and redirects after logging an user out. - Added a
email_login
callable and argument to theoauth2
andemail_registration
view to customize the creation, authentication and login of users. - Changed the
EmailRegistrationForm
to save the request asself.request
, notself._request
. Made use of this for moving the email sending to the form class as well, further shortening the view.
0.6 (2017-12-04)
- Fixed usage of a few deprecated APIs.
- Modified
little_auth.User
to fall back to an obfuscated email address if the full name is empty. - Made it possible to override the default max age of three hours for magic links sent by email.
- Fixed a problem where the
little_auth
migrations were depending on the latestdjango.contrib.auth
migration instead of the first migration without good reason.
0.5 (2017-05-17)
- Moved from
ADMIN_OAUTH_DOMAINS
toADMIN_OAUTH_PATTERNS
to allow regular expression searching. - Finally started adding tests.
- Added django-authlib documentation to Read the Docs.
0.4 (2017-05-11)
- Added some documentation to the README.
- Google client: Removed the deprecated profile scope, and switched to online access only (we do not need offline access).
- Added the
authlib.admin_oauth
app for a minimal Google OAuth2 authentication solution for Django's administration interface. - Added the
authlib.little_auth
app containing a minimal user model with email as username for a quick and dirtyauth.User
replacement. - Allow overriding the view name used in
authlib.email.get_confirmation_url
.
0.3 (2016-12-08)
- Fixed the redirect URL generation of the Facebook and Google client.
- Changed the name of the post login redirect cookie from
next
toauthlib-next
to hopefully prevent clashes. - Authentication providers may also return
None
as email address; handle this case gracefully by showing an error message instead of crashing. - Pass full URLs, not only paths to the OAuth2 libraries because otherwise, secure redirect URLs aren't recognized as such.
0.2 (2016-11-22)
- Added views for registration and logging in and out.
- Added a base user model and an authentication backend for authenticating using email addresses only.
0.1 (2016-11-21)
- Initial release containing helpers for authentication using an email address, either verified by sending a magic link or retrieved from Facebook, Google or Twitter.