Ver código fonte

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 3 anos atrás
pai
commit
81d8636fdb
1 arquivos alterados com 6 adições e 0 exclusões
  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,