diff options
author | Erik Johnston <erikj@jki.re> | 2018-03-13 13:10:52 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-03-13 13:10:52 +0000 |
commit | da87791975e578d83224b590f97892fb5cd4361a (patch) | |
tree | 295c9f586a6982fdf6f7f616fc18c7d82ba6fa8c /synapse/handlers/register.py | |
parent | Merge pull request #2984 from matrix-org/erikj/fix_rest_regeix (diff) | |
parent | Refactor get_or_register_3pid_guest (diff) | |
download | synapse-da87791975e578d83224b590f97892fb5cd4361a.tar.xz |
Merge pull request #2983 from matrix-org/erikj/rename_register_3pid
Refactor get_or_register_3pid_guest
Diffstat (limited to 'synapse/handlers/register.py')
-rw-r--r-- | synapse/handlers/register.py | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/synapse/handlers/register.py b/synapse/handlers/register.py index 9021d4d57f..ed5939880a 100644 --- a/synapse/handlers/register.py +++ b/synapse/handlers/register.py @@ -446,16 +446,34 @@ class RegistrationHandler(BaseHandler): return self.hs.get_auth_handler() @defer.inlineCallbacks - def guest_access_token_for(self, medium, address, inviter_user_id): + def get_or_register_3pid_guest(self, medium, address, inviter_user_id): + """Get a guest access token for a 3PID, creating a guest account if + one doesn't already exist. + + Args: + medium (str) + address (str) + inviter_user_id (str): The user ID who is trying to invite the + 3PID + + Returns: + Deferred[(str, str)]: A 2-tuple of `(user_id, access_token)` of the + 3PID guest account. + """ access_token = yield self.store.get_3pid_guest_access_token(medium, address) if access_token: - defer.returnValue(access_token) + user_info = yield self.auth.get_user_by_access_token( + access_token + ) - _, access_token = yield self.register( + defer.returnValue((user_info["user"].to_string(), access_token)) + + user_id, access_token = yield self.register( generate_token=True, make_guest=True ) access_token = yield self.store.save_or_get_3pid_guest_access_token( medium, address, access_token, inviter_user_id ) - defer.returnValue(access_token) + + defer.returnValue((user_id, access_token)) |