comms: set guest displayname at registration

This commit is contained in:
Brad Stein 2026-01-07 11:23:53 -03:00
parent c950c32e93
commit 695e1ec322
3 changed files with 22 additions and 2 deletions

View File

@ -6,7 +6,7 @@ metadata:
namespace: comms namespace: comms
spec: spec:
schedule: "*/1 * * * *" schedule: "*/1 * * * *"
suspend: false suspend: true
jobTemplate: jobTemplate:
spec: spec:
backoffLimit: 0 backoffLimit: 0

View File

@ -6,11 +6,13 @@ metadata:
data: data:
guest_register.py: | guest_register.py: |
import secrets import secrets
import random
import synapse.api.auth import synapse.api.auth
from synapse.api.errors import Codes, SynapseError from synapse.api.errors import Codes, SynapseError
from synapse.http.server import DirectServeJsonResource from synapse.http.server import DirectServeJsonResource
from synapse.http.servlet import parse_json_object_from_request from synapse.http.servlet import parse_json_object_from_request
from synapse.types import UserID, create_requester
class GuestRegisterResource(DirectServeJsonResource): class GuestRegisterResource(DirectServeJsonResource):
@ -20,6 +22,9 @@ data:
self._shared_secret = shared_secret self._shared_secret = shared_secret
self._header_name = header_name self._header_name = header_name
self._adj = ["brisk", "calm", "eager", "gentle", "merry", "nifty", "rapid", "sunny", "witty", "zesty"]
self._noun = ["otter", "falcon", "comet", "ember", "grove", "harbor", "meadow", "raven", "river", "summit"]
async def _async_render_POST(self, request): # noqa: N802 async def _async_render_POST(self, request): # noqa: N802
provided = request.requestHeaders.getRawHeaders(self._header_name) provided = request.requestHeaders.getRawHeaders(self._header_name)
if not provided or not secrets.compare_digest(provided[0], self._shared_secret): if not provided or not secrets.compare_digest(provided[0], self._shared_secret):
@ -43,6 +48,21 @@ data:
is_guest=True, is_guest=True,
) )
displayname = body.get("displayname")
if not isinstance(displayname, str) or not displayname.strip():
displayname = f"{random.choice(self._adj)}-{random.choice(self._noun)}"
try:
requester = create_requester(user_id, is_guest=True, device_id=device_id)
await self._hs.get_profile_handler().set_displayname(
UserID.from_string(user_id),
requester,
displayname,
propagate=False,
)
except Exception:
pass
result = { result = {
"user_id": user_id, "user_id": user_id,
"device_id": device_id, "device_id": device_id,

View File

@ -684,7 +684,7 @@ spec:
template: template:
metadata: metadata:
annotations: annotations:
checksum/config: manual-rtc-enable-7 checksum/config: manual-rtc-enable-8
checksum/secrets: ec9f3b254a562a0f0709461eb74a8cc91b8c1a2fb06be2594a131776c2541773 checksum/secrets: ec9f3b254a562a0f0709461eb74a8cc91b8c1a2fb06be2594a131776c2541773
labels: labels:
app.kubernetes.io/name: matrix-synapse app.kubernetes.io/name: matrix-synapse