summary refs log tree commit diff
path: root/synapse/rest
diff options
context:
space:
mode:
authorValérian Rousset <tharvik@users.noreply.github.com>2019-10-11 13:33:12 +0200
committerRichard van der Hoff <1389908+richvdh@users.noreply.github.com>2019-10-11 12:33:12 +0100
commitbe9b55e0d2b758bd7d9be4273253ea115c5362a3 (patch)
treeed5c0b82ccff91ceadbfbc7620635ea6f72a2b0e /synapse/rest
parentFix MAU reaping where reserved users are specified. (#6168) (diff)
downloadsynapse-be9b55e0d2b758bd7d9be4273253ea115c5362a3.tar.xz
cas: support setting display name (#6114)
Now, the CAS server can return an attribute stating what's the desired displayname, instead of using the username directly.
Diffstat (limited to 'synapse/rest')
-rw-r--r--synapse/rest/client/v1/login.py4
1 files changed, 3 insertions, 1 deletions
diff --git a/synapse/rest/client/v1/login.py b/synapse/rest/client/v1/login.py
index 9cddbc752a..8414af08cb 100644
--- a/synapse/rest/client/v1/login.py
+++ b/synapse/rest/client/v1/login.py
@@ -377,6 +377,7 @@ class CasTicketServlet(RestServlet):
         super(CasTicketServlet, self).__init__()
         self.cas_server_url = hs.config.cas_server_url
         self.cas_service_url = hs.config.cas_service_url
+        self.cas_displayname_attribute = hs.config.cas_displayname_attribute
         self.cas_required_attributes = hs.config.cas_required_attributes
         self._sso_auth_handler = SSOAuthHandler(hs)
         self._http_client = hs.get_simple_http_client()
@@ -400,6 +401,7 @@ class CasTicketServlet(RestServlet):
 
     def handle_cas_response(self, request, cas_response_body, client_redirect_url):
         user, attributes = self.parse_cas_response(cas_response_body)
+        displayname = attributes.pop(self.cas_displayname_attribute, None)
 
         for required_attribute, required_value in self.cas_required_attributes.items():
             # If required attribute was not in CAS Response - Forbidden
@@ -414,7 +416,7 @@ class CasTicketServlet(RestServlet):
                     raise LoginError(401, "Unauthorized", errcode=Codes.UNAUTHORIZED)
 
         return self._sso_auth_handler.on_successful_auth(
-            user, request, client_redirect_url
+            user, request, client_redirect_url, displayname
         )
 
     def parse_cas_response(self, cas_response_body):