mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-23 21:38:44 +08:00
9b81c6debd
#### PR Dependency Tree * **PR #15221** 👈 This tree was auto-generated by [Charcoal](https://github.com/danerwilliams/charcoal) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added MCP credential management (create/reveal, list, rotate, revoke) with expiration and status tracking. * Introduced read-only vs read/write access modes, with read/write tooling enabled only when permitted. * Added workspace MCP credential configuration UI, including token reveal and setup generation. * Added MCP credential GraphQL APIs to back the UI. * **Changes** * Replaced legacy access-token support with MCP credentials across authentication and realtime updates. * **Bug Fixes** * MCP authentication now reliably rejects revoked, rotated, expired, or disabled-user credentials. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
31 lines
1.5 KiB
SQL
31 lines
1.5 KiB
SQL
DROP TABLE IF EXISTS "access_tokens";
|
|
|
|
CREATE TYPE "McpAccessMode" AS ENUM ('READ_ONLY', 'READ_WRITE');
|
|
|
|
CREATE TABLE "mcp_credentials" (
|
|
"id" VARCHAR NOT NULL,
|
|
"family_id" VARCHAR NOT NULL,
|
|
"generation" INTEGER NOT NULL DEFAULT 0,
|
|
"name" VARCHAR NOT NULL,
|
|
"secret_hash" VARCHAR NOT NULL,
|
|
"fingerprint" VARCHAR NOT NULL,
|
|
"user_id" VARCHAR NOT NULL,
|
|
"workspace_id" VARCHAR NOT NULL,
|
|
"access_mode" "McpAccessMode" NOT NULL DEFAULT 'READ_ONLY',
|
|
"created_at" TIMESTAMPTZ(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"expires_at" TIMESTAMPTZ(3) NOT NULL,
|
|
"last_used_at" TIMESTAMPTZ(3),
|
|
"revoked_at" TIMESTAMPTZ(3),
|
|
"replaced_by_id" VARCHAR,
|
|
"grace_ends_at" TIMESTAMPTZ(3),
|
|
CONSTRAINT "mcp_credentials_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
CREATE UNIQUE INDEX "mcp_credentials_secret_hash_key" ON "mcp_credentials"("secret_hash");
|
|
CREATE UNIQUE INDEX "mcp_credentials_family_id_generation_key" ON "mcp_credentials"("family_id", "generation");
|
|
CREATE INDEX "mcp_credentials_user_id_workspace_id_idx" ON "mcp_credentials"("user_id", "workspace_id");
|
|
CREATE INDEX "mcp_credentials_expires_at_idx" ON "mcp_credentials"("expires_at");
|
|
|
|
ALTER TABLE "mcp_credentials" ADD CONSTRAINT "mcp_credentials_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
ALTER TABLE "mcp_credentials" ADD CONSTRAINT "mcp_credentials_workspace_id_fkey" FOREIGN KEY ("workspace_id") REFERENCES "workspaces"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|