Propagate changes to the client dict to the database.
parent
c4c84b67d5
commit
d7c7f64f17
|
@ -317,7 +317,7 @@ class AuthHandler(BaseHandler):
|
||||||
except StoreError:
|
except StoreError:
|
||||||
raise SynapseError(400, "Unknown session ID: %s" % (sid,))
|
raise SynapseError(400, "Unknown session ID: %s" % (sid,))
|
||||||
|
|
||||||
if not clientdict:
|
if clientdict:
|
||||||
# This was designed to allow the client to omit the parameters
|
# This was designed to allow the client to omit the parameters
|
||||||
# and just supply the session in subsequent calls so it split
|
# and just supply the session in subsequent calls so it split
|
||||||
# auth between devices by just sharing the session, (eg. so you
|
# auth between devices by just sharing the session, (eg. so you
|
||||||
|
@ -327,6 +327,8 @@ class AuthHandler(BaseHandler):
|
||||||
# on a homeserver.
|
# on a homeserver.
|
||||||
# Revisit: Assuming the REST APIs do sensible validation, the data
|
# Revisit: Assuming the REST APIs do sensible validation, the data
|
||||||
# isn't arbitrary.
|
# isn't arbitrary.
|
||||||
|
await self.store.set_ui_auth_clientdict(sid, clientdict)
|
||||||
|
else:
|
||||||
clientdict = session.clientdict
|
clientdict = session.clientdict
|
||||||
|
|
||||||
if not authdict:
|
if not authdict:
|
||||||
|
|
|
@ -172,6 +172,27 @@ class UIAuthWorkerStore(SQLBaseStore):
|
||||||
|
|
||||||
return results
|
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):
|
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
|
Store a key-value pair into the sessions data associated with this
|
||||||
|
|
Loading…
Reference in New Issue