summary refs log tree commit diff
path: root/synapse/types.py
diff options
context:
space:
mode:
authorAndrew Morgan <andrew@amorgan.xyz>2020-12-31 14:34:59 +0000
committerAndrew Morgan <andrew@amorgan.xyz>2020-12-31 14:34:59 +0000
commitde6773523d0dc175f0e8911b328861404fe3f9c5 (patch)
treeb50465cb8cdc4106da909992afd0b60b54697b82 /synapse/types.py
parentMerge commit 'c97da1e45' into anoa/dinsic_release_1_23_1 (diff)
parentFix unit tests (#8689) (diff)
downloadsynapse-de6773523d0dc175f0e8911b328861404fe3f9c5.tar.xz
Merge commit 'ef2d62701' into anoa/dinsic_release_1_23_1
Diffstat (limited to 'synapse/types.py')
-rw-r--r--synapse/types.py33
1 files changed, 26 insertions, 7 deletions
diff --git a/synapse/types.py b/synapse/types.py

index 6c338fe0b7..5e52c1eb12 100644 --- a/synapse/types.py +++ b/synapse/types.py
@@ -29,6 +29,7 @@ from typing import ( Tuple, Type, TypeVar, + Union, ) import attr @@ -39,6 +40,7 @@ from unpaddedbase64 import decode_base64 from synapse.api.errors import Codes, SynapseError if TYPE_CHECKING: + from synapse.appservice.api import ApplicationService from synapse.storage.databases.main import DataStore # define a version of typing.Collection that works on python 3.5 @@ -75,6 +77,7 @@ class Requester( "shadow_banned", "device_id", "app_service", + "authenticated_entity", ], ) ): @@ -105,6 +108,7 @@ class Requester( "shadow_banned": self.shadow_banned, "device_id": self.device_id, "app_server_id": self.app_service.id if self.app_service else None, + "authenticated_entity": self.authenticated_entity, } @staticmethod @@ -130,16 +134,18 @@ class Requester( shadow_banned=input["shadow_banned"], device_id=input["device_id"], app_service=appservice, + authenticated_entity=input["authenticated_entity"], ) def create_requester( - user_id, - access_token_id=None, - is_guest=False, - shadow_banned=False, - device_id=None, - app_service=None, + user_id: Union[str, "UserID"], + access_token_id: Optional[int] = None, + is_guest: Optional[bool] = False, + shadow_banned: Optional[bool] = False, + device_id: Optional[str] = None, + app_service: Optional["ApplicationService"] = None, + authenticated_entity: Optional[str] = None, ): """ Create a new ``Requester`` object @@ -152,14 +158,27 @@ def create_requester( shadow_banned (bool): True if the user making this request is shadow-banned. device_id (str|None): device_id which was set at authentication time app_service (ApplicationService|None): the AS requesting on behalf of the user + authenticated_entity: The entity that authenticated when making the request. + This is different to the user_id when an admin user or the server is + "puppeting" the user. Returns: Requester """ if not isinstance(user_id, UserID): user_id = UserID.from_string(user_id) + + if authenticated_entity is None: + authenticated_entity = user_id.to_string() + return Requester( - user_id, access_token_id, is_guest, shadow_banned, device_id, app_service + user_id, + access_token_id, + is_guest, + shadow_banned, + device_id, + app_service, + authenticated_entity, )