mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-03 00:14:54 -04:00
Allow HS to send emails when adding an email to the HS (#6042)
This commit is contained in:
parent
7763dd3e95
commit
df3401a71d
12 changed files with 359 additions and 72 deletions
|
@ -24,7 +24,7 @@ from six.moves import range
|
|||
from twisted.internet import defer
|
||||
|
||||
from synapse.api.constants import UserTypes
|
||||
from synapse.api.errors import Codes, StoreError, ThreepidValidationError
|
||||
from synapse.api.errors import Codes, StoreError, SynapseError, ThreepidValidationError
|
||||
from synapse.metrics.background_process_metrics import run_as_background_process
|
||||
from synapse.storage import background_updates
|
||||
from synapse.storage._base import SQLBaseStore
|
||||
|
@ -661,18 +661,31 @@ class RegistrationWorkerStore(SQLBaseStore):
|
|||
medium (str|None): The medium of the 3PID
|
||||
address (str|None): The address of the 3PID
|
||||
sid (str|None): The ID of the validation session
|
||||
client_secret (str|None): A unique string provided by the client to
|
||||
help identify this validation attempt
|
||||
client_secret (str): A unique string provided by the client to help identify this
|
||||
validation attempt
|
||||
validated (bool|None): Whether sessions should be filtered by
|
||||
whether they have been validated already or not. None to
|
||||
perform no filtering
|
||||
|
||||
Returns:
|
||||
deferred {str, int}|None: A dict containing the
|
||||
latest session_id and send_attempt count for this 3PID.
|
||||
Otherwise None if there hasn't been a previous attempt
|
||||
Deferred[dict|None]: A dict containing the following:
|
||||
* address - address of the 3pid
|
||||
* medium - medium of the 3pid
|
||||
* client_secret - a secret provided by the client for this validation session
|
||||
* session_id - ID of the validation session
|
||||
* send_attempt - a number serving to dedupe send attempts for this session
|
||||
* validated_at - timestamp of when this session was validated if so
|
||||
|
||||
Otherwise None if a validation session is not found
|
||||
"""
|
||||
keyvalues = {"medium": medium, "client_secret": client_secret}
|
||||
if not client_secret:
|
||||
raise SynapseError(
|
||||
400, "Missing parameter: client_secret", errcode=Codes.MISSING_PARAM
|
||||
)
|
||||
|
||||
keyvalues = {"client_secret": client_secret}
|
||||
if medium:
|
||||
keyvalues["medium"] = medium
|
||||
if address:
|
||||
keyvalues["address"] = address
|
||||
if sid:
|
||||
|
@ -1209,6 +1222,10 @@ class RegistrationStore(
|
|||
current_ts (int): The current unix time in milliseconds. Used for
|
||||
checking token expiry status
|
||||
|
||||
Raises:
|
||||
ThreepidValidationError: if a matching validation token was not found or has
|
||||
expired
|
||||
|
||||
Returns:
|
||||
deferred str|None: A str representing a link to redirect the user
|
||||
to if there is one.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue