diff --git a/.circleci/config.yml b/.circleci/config.yml
index 137747dae3..341395765d 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -1,116 +1,8 @@
version: 2
jobs:
- dockerhubuploadrelease:
- machine: true
- steps:
- - checkout
- - run: docker build -f docker/Dockerfile --label gitsha1=${CIRCLE_SHA1} -t matrixdotorg/synapse:${CIRCLE_TAG}-py2 .
- - run: docker build -f docker/Dockerfile --label gitsha1=${CIRCLE_SHA1} -t matrixdotorg/synapse:${CIRCLE_TAG} -t matrixdotorg/synapse:${CIRCLE_TAG}-py3 --build-arg PYTHON_VERSION=3.6 .
- - run: docker login --username $DOCKER_HUB_USERNAME --password $DOCKER_HUB_PASSWORD
- - run: docker push matrixdotorg/synapse:${CIRCLE_TAG}
- - run: docker push matrixdotorg/synapse:${CIRCLE_TAG}-py2
- - run: docker push matrixdotorg/synapse:${CIRCLE_TAG}-py3
- dockerhubuploadlatest:
- machine: true
- steps:
- - checkout
- - run: docker build -f docker/Dockerfile --label gitsha1=${CIRCLE_SHA1} -t matrixdotorg/synapse:latest-py2 .
- - run: docker build -f docker/Dockerfile --label gitsha1=${CIRCLE_SHA1} -t matrixdotorg/synapse:latest -t matrixdotorg/synapse:latest-py3 --build-arg PYTHON_VERSION=3.6 .
- - run: docker login --username $DOCKER_HUB_USERNAME --password $DOCKER_HUB_PASSWORD
- - run: docker push matrixdotorg/synapse:latest
- - run: docker push matrixdotorg/synapse:latest-py2
- - run: docker push matrixdotorg/synapse:latest-py3
- sytestpy2:
- docker:
- - image: matrixdotorg/sytest-synapsepy2
- working_directory: /src
- steps:
- - checkout
- - run: /synapse_sytest.sh
- - store_artifacts:
- path: /logs
- destination: logs
- - store_test_results:
- path: /logs
- sytestpy2postgres:
- docker:
- - image: matrixdotorg/sytest-synapsepy2
- working_directory: /src
- steps:
- - checkout
- - run: POSTGRES=1 /synapse_sytest.sh
- - store_artifacts:
- path: /logs
- destination: logs
- - store_test_results:
- path: /logs
- sytestpy2merged:
- docker:
- - image: matrixdotorg/sytest-synapsepy2
- working_directory: /src
- steps:
- - checkout
- - run: bash .circleci/merge_base_branch.sh
- - run: /synapse_sytest.sh
- - store_artifacts:
- path: /logs
- destination: logs
- - store_test_results:
- path: /logs
sytestpy2postgresmerged:
docker:
- - image: matrixdotorg/sytest-synapsepy2
- working_directory: /src
- steps:
- - checkout
- - run: bash .circleci/merge_base_branch.sh
- - run: POSTGRES=1 /synapse_sytest.sh
- - store_artifacts:
- path: /logs
- destination: logs
- - store_test_results:
- path: /logs
-
- sytestpy3:
- docker:
- - image: matrixdotorg/sytest-synapsepy3
- working_directory: /src
- steps:
- - checkout
- - run: /synapse_sytest.sh
- - store_artifacts:
- path: /logs
- destination: logs
- - store_test_results:
- path: /logs
- sytestpy3postgres:
- docker:
- - image: matrixdotorg/sytest-synapsepy3
- working_directory: /src
- steps:
- - checkout
- - run: POSTGRES=1 /synapse_sytest.sh
- - store_artifacts:
- path: /logs
- destination: logs
- - store_test_results:
- path: /logs
- sytestpy3merged:
- docker:
- - image: matrixdotorg/sytest-synapsepy3
- working_directory: /src
- steps:
- - checkout
- - run: bash .circleci/merge_base_branch.sh
- - run: /synapse_sytest.sh
- - store_artifacts:
- path: /logs
- destination: logs
- - store_test_results:
- path: /logs
- sytestpy3postgresmerged:
- docker:
- - image: matrixdotorg/sytest-synapsepy3
+ - image: matrixdotorg/sytest-synapse:dinsic
working_directory: /src
steps:
- checkout
@@ -126,45 +18,7 @@ workflows:
version: 2
build:
jobs:
- - sytestpy2:
- filters:
- branches:
- only: /develop|master|release-.*/
- - sytestpy2postgres:
- filters:
- branches:
- only: /develop|master|release-.*/
- - sytestpy3:
- filters:
- branches:
- only: /develop|master|release-.*/
- - sytestpy3postgres:
- filters:
- branches:
- only: /develop|master|release-.*/
- - sytestpy2merged:
- filters:
- branches:
- ignore: /develop|master|release-.*/
- sytestpy2postgresmerged:
filters:
branches:
- ignore: /develop|master|release-.*/
- - sytestpy3merged:
- filters:
- branches:
- ignore: /develop|master|release-.*/
- - sytestpy3postgresmerged:
- filters:
- branches:
- ignore: /develop|master|release-.*/
- - dockerhubuploadrelease:
- filters:
- tags:
- only: /v[0-9].[0-9]+.[0-9]+.*/
- branches:
- ignore: /.*/
- - dockerhubuploadlatest:
- filters:
- branches:
- only: master
+ ignore: /develop|master|release-.*/
\ No newline at end of file
diff --git a/.circleci/merge_base_branch.sh b/.circleci/merge_base_branch.sh
index 4c19fa70d7..56895284ba 100755
--- a/.circleci/merge_base_branch.sh
+++ b/.circleci/merge_base_branch.sh
@@ -9,11 +9,12 @@ source $BASH_ENV
if [[ -z "${CIRCLE_PR_NUMBER}" ]]
then
- echo "Can't figure out what the PR number is! Assuming merge target is develop."
+ echo "Can't figure out what the PR number is! Assuming merge target is dinsic."
- # It probably hasn't had a PR opened yet. Since all PRs land on develop, we
- # can probably assume it's based on it and will be merged into it.
- GITBASE="develop"
+ # It probably hasn't had a PR opened yet. Since all PRs for dinsic land on
+ # dinsic, we can probably assume it's based on it and will be merged into
+ # it.
+ GITBASE="dinsic"
else
# Get the reference, using the GitHub API
GITBASE=`wget -O- https://api.github.com/repos/matrix-org/synapse/pulls/${CIRCLE_PR_NUMBER} | jq -r '.base.ref'`
diff --git a/changelog.d/5644.bugfix b/changelog.d/5644.bugfix
new file mode 100644
index 0000000000..f6302fd08d
--- /dev/null
+++ b/changelog.d/5644.bugfix
@@ -0,0 +1 @@
+Fix newly-registered users not being able to lookup their own profile without joining a room.
diff --git a/synapse/handlers/profile.py b/synapse/handlers/profile.py
index 7bb0d654bf..5c493b8d63 100644
--- a/synapse/handlers/profile.py
+++ b/synapse/handlers/profile.py
@@ -462,6 +462,10 @@ class BaseProfileHandler(BaseHandler):
if not self.hs.config.require_auth_for_profile_requests or not requester:
return
+ # Always allow the user to query their own profile.
+ if target_user.to_string() == requester.to_string():
+ return
+
try:
requester_rooms = yield self.store.get_rooms_for_user(
requester.to_string()
diff --git a/tests/rest/client/v1/test_profile.py b/tests/rest/client/v1/test_profile.py
index 72c7ed93cb..d932dd3c06 100644
--- a/tests/rest/client/v1/test_profile.py
+++ b/tests/rest/client/v1/test_profile.py
@@ -289,3 +289,50 @@ class ProfilesRestrictedTestCase(unittest.HomeserverTestCase):
# if the user isn't already in the room), because we only want to
# make sure the user isn't in the room.
pass
+
+
+class OwnProfileUnrestrictedTestCase(unittest.HomeserverTestCase):
+
+ servlets = [
+ admin.register_servlets_for_client_rest_resource,
+ login.register_servlets,
+ profile.register_servlets,
+ ]
+
+ def make_homeserver(self, reactor, clock):
+ config = self.default_config()
+ config["require_auth_for_profile_requests"] = True
+ self.hs = self.setup_test_homeserver(config=config)
+
+ return self.hs
+
+ def prepare(self, reactor, clock, hs):
+ # User requesting the profile.
+ self.requester = self.register_user("requester", "pass")
+ self.requester_tok = self.login("requester", "pass")
+
+ def test_can_lookup_own_profile(self):
+ """Tests that a user can lookup their own profile without having to be in a room
+ if 'require_auth_for_profile_requests' is set to true in the server's config.
+ """
+ request, channel = self.make_request(
+ "GET", "/profile/" + self.requester, access_token=self.requester_tok
+ )
+ self.render(request)
+ self.assertEqual(channel.code, 200, channel.result)
+
+ request, channel = self.make_request(
+ "GET",
+ "/profile/" + self.requester + "/displayname",
+ access_token=self.requester_tok,
+ )
+ self.render(request)
+ self.assertEqual(channel.code, 200, channel.result)
+
+ request, channel = self.make_request(
+ "GET",
+ "/profile/" + self.requester + "/avatar_url",
+ access_token=self.requester_tok,
+ )
+ self.render(request)
+ self.assertEqual(channel.code, 200, channel.result)
|