Update the auth backends and Change Password for newer Django requirements.

Review Request #11333 — Created Dec. 15, 2020 and submitted

Information

Review Board
release-4.0.x

Reviewers

Django's auth backends now require request as the first positional
parameter, which we didn't have before. Django 1.11 will warn about this
if warnings are enabled, but otherwise works around it. Django 2.0 will
outright require it.

This only manifested as a problem in one situation, when changing
passwords in My Account. In this case, we call authenticate() directly
on the backend, rather than Django's wrapper (which handles legacy
signatures). This triggered a breakage on the standard auth backend.

All authenticate() signatures have been updated, and all call sites as
well.

This is a breaking change for any third-party auth backends.

Unit tests pass.

Successfully changed my password in My Account.

Summary ID
Update the auth backends and Change Password for newer Django requirements.
Django's auth backends now require `request` as the first positional parameter, which we didn't have before. Django 1.11 will warn about this if warnings are enabled, but otherwise works around it. Django 2.0 will outright require it. This only manifested as a problem in one situation, when changing passwords in My Account. In this case, we call `authenticate()` directly on the backend, rather than Django's wrapper (which handles legacy signatures). This triggered a breakage on the standard auth backend. All `authenticate()` signatures have been updated, and all call sites as well. This is a breaking change for any third-party auth backends.
8542f2eca3006e9a76e7d85966d28d87438baef5
chipx86
david
  1. Ship It!
  2. 
      
chipx86
Review request changed
Status:
Completed
Change Summary:
Pushed to release-4.0.x (f8af576)