Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit af67c7c

Browse files
authored
Merge pull request #5644 from matrix-org/babolivier/profile-allow-self
Allow newly-registered users to lookup their own profiles
2 parents 8247073 + 73cb716 commit af67c7c

File tree

3 files changed

+52
-0
lines changed

3 files changed

+52
-0
lines changed

changelog.d/5644.bugfix

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix newly-registered users not being able to lookup their own profile without joining a room.

synapse/handlers/profile.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,10 @@ def check_profile_query_allowed(self, target_user, requester=None):
303303
if not self.hs.config.require_auth_for_profile_requests or not requester:
304304
return
305305

306+
# Always allow the user to query their own profile.
307+
if target_user.to_string() == requester.to_string():
308+
return
309+
306310
try:
307311
requester_rooms = yield self.store.get_rooms_for_user(requester.to_string())
308312
target_user_rooms = yield self.store.get_rooms_for_user(

tests/rest/client/v1/test_profile.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,3 +288,50 @@ def ensure_requester_left_room(self):
288288
# if the user isn't already in the room), because we only want to
289289
# make sure the user isn't in the room.
290290
pass
291+
292+
293+
class OwnProfileUnrestrictedTestCase(unittest.HomeserverTestCase):
294+
295+
servlets = [
296+
admin.register_servlets_for_client_rest_resource,
297+
login.register_servlets,
298+
profile.register_servlets,
299+
]
300+
301+
def make_homeserver(self, reactor, clock):
302+
config = self.default_config()
303+
config["require_auth_for_profile_requests"] = True
304+
self.hs = self.setup_test_homeserver(config=config)
305+
306+
return self.hs
307+
308+
def prepare(self, reactor, clock, hs):
309+
# User requesting the profile.
310+
self.requester = self.register_user("requester", "pass")
311+
self.requester_tok = self.login("requester", "pass")
312+
313+
def test_can_lookup_own_profile(self):
314+
"""Tests that a user can lookup their own profile without having to be in a room
315+
if 'require_auth_for_profile_requests' is set to true in the server's config.
316+
"""
317+
request, channel = self.make_request(
318+
"GET", "/profile/" + self.requester, access_token=self.requester_tok
319+
)
320+
self.render(request)
321+
self.assertEqual(channel.code, 200, channel.result)
322+
323+
request, channel = self.make_request(
324+
"GET",
325+
"/profile/" + self.requester + "/displayname",
326+
access_token=self.requester_tok,
327+
)
328+
self.render(request)
329+
self.assertEqual(channel.code, 200, channel.result)
330+
331+
request, channel = self.make_request(
332+
"GET",
333+
"/profile/" + self.requester + "/avatar_url",
334+
access_token=self.requester_tok,
335+
)
336+
self.render(request)
337+
self.assertEqual(channel.code, 200, channel.result)

0 commit comments

Comments
 (0)