Browse Source

bridge state: send BAD_CREDENTIALS when whoami fails with auth failed exception

Sumner Evans 3 years ago
parent
commit
f65ade482a
1 changed files with 6 additions and 0 deletions
  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,