From 9426bab455d8889211ea6112a75662807582cf08 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Mon, 17 Mar 2025 13:17:49 +0100 Subject: [PATCH] Edit endpoint --- packages/server/src/api/controllers/oauth2.ts | 17 +++++++++++++++++ packages/server/src/api/routes/oauth2.ts | 6 ++++++ packages/server/src/sdk/app/oauth2/crud.ts | 19 +++++++++++++++++++ 3 files changed, 42 insertions(+) diff --git a/packages/server/src/api/controllers/oauth2.ts b/packages/server/src/api/controllers/oauth2.ts index 4e73c97a96..41e39079c1 100644 --- a/packages/server/src/api/controllers/oauth2.ts +++ b/packages/server/src/api/controllers/oauth2.ts @@ -36,3 +36,20 @@ export async function create( ctx.status = 201 ctx.body = { config } } + +export async function edit( + ctx: Ctx +) { + const { body } = ctx.request + const toUpdate: RequiredKeys = { + id: ctx.params.id, + name: body.name, + url: body.url, + clientId: ctx.clientId, + clientSecret: ctx.clientSecret, + } + + const config = await sdk.oauth2.update(toUpdate) + ctx.status = 201 + ctx.body = { config } +} diff --git a/packages/server/src/api/routes/oauth2.ts b/packages/server/src/api/routes/oauth2.ts index 4fb82d6dfd..8973b49736 100644 --- a/packages/server/src/api/routes/oauth2.ts +++ b/packages/server/src/api/routes/oauth2.ts @@ -12,5 +12,11 @@ router.post( authorized(PermissionType.BUILDER), controller.create ) +router.put( + "/api/oauth2/:id", + authorized(PermissionType.BUILDER), + createOAauth2ConfigValidator(), + controller.create +) export default router diff --git a/packages/server/src/sdk/app/oauth2/crud.ts b/packages/server/src/sdk/app/oauth2/crud.ts index 1b78d5588e..dea33d31a4 100644 --- a/packages/server/src/sdk/app/oauth2/crud.ts +++ b/packages/server/src/sdk/app/oauth2/crud.ts @@ -48,3 +48,22 @@ export async function get(id: string): Promise { const doc = await getDocument() return doc?.configs?.[id] } + +export async function update(config: OAuth2Config): Promise { + const db = context.getAppDB() + const doc: OAuth2Configs = (await getDocument(db)) ?? { + _id: DocumentType.OAUTH2_CONFIG, + configs: {}, + } + + if (!doc.configs[config.id]) { + throw new HTTPError(`OAuth2 config with id '${config.id}' not found`, 400) + } + + doc.configs[config.id] = { + ...config, + } + + await db.put(doc) + return doc.configs[config.id] +}