Add support for the stable version of MSC2778 (#11335)
* Add support for the stable version of MSC2778 Signed-off-by: Tulir Asokan <tulir@maunium.net> * Expect m.login.application_service in login and password provider tests Signed-off-by: Tulir Asokan <tulir@maunium.net>pull/11340/head
parent
605921bc6b
commit
6f862c5c28
|
@ -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.
|
|
@ -61,7 +61,8 @@ class LoginRestServlet(RestServlet):
|
||||||
TOKEN_TYPE = "m.login.token"
|
TOKEN_TYPE = "m.login.token"
|
||||||
JWT_TYPE = "org.matrix.login.jwt"
|
JWT_TYPE = "org.matrix.login.jwt"
|
||||||
JWT_TYPE_DEPRECATED = "m.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"
|
REFRESH_TOKEN_PARAM = "org.matrix.msc2918.refresh_token"
|
||||||
|
|
||||||
def __init__(self, hs: "HomeServer"):
|
def __init__(self, hs: "HomeServer"):
|
||||||
|
@ -143,6 +144,7 @@ class LoginRestServlet(RestServlet):
|
||||||
flows.extend({"type": t} for t in self.auth_handler.get_supported_login_types())
|
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})
|
||||||
|
flows.append({"type": LoginRestServlet.APPSERVICE_TYPE_UNSTABLE})
|
||||||
|
|
||||||
return 200, {"flows": flows}
|
return 200, {"flows": flows}
|
||||||
|
|
||||||
|
@ -159,7 +161,10 @@ class LoginRestServlet(RestServlet):
|
||||||
should_issue_refresh_token = False
|
should_issue_refresh_token = False
|
||||||
|
|
||||||
try:
|
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)
|
appservice = self.auth.get_appservice_by_req(request)
|
||||||
|
|
||||||
if appservice.is_rate_limited():
|
if appservice.is_rate_limited():
|
||||||
|
|
|
@ -31,7 +31,10 @@ from tests.unittest import override_config
|
||||||
|
|
||||||
# (possibly experimental) login flows we expect to appear in the list after the normal
|
# (possibly experimental) login flows we expect to appear in the list after the normal
|
||||||
# ones
|
# 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
|
# a mock instance which the dummy auth providers delegate to, so we can see what's going
|
||||||
# on
|
# on
|
||||||
|
|
|
@ -79,7 +79,10 @@ EXPECTED_CLIENT_REDIRECT_URL_PARAMS = [("<ab c>", ""), ('q" =+"', '"fö&=o"')]
|
||||||
|
|
||||||
# (possibly experimental) login flows we expect to appear in the list after the normal
|
# (possibly experimental) login flows we expect to appear in the list after the normal
|
||||||
# ones
|
# 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):
|
class LoginRestServletTestCase(unittest.HomeserverTestCase):
|
||||||
|
|
Loading…
Reference in New Issue