diff --git a/src/cmdforge/registry/app.py b/src/cmdforge/registry/app.py index ed587e7..4cfb5aa 100644 --- a/src/cmdforge/registry/app.py +++ b/src/cmdforge/registry/app.py @@ -1226,13 +1226,19 @@ def create_app() -> Flask: [publisher["id"]], ) + # Delete any existing session tokens for this user (cleanup) + g.db.execute( + "DELETE FROM api_tokens WHERE publisher_id = ? AND name = 'Web Session'", + [publisher["id"]], + ) + token, token_hash = generate_token() g.db.execute( """ INSERT INTO api_tokens (publisher_id, token_hash, name, created_at) VALUES (?, ?, ?, ?) """, - [publisher["id"], token_hash, "login", datetime.utcnow().isoformat()], + [publisher["id"], token_hash, "Web Session", datetime.utcnow().isoformat()], ) g.db.commit() diff --git a/src/cmdforge/web/routes.py b/src/cmdforge/web/routes.py index 66245ec..5f4d632 100644 --- a/src/cmdforge/web/routes.py +++ b/src/cmdforge/web/routes.py @@ -470,7 +470,9 @@ def dashboard_tokens(): tools_status, tools_payload = _api_get("/api/v1/me/tools", token=token) tools = tools_payload.get("data", []) if tools_status == 200 else [] token_status, token_payload = _api_get("/api/v1/tokens", token=token) - tokens = token_payload.get("data", []) if token_status == 200 else [] + all_tokens = token_payload.get("data", []) if token_status == 200 else [] + # Filter out session tokens (auto-created on login) from display + tokens = [t for t in all_tokens if t.get("name") not in ("Web Session", "login")] for item in tokens: token_id = str(item.get("id", "")) item["token_suffix"] = token_id[-6:] if token_id else "" diff --git a/src/cmdforge/web/templates/dashboard/tokens.html b/src/cmdforge/web/templates/dashboard/tokens.html index 6778065..6cb3d97 100644 --- a/src/cmdforge/web/templates/dashboard/tokens.html +++ b/src/cmdforge/web/templates/dashboard/tokens.html @@ -129,9 +129,9 @@