Перейти к основному содержимому

token-project-access-delete

/**

  • @fileoverview Удаление токенов бота: доступ по проекту (владелец/коллаборатор)
  • @description DELETE использует requireTokenOwnership / hasProjectAccess,
  • как POST/PUT. Сырой Telegram token не отдаётся в list/status (маска). */

Поток

  1. UI / MCP → DELETE /api/projects/{projectId}/tokens/{tokenId}
  2. Middleware requireTokenOwnership → реальный projectId токена → hasProjectAccess
  3. Хендлер сверяет URL projectId с токеном (404 при несовпадении)
  4. stopBotdeleteBotToken → WS token-deleted

Безопасность

  • Коллаборатор может удалять токены проекта (как создавать/менять настройки)
  • Посторонний — 403
  • IDOR по чужому projectId в URL — 404
  • GET .../tokens и bot-status.instance без сырого token (маска / omit)
  • GET /api/projects/:id/bot/statuses — те же публичные инстансы списком, доступ через requireProjectAccess
  • MCP db_delete_bot_token только с confirm: true

Источники правды

Ключевые файлы

ФайлРоль
server/routes/botTokens/handlers/deleteProjectTokenHandler.tsDELETE project-scoped
server/routes/botTokens/to-public-bot-token.tsDTO без секретов
server/middleware/requireResourceOwnership.tsACL
lib/bot-tools/bot-runtime-db.tsdeleteBotTokenInDb