summary refs log tree commit diff
path: root/synapse/rest
diff options
context:
space:
mode:
Diffstat (limited to 'synapse/rest')
-rw-r--r--synapse/rest/client/v2_alpha/capabilities.py14
1 files changed, 12 insertions, 2 deletions
diff --git a/synapse/rest/client/v2_alpha/capabilities.py b/synapse/rest/client/v2_alpha/capabilities.py
index 767e6c9798..08df941b5f 100644
--- a/synapse/rest/client/v2_alpha/capabilities.py
+++ b/synapse/rest/client/v2_alpha/capabilities.py
@@ -12,14 +12,20 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
+import logging
+
 from twisted.internet import defer
 
 from synapse.http.servlet import RestServlet
 
 from ._base import client_v2_patterns
 
+logger = logging.getLogger(__name__)
+
 
 class CapabilitiesRestServlet(RestServlet):
+    """End point to expose the capabilities of the server."""
+
     PATTERNS = client_v2_patterns("/capabilities$")
 
     def __init__(self, hs):
@@ -30,11 +36,14 @@ class CapabilitiesRestServlet(RestServlet):
         super(CapabilitiesRestServlet, self).__init__()
         self.hs = hs
         self.auth = hs.get_auth()
+        self.store = hs.get_datastore()
 
     @defer.inlineCallbacks
     def on_GET(self, request):
+        requester = yield self.auth.get_user_by_req(request, allow_guest=True)
+        user = yield self.store.get_user_by_id(requester.user.to_string())
+        change_password = bool(user['password_hash'])
 
-        yield self.auth.get_user_by_req(request, allow_guest=True)
         defer.returnValue(
             (200, {
                 "capabilities": {
@@ -45,7 +54,8 @@ class CapabilitiesRestServlet(RestServlet):
                             "2": "stable",
                             "state-v2-test": "unstable",
                         }
-                    }
+                    },
+                    "m.change_password": change_password,
                 }
             })
         )