summaryrefslogtreecommitdiffstats
path: root/packages/meshbay-hub/src/meshbay_hub/api/revocation.py
diff options
context:
space:
mode:
Diffstat (limited to 'packages/meshbay-hub/src/meshbay_hub/api/revocation.py')
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/api/revocation.py6
1 files changed, 4 insertions, 2 deletions
diff --git a/packages/meshbay-hub/src/meshbay_hub/api/revocation.py b/packages/meshbay-hub/src/meshbay_hub/api/revocation.py
index c03d582..501b263 100644
--- a/packages/meshbay-hub/src/meshbay_hub/api/revocation.py
+++ b/packages/meshbay-hub/src/meshbay_hub/api/revocation.py
@@ -36,13 +36,13 @@ import jwt
from fastapi import APIRouter, Depends, HTTPException, Request, WebSocket, WebSocketDisconnect
from meshbay_common.background import spawn
from pydantic import BaseModel
-from sqlalchemy import select, update
+from sqlalchemy import delete, select, update
from sqlalchemy.ext.asyncio import AsyncSession
from meshbay_hub.api.deps import get_current_user, node_token_key_linked, require_admin
from meshbay_hub.auth import decode_access_token
from meshbay_hub.db.engine import get_db
-from meshbay_hub.db.models import Group, GroupMember, IPLog, Node, User
+from meshbay_hub.db.models import Group, GroupMember, IPLog, Node, PushSubscription, User
log = logging.getLogger(__name__)
@@ -667,6 +667,8 @@ async def admin_revoke(
if not obj:
raise HTTPException(status_code=404, detail="User not found")
obj.status = "revoked"
+ # Its phones stop hearing anything: a poll secret is not a session.
+ await db.execute(delete(PushSubscription).where(PushSubscription.user_id == obj.id))
else:
obj = await db.get(Group, body.target_id)
if not obj: