mirror of
https://mau.dev/maunium/synapse.git
synced 2024-11-17 07:21:37 +01:00
Merge pull request #4184 from matrix-org/rav/fix_public_consent
Fix an internal server error when viewing the public privacy policy
This commit is contained in:
commit
4b60c969d8
3 changed files with 16 additions and 5 deletions
1
changelog.d/4184.feature
Normal file
1
changelog.d/4184.feature
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Include flags to optionally add `m.login.terms` to the registration flow when consent tracking is enabled.
|
|
@ -142,10 +142,10 @@ class ConsentResource(Resource):
|
||||||
userhmac = None
|
userhmac = None
|
||||||
has_consented = False
|
has_consented = False
|
||||||
public_version = username == ""
|
public_version = username == ""
|
||||||
if not public_version or not self.hs.config.user_consent_at_registration:
|
if not public_version:
|
||||||
userhmac = parse_string(request, "h", required=True, encoding=None)
|
userhmac_bytes = parse_string(request, "h", required=True, encoding=None)
|
||||||
|
|
||||||
self._check_hash(username, userhmac)
|
self._check_hash(username, userhmac_bytes)
|
||||||
|
|
||||||
if username.startswith('@'):
|
if username.startswith('@'):
|
||||||
qualified_user_id = username
|
qualified_user_id = username
|
||||||
|
@ -155,15 +155,18 @@ class ConsentResource(Resource):
|
||||||
u = yield self.store.get_user_by_id(qualified_user_id)
|
u = yield self.store.get_user_by_id(qualified_user_id)
|
||||||
if u is None:
|
if u is None:
|
||||||
raise NotFoundError("Unknown user")
|
raise NotFoundError("Unknown user")
|
||||||
|
|
||||||
has_consented = u["consent_version"] == version
|
has_consented = u["consent_version"] == version
|
||||||
|
userhmac = userhmac_bytes.decode("ascii")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self._render_template(
|
self._render_template(
|
||||||
request, "%s.html" % (version,),
|
request, "%s.html" % (version,),
|
||||||
user=username,
|
user=username,
|
||||||
userhmac=userhmac.decode('ascii'),
|
userhmac=userhmac,
|
||||||
version=version,
|
version=version,
|
||||||
has_consented=has_consented, public_version=public_version,
|
has_consented=has_consented,
|
||||||
|
public_version=public_version,
|
||||||
)
|
)
|
||||||
except TemplateNotFound:
|
except TemplateNotFound:
|
||||||
raise NotFoundError("Unknown policy version")
|
raise NotFoundError("Unknown policy version")
|
||||||
|
|
|
@ -60,6 +60,13 @@ class ConsentResourceTestCase(unittest.HomeserverTestCase):
|
||||||
hs = self.setup_test_homeserver(config=config)
|
hs = self.setup_test_homeserver(config=config)
|
||||||
return hs
|
return hs
|
||||||
|
|
||||||
|
def test_render_public_consent(self):
|
||||||
|
"""You can observe the terms form without specifying a user"""
|
||||||
|
resource = consent_resource.ConsentResource(self.hs)
|
||||||
|
request, channel = self.make_request("GET", "/consent?v=1", shorthand=False)
|
||||||
|
render(request, resource, self.reactor)
|
||||||
|
self.assertEqual(channel.code, 200)
|
||||||
|
|
||||||
def test_accept_consent(self):
|
def test_accept_consent(self):
|
||||||
"""
|
"""
|
||||||
A user can use the consent form to accept the terms.
|
A user can use the consent form to accept the terms.
|
||||||
|
|
Loading…
Reference in a new issue