Propagate changes to the client dict to the database.
parent
c4c84b67d5
commit
d7c7f64f17
|
@ -317,7 +317,7 @@ class AuthHandler(BaseHandler):
|
|||
except StoreError:
|
||||
raise SynapseError(400, "Unknown session ID: %s" % (sid,))
|
||||
|
||||
if not clientdict:
|
||||
if clientdict:
|
||||
# This was designed to allow the client to omit the parameters
|
||||
# and just supply the session in subsequent calls so it split
|
||||
# auth between devices by just sharing the session, (eg. so you
|
||||
|
@ -327,6 +327,8 @@ class AuthHandler(BaseHandler):
|
|||
# on a homeserver.
|
||||
# Revisit: Assuming the REST APIs do sensible validation, the data
|
||||
# isn't arbitrary.
|
||||
await self.store.set_ui_auth_clientdict(sid, clientdict)
|
||||
else:
|
||||
clientdict = session.clientdict
|
||||
|
||||
if not authdict:
|
||||
|
|
|
@ -172,6 +172,27 @@ class UIAuthWorkerStore(SQLBaseStore):
|
|||
|
||||
return results
|
||||
|
||||
async def set_ui_auth_clientdict(
|
||||
self, session_id: str, clientdict: JsonDict
|
||||
) -> None:
|
||||
"""
|
||||
Store an updated clientdict for a given session ID.
|
||||
|
||||
Args:
|
||||
session_id: The ID of this session as returned from check_auth
|
||||
clientdict:
|
||||
The dictionary from the client root level, not the 'auth' key.
|
||||
"""
|
||||
# The clientdict gets stored as JSON.
|
||||
clientdict_json = json.dumps(clientdict)
|
||||
|
||||
self.db.simple_update_one(
|
||||
table="ui_auth_sessions",
|
||||
keyvalues={"session_id": session_id},
|
||||
updatevalues={"clientdict": clientdict_json},
|
||||
desc="set_ui_auth_client_dict",
|
||||
)
|
||||
|
||||
async def set_ui_auth_session_data(self, session_id: str, key: str, value: Any):
|
||||
"""
|
||||
Store a key-value pair into the sessions data associated with this
|
||||
|
|
Loading…
Reference in New Issue