Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Commit

Permalink
Add support for the stable version of MSC2778 (#11335)
Browse files Browse the repository at this point in the history
* Add support for the stable version of MSC2778

Signed-off-by: Tulir Asokan <[email protected]>

* Expect m.login.application_service in login and password provider tests

Signed-off-by: Tulir Asokan <[email protected]>
  • Loading branch information
tulir authored Nov 15, 2021
1 parent 605921b commit 6f862c5
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 4 deletions.
1 change: 1 addition & 0 deletions changelog.d/11335.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Support the stable version of [MSC2778](https://github.com/matrix-org/matrix-doc/pull/2778): the `m.login.application_service` login type. Contributed by @tulir.
9 changes: 7 additions & 2 deletions synapse/rest/client/login.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,8 @@ class LoginRestServlet(RestServlet):
TOKEN_TYPE = "m.login.token"
JWT_TYPE = "org.matrix.login.jwt"
JWT_TYPE_DEPRECATED = "m.login.jwt"
APPSERVICE_TYPE = "uk.half-shot.msc2778.login.application_service"
APPSERVICE_TYPE = "m.login.application_service"
APPSERVICE_TYPE_UNSTABLE = "uk.half-shot.msc2778.login.application_service"
REFRESH_TOKEN_PARAM = "org.matrix.msc2918.refresh_token"

def __init__(self, hs: "HomeServer"):
Expand Down Expand Up @@ -143,6 +144,7 @@ def on_GET(self, request: SynapseRequest) -> Tuple[int, JsonDict]:
flows.extend({"type": t} for t in self.auth_handler.get_supported_login_types())

flows.append({"type": LoginRestServlet.APPSERVICE_TYPE})
flows.append({"type": LoginRestServlet.APPSERVICE_TYPE_UNSTABLE})

return 200, {"flows": flows}

Expand All @@ -159,7 +161,10 @@ async def on_POST(self, request: SynapseRequest) -> Tuple[int, LoginResponse]:
should_issue_refresh_token = False

try:
if login_submission["type"] == LoginRestServlet.APPSERVICE_TYPE:
if login_submission["type"] in (
LoginRestServlet.APPSERVICE_TYPE,
LoginRestServlet.APPSERVICE_TYPE_UNSTABLE,
):
appservice = self.auth.get_appservice_by_req(request)

if appservice.is_rate_limited():
Expand Down
5 changes: 4 additions & 1 deletion tests/handlers/test_password_providers.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,10 @@

# (possibly experimental) login flows we expect to appear in the list after the normal
# ones
ADDITIONAL_LOGIN_FLOWS = [{"type": "uk.half-shot.msc2778.login.application_service"}]
ADDITIONAL_LOGIN_FLOWS = [
{"type": "m.login.application_service"},
{"type": "uk.half-shot.msc2778.login.application_service"},
]

# a mock instance which the dummy auth providers delegate to, so we can see what's going
# on
Expand Down
5 changes: 4 additions & 1 deletion tests/rest/client/test_login.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,10 @@

# (possibly experimental) login flows we expect to appear in the list after the normal
# ones
ADDITIONAL_LOGIN_FLOWS = [{"type": "uk.half-shot.msc2778.login.application_service"}]
ADDITIONAL_LOGIN_FLOWS = [
{"type": "m.login.application_service"},
{"type": "uk.half-shot.msc2778.login.application_service"},
]


class LoginRestServletTestCase(unittest.HomeserverTestCase):
Expand Down

0 comments on commit 6f862c5

Please sign in to comment.