Make /register inhibit logins for ASes

This commit is contained in:
Quentin Gliech 2024-09-12 15:08:40 +02:00
parent e5556e6fd3
commit 68cb2b90ea
No known key found for this signature in database
GPG key ID: 22D62B84552719FC
2 changed files with 9 additions and 4 deletions

View file

@ -630,7 +630,9 @@ class RegistrationHandler:
""" """
await self._auto_join_rooms(user_id) await self._auto_join_rooms(user_id)
async def appservice_register(self, user_localpart: str, as_token: str) -> str: async def appservice_register(
self, user_localpart: str, as_token: str
) -> Tuple[str, ApplicationService]:
user = UserID(user_localpart, self.hs.hostname) user = UserID(user_localpart, self.hs.hostname)
user_id = user.to_string() user_id = user.to_string()
service = self.store.get_app_service_by_token(as_token) service = self.store.get_app_service_by_token(as_token)
@ -653,7 +655,7 @@ class RegistrationHandler:
appservice_id=service_id, appservice_id=service_id,
create_profile_with_displayname=user.localpart, create_profile_with_displayname=user.localpart,
) )
return user_id return (user_id, service)
def check_user_id_not_appservice_exclusive( def check_user_id_not_appservice_exclusive(
self, user_id: str, allowed_appservice: Optional[ApplicationService] = None self, user_id: str, allowed_appservice: Optional[ApplicationService] = None

View file

@ -771,9 +771,12 @@ class RegisterRestServlet(RestServlet):
body: JsonDict, body: JsonDict,
should_issue_refresh_token: bool = False, should_issue_refresh_token: bool = False,
) -> JsonDict: ) -> JsonDict:
user_id = await self.registration_handler.appservice_register( user_id, appservice = await self.registration_handler.appservice_register(
username, as_token username, as_token
) )
if appservice.msc4190_device_management:
body["inhibit_login"] = True
return await self._create_registration_details( return await self._create_registration_details(
user_id, user_id,
body, body,
@ -937,7 +940,7 @@ class RegisterAppServiceOnlyRestServlet(RestServlet):
as_token = self.auth.get_access_token_from_request(request) as_token = self.auth.get_access_token_from_request(request)
user_id = await self.registration_handler.appservice_register( user_id, _ = await self.registration_handler.appservice_register(
desired_username, as_token desired_username, as_token
) )
return 200, {"user_id": user_id} return 200, {"user_id": user_id}