• 
      

    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)