Allow all rbt commands to authenticate using web-based login.

Review Request #14576 — Created Sept. 8, 2025 and updated

Information

RBTools
release-5.x

Reviewers

This is the final change in a series of changes that ultimately allow
using web-based login for authentication in any rbt command.

We pass a web login callback function through to the
ReviewBoardHTTPPasswordMgr where our other auth callbacks live. We
also add a ReviewBoardWebLoginHandler auth handler which attempts
web-based login once upon the first HTTP 401. If it fails, we fall back
on our existing handlers.

  • Tested rbt post and rbt status passing --web-login to log in to
    a local dev server.
  • Tested rbt post and rbt status passing --web-login to log in to
    the real https://reviews.reviewboard.org server.
  • In the above tests, made sure that the ReviewBoardWebLoginHandler
    auth handler logic was reached by rbt post, and the
    get_authenticated_session logic was reached by rbt status.
  • Tested on RB6 and RB7.1.
  • Ran unit tests and add unit tests in an upcoming change.
Summary ID
Allow all rbt commands to authenticate using web-based login.
This is the final change in a series of changes that ultimately allow using web-based login for authentication in any rbt command. We pass a web login callback function through to the `ReviewBoardHTTPPasswordMgr` where our other auth callbacks live. We also add a `ReviewBoardWebLoginHandler` auth handler which attempts web-based login once upon the first HTTP 401. If it fails, we fall back on our existing handlers.
a386d7e788ee684b3a6c58c9d7465e413859d518
Description From Last Updated

Can you add docs and a "Version Added" for this?

chipx86chipx86

Let's put two blank lines on either side.

daviddavid

This should include a "Version Changed" with the new argument.

chipx86chipx86

The description shouldn't be indented.

chipx86chipx86

Is this to address a circular import? If so, can you add a comment for that?

chipx86chipx86

Blank line after the class docstring.

chipx86chipx86

This can be HTTPResponse | None now.

chipx86chipx86

Same here.

chipx86chipx86

This can be (WebLoginCallback | None) = None.

chipx86chipx86

Can you also add this to a "Version Changed" on the method?

chipx86chipx86

Same comment re: | None.

chipx86chipx86

Same comment re: "Version Changed" on the method.

chipx86chipx86

Description should be indented one level.

chipx86chipx86

Let's go with 5.4 for this release.

chipx86chipx86

web_login_callback appears last in the argument list.

chipx86chipx86
chipx86
  1. 
      
  2. rbtools/api/request.py (Diff revision 1)
     
     
    Show all issues

    Can you add docs and a "Version Added" for this?

  3. rbtools/api/request.py (Diff revision 1)
     
     
     
    Show all issues

    This should include a "Version Changed" with the new argument.

  4. rbtools/api/request.py (Diff revision 1)
     
     
     
    Show all issues

    The description shouldn't be indented.

  5. rbtools/api/request.py (Diff revision 1)
     
     
    Show all issues

    Is this to address a circular import? If so, can you add a comment for that?

  6. rbtools/api/request.py (Diff revision 1)
     
     
     
    Show all issues

    Blank line after the class docstring.

  7. rbtools/api/request.py (Diff revision 1)
     
     
    Show all issues

    This can be HTTPResponse | None now.

  8. rbtools/api/request.py (Diff revision 1)
     
     
    Show all issues

    Same here.

  9. rbtools/api/request.py (Diff revision 1)
     
     
    Show all issues

    This can be (WebLoginCallback | None) = None.

  10. rbtools/api/request.py (Diff revision 1)
     
     
     
     
     
     
    Show all issues

    Can you also add this to a "Version Changed" on the method?

  11. rbtools/api/transport/sync.py (Diff revision 1)
     
     
    Show all issues

    Same comment re: | None.

  12. rbtools/api/transport/sync.py (Diff revision 1)
     
     
     
     
     
     
    Show all issues

    Same comment re: "Version Changed" on the method.

  13. rbtools/commands/base/commands.py (Diff revision 1)
     
     
     
    Show all issues

    Description should be indented one level.

  14. 
      
maubin
david
  1. 
      
  2. rbtools/api/request.py (Diff revisions 1 - 2)
     
     
     
     
     
     
     
     
    Show all issues

    Let's put two blank lines on either side.

  3. 
      
chipx86
  1. 
      
  2. rbtools/api/request.py (Diff revision 2)
     
     
    Show all issues

    Let's go with 5.4 for this release.

  3. rbtools/api/request.py (Diff revision 2)
     
     
     
     
     
     
     
     
     
     
    Show all issues

    web_login_callback appears last in the argument list.

  4. 
      
maubin
Review request changed
Commits:
Summary ID
Allow all rbt commands to authenticate using web-based login.
This is the final change in a series of changes that ultimately allow using web-based login for authentication in any rbt command. We pass a web login callback function through to the `ReviewBoardHTTPPasswordMgr` where our other auth callbacks live. We also add a `ReviewBoardWebLoginHandler` auth handler which attempts web-based login once upon the first HTTP 401. If it fails, we fall back on our existing handlers.
70ced093ce0d19bf9d6e892e1f898696243a6edd
Allow all rbt commands to authenticate using web-based login.
This is the final change in a series of changes that ultimately allow using web-based login for authentication in any rbt command. We pass a web login callback function through to the `ReviewBoardHTTPPasswordMgr` where our other auth callbacks live. We also add a `ReviewBoardWebLoginHandler` auth handler which attempts web-based login once upon the first HTTP 401. If it fails, we fall back on our existing handlers.
a386d7e788ee684b3a6c58c9d7465e413859d518

Checks run (2 succeeded)

flake8 passed.
JSHint passed.
david
  1. Ship It!
  2. 
      
chipx86
  1. Ship It!
  2.