Просмотр исходного кода

Merge pull request #194 from mautrix/sumner/bri-1610-make-it-possible-to-change-signal-phones

bridge state: send BAD_CREDENTIALS when whoami fails with auth failed exception
Sumner Evans 4 лет назад
Родитель
Сommit
81d8636fdb
1 измененных файлов с 6 добавлено и 0 удалено
  1. 6 0
      mautrix_signal/web/provisioning_api.py

+ 6 - 0
mautrix_signal/web/provisioning_api.py

@@ -25,6 +25,7 @@ from aiohttp import web
 from mausignald.errors import InternalError, TimeoutException
 from mausignald.errors import InternalError, TimeoutException
 from mausignald.types import Account, Address
 from mausignald.types import Account, Address
 from mautrix.types import UserID
 from mautrix.types import UserID
+from mautrix.util.bridge_state import BridgeStateEvent
 from mautrix.util.logging import TraceLogger
 from mautrix.util.logging import TraceLogger
 
 
 from .. import user as u
 from .. import user as u
@@ -112,6 +113,11 @@ class ProvisioningAPI:
                 )
                 )
             except Exception as e:
             except Exception as e:
                 self.log.exception(f"Failed to get {user.username}'s profile for whoami")
                 self.log.exception(f"Failed to get {user.username}'s profile for whoami")
+
+                auth_failed = "org.whispersystems.signalservice.api.push.exceptions.AuthorizationFailedException"
+                if isinstance(e, InternalError) and auth_failed in e.data.get("exceptions", []):
+                    await user.push_bridge_state(BridgeStateEvent.BAD_CREDENTIALS, error=str(e))
+
                 data["signal"] = {
                 data["signal"] = {
                     "number": user.username,
                     "number": user.username,
                     "ok": False,
                     "ok": False,