14
14
# limitations under the License.
15
15
16
16
""" This module contains REST servlets to do with rooms: /rooms/<paths> """
17
+ import copy
17
18
import logging
18
19
import re
19
20
from typing import TYPE_CHECKING , Dict , List , Optional , Tuple
47
48
from synapse .streams .config import PaginationConfig
48
49
from synapse .types import (
49
50
JsonDict ,
51
+ Requester ,
50
52
RoomAlias ,
51
53
RoomID ,
52
54
StreamToken ,
@@ -309,7 +311,14 @@ def __init__(self, hs):
309
311
self .room_member_handler = hs .get_room_member_handler ()
310
312
self .auth = hs .get_auth ()
311
313
312
- async def inherit_depth_from_prev_ids (self , prev_event_ids ) -> int :
314
+ def _copy_requester_and_override_user_id (self , requester , new_user_id ):
315
+ serialized_requester = requester .serialize ()
316
+ serialized_requester ["user_id" ] = new_user_id
317
+ new_requester = Requester .deserialize (self .store , serialized_requester )
318
+
319
+ return new_requester
320
+
321
+ async def _inherit_depth_from_prev_ids (self , prev_event_ids ) -> int :
313
322
(
314
323
most_recent_prev_event_id ,
315
324
most_recent_prev_event_depth ,
@@ -438,7 +447,9 @@ async def on_POST(self, request, room_id):
438
447
if event_dict ["type" ] == EventTypes .Member :
439
448
membership = event_dict ["content" ].get ("membership" , None )
440
449
event_id , _ = await self .room_member_handler .update_membership (
441
- requester ,
450
+ self ._copy_requester_and_override_user_id (
451
+ requester , state_event ["sender" ]
452
+ ),
442
453
target = UserID .from_string (event_dict ["state_key" ]),
443
454
room_id = room_id ,
444
455
action = membership ,
@@ -458,7 +469,9 @@ async def on_POST(self, request, room_id):
458
469
event ,
459
470
_ ,
460
471
) = await self .event_creation_handler .create_and_send_nonmember_event (
461
- requester ,
472
+ self ._copy_requester_and_override_user_id (
473
+ requester , state_event ["sender" ]
474
+ ),
462
475
event_dict ,
463
476
outlier = True ,
464
477
prev_event_ids = [fake_prev_event_id ],
@@ -510,7 +523,9 @@ async def on_POST(self, request, room_id):
510
523
# Prepend the insertion event to the start of the chunk
511
524
events_to_create = [insertion_event ] + events_to_create
512
525
513
- inherited_depth = await self .inherit_depth_from_prev_ids (prev_events_from_query )
526
+ inherited_depth = await self ._inherit_depth_from_prev_ids (
527
+ prev_events_from_query
528
+ )
514
529
515
530
event_ids = []
516
531
prev_event_ids = prev_events_from_query
@@ -532,7 +547,7 @@ async def on_POST(self, request, room_id):
532
547
}
533
548
534
549
event , context = await self .event_creation_handler .create_event (
535
- requester ,
550
+ self . _copy_requester_and_override_user_id ( requester , ev [ "sender" ]) ,
536
551
event_dict ,
537
552
prev_event_ids = event_dict .get ("prev_events" ),
538
553
auth_event_ids = auth_event_ids ,
@@ -562,7 +577,7 @@ async def on_POST(self, request, room_id):
562
577
# where topological_ordering is just depth.
563
578
for (event , context ) in reversed (events_to_persist ):
564
579
ev = await self .event_creation_handler .handle_new_client_event (
565
- requester = requester ,
580
+ self . _copy_requester_and_override_user_id ( requester , event [ "sender" ]) ,
566
581
event = event ,
567
582
context = context ,
568
583
)
0 commit comments