feat: add MCP endpoint and API key management
- Add ApiKey Prisma model (SHA-256 hash, prefix, lastUsedAt) with migration - Implement ApiKeyService (create, list, delete, verify) - Extend requireAuth middleware to accept sk_-prefixed API keys alongside JWTs - Add GET/POST /api-keys routes for creating and revoking keys - Add stateless Streamable HTTP MCP server at POST/GET /mcp exposing all 20 time-tracking tools (clients, projects, time entries, timer, statistics, client targets and corrections) - Frontend: ApiKey types, apiKeys API module, useApiKeys hook - Frontend: ApiKeysPage with key table, one-time raw-key reveal modal, and inline revoke confirmation - Wire /api-keys route and add API Keys link to Management dropdown in Navbar
This commit is contained in:
@@ -10,6 +10,7 @@ import { TimeEntriesPage } from "./pages/TimeEntriesPage";
|
||||
import { ClientsPage } from "./pages/ClientsPage";
|
||||
import { ProjectsPage } from "./pages/ProjectsPage";
|
||||
import { StatisticsPage } from "./pages/StatisticsPage";
|
||||
import { ApiKeysPage } from "./pages/ApiKeysPage";
|
||||
|
||||
function App() {
|
||||
return (
|
||||
@@ -33,6 +34,7 @@ function App() {
|
||||
<Route path="clients" element={<ClientsPage />} />
|
||||
<Route path="projects" element={<ProjectsPage />} />
|
||||
<Route path="statistics" element={<StatisticsPage />} />
|
||||
<Route path="api-keys" element={<ApiKeysPage />} />
|
||||
</Route>
|
||||
</Routes>
|
||||
</AuthProvider>
|
||||
|
||||
Reference in New Issue
Block a user