• 
      

    Refactor OAuth forms; prevent tampering with client ID and secret

    Review Request #9056 — Created July 5, 2017 and submitted — Latest diff uploaded

    Information

    Review Board
    release-3.0.x
    7c8dbf6...

    Reviewers

    The ApplicationForm and UserApplicationForm have been refactored
    into the following:

    • ApplicationCreationForm, for creating applications in the admin
      site and through the API;
    • AppplicationChangeForm, for updating applications in the admin site
      and through the API;
    • UserApplicationCreationForm, for users to create applications; and
    • UserApplicationChangeForm, for users to edit applications.

    These forms are now more locked down: none of them accept client_id or
    client_secret fields. Instead, the *CreationForms will generate
    those when creating a new Application. The *ChangeForms will show the
    client_id and client_secret fields to users, but any changes made to
    them will be ignored.

    The above forms now all reject enabling an application that has been
    disabled for security reasons (i.e., the original owning user was removed
    from the local site the Application is associated with).

    The API now is more strict about enabling Applications that have been
    disabled for security. Previously, passing enabled=1 into the API
    would re-enable a disabled Application and regenerate its client secret.
    This behaviour has been updated to explicitly require the
    regenerate_client_secret field to be set set truthy. Otherwise an
    error will be returned (the same error that is returned when attempting
    to enable an Application disabled by security through the above forms).

    Ran unit tests.