diff --git a/synapse/rest/admin/users.py b/synapse/rest/admin/users.py
index 9900498fbe..77446970cb 100644
--- a/synapse/rest/admin/users.py
+++ b/synapse/rest/admin/users.py
@@ -630,6 +630,12 @@ class UserRegisterServlet(RestServlet):
if not hmac.compare_digest(want_mac.encode("ascii"), got_mac.encode("ascii")):
raise SynapseError(HTTPStatus.FORBIDDEN, "HMAC incorrect")
+ should_issue_refresh_token = body.get("refresh_token", False)
+ if not isinstance(should_issue_refresh_token, bool):
+ raise SynapseError(
+ HTTPStatus.BAD_REQUEST, "refresh_token must be a boolean"
+ )
+
# Reuse the parts of RegisterRestServlet to reduce code duplication
from synapse.rest.client.register import RegisterRestServlet
@@ -645,7 +651,9 @@ class UserRegisterServlet(RestServlet):
approved=True,
)
- result = await register._create_registration_details(user_id, body)
+ result = await register._create_registration_details(
+ user_id, body, should_issue_refresh_token=should_issue_refresh_token
+ )
return HTTPStatus.OK, result
diff --git a/synapse/rest/client/login.py b/synapse/rest/client/login.py
index 7be327e26f..546f042f87 100644
--- a/synapse/rest/client/login.py
+++ b/synapse/rest/client/login.py
@@ -115,6 +115,7 @@ class LoginRestServlet(RestServlet):
self.registration_handler = hs.get_registration_handler()
self._sso_handler = hs.get_sso_handler()
self._spam_checker = hs.get_module_api_callbacks().spam_checker
+ self._account_validity_handler = hs.get_account_validity_handler()
self._well_known_builder = WellKnownBuilder(hs)
self._address_ratelimiter = Ratelimiter(
@@ -470,6 +471,13 @@ class LoginRestServlet(RestServlet):
device_id=device_id,
)
+ # execute the callback
+ await self._account_validity_handler.on_user_login(
+ user_id,
+ auth_provider_type=login_submission.get("type"),
+ auth_provider_id=auth_provider_id,
+ )
+
if valid_until_ms is not None:
expires_in_ms = valid_until_ms - self.clock.time_msec()
result["expires_in_ms"] = expires_in_ms
diff --git a/synapse/rest/client/versions.py b/synapse/rest/client/versions.py
index 95400ba570..f4d19e0470 100644
--- a/synapse/rest/client/versions.py
+++ b/synapse/rest/client/versions.py
@@ -80,6 +80,9 @@ class VersionsRestServlet(RestServlet):
"v1.4",
"v1.5",
"v1.6",
+ "v1.7",
+ "v1.8",
+ "v1.9",
],
# as per MSC1497:
"unstable_features": {
|