zulip/tools/lib
Mateusz Mandera 423aebf98e remote_billing: Implement confirmation flow for RemoteRealm auth.
The way the flow goes now is this:
1. The user initiaties login via "Billing" in the gear menu.
2. That takes them to `/self-hosted-billing/` (possibly with a
   `next_page` param if we use that for some gear menu options).
3. The server queries the bouncer to give the user a link with a signed
   access token.
4. The user is redirected to that link (on `selfhosting.zulipchat.com`).
Now we have two cases, either the user is logging in for the first time
and already did in the past.
If this is the first time, we have:
5. The user is asked to fill in their email in a form that's shown,
   pre-filled with the value provided inside the signed access token.
   They POST this to the next endpoint.
6. The next endpoint sends a confirmation email to that address and asks
   the user to go check their email.
7. The user clicks the link in their email is taken to the
   from_confirmation endpoint.
8. Their initial RemoteBillingUser is created, a new signed link like in
   (3) is generated and they're transparently taken back to (4),
   where now that they have a RemoteBillingUser, they're handled
   just like a user who already logged in before:
If the user already logged in before, they go straight here:
9. "Confirm login" page - they're shown their information (email and
   full_name), can update
   their full name in the form if they want. They also accept ToS here
   if necessary. They POST this form back to
   the endpoint and finally have a logged in session.
10. They're redirected to billing (or `next_page`) now that they have
    access.
2023-12-10 16:15:28 -08:00
..
__init__.py
capitalization.py remote_billing: Implement confirmation flow for RemoteRealm auth. 2023-12-10 16:15:28 -08:00
git-tools.bash
gitlint_rules.py gitlint-rules: Rename to gitlint_rules. 2023-03-03 18:02:38 -08:00
html_branches.py python: Delete superfluous parens. 2023-09-13 13:40:19 -07:00
pretty_print.py ruff: Enable B023 Function definition does not bind loop variable. 2023-09-11 18:03:45 -07:00
provision.py requirements: Upgrade Python requirements. 2023-11-15 15:27:54 -08:00
provision_inner.py provision: Tweak comment to not just mention static assets. 2023-10-05 09:04:33 -07:00
sanity_check.py ruff: Fix PLR1714 Consider merging multiple comparisons. 2023-07-23 15:21:33 -07:00
template_parser.py template_parser: Handle else/elif with whitespace control. 2023-12-09 12:50:05 -08:00
test_script.py dependencies: Upgrade JavaScript dependencies. 2023-10-09 14:16:23 -07:00
test_server.py run-dev: Drop .py from script name. 2023-03-03 18:02:37 -08:00