|
15 | 15 |
|
16 | 16 | import logging |
17 | 17 | import xml.etree.ElementTree as ET |
18 | | -from typing import Awaitable, Dict, Optional, Tuple |
| 18 | +from typing import AnyStr, Awaitable, Dict, Optional, Tuple |
19 | 19 |
|
20 | 20 | from six.moves import urllib |
21 | 21 |
|
@@ -49,11 +49,11 @@ def __init__(self, hs): |
49 | 49 |
|
50 | 50 | self._http_client = hs.get_proxied_http_client() |
51 | 51 |
|
52 | | - def _build_service_param(self, client_redirect_url: str) -> str: |
53 | | - return "%s%s?redirectUrl=%s" % ( |
| 52 | + def _build_service_param(self, client_redirect_url: AnyStr) -> str: |
| 53 | + return "%s%s?%s" % ( |
54 | 54 | self._cas_service_url, |
55 | 55 | "/_matrix/client/r0/login/cas/ticket", |
56 | | - urllib.parse.quote(client_redirect_url, safe=""), |
| 56 | + urllib.parse.urlencode({"redirectUrl": client_redirect_url}), |
57 | 57 | ) |
58 | 58 |
|
59 | 59 | def _handle_cas_response( |
@@ -150,12 +150,12 @@ async def _on_successful_auth( |
150 | 150 | registered_user_id, request, client_redirect_url |
151 | 151 | ) |
152 | 152 |
|
153 | | - def handle_redirect_request(self, client_redirect_url: str) -> str: |
| 153 | + def handle_redirect_request(self, client_redirect_url: bytes) -> bytes: |
154 | 154 | args = urllib.parse.urlencode( |
155 | 155 | {"service": self._build_service_param(client_redirect_url)} |
156 | 156 | ) |
157 | 157 |
|
158 | | - return "%s/login?%s" % (self._cas_server_url, args) |
| 158 | + return ("%s/login?%s" % (self._cas_server_url, args)).encode("ascii") |
159 | 159 |
|
160 | 160 | async def handle_ticket_request(self, request: SynapseRequest): |
161 | 161 | client_redirect_url = parse_string(request, "redirectUrl", required=True) |
|
0 commit comments