diff --git a/server/routes/api/apiKeys/apiKeys.ts b/server/routes/api/apiKeys/apiKeys.ts index 542f15a52..970eba562 100644 --- a/server/routes/api/apiKeys/apiKeys.ts +++ b/server/routes/api/apiKeys/apiKeys.ts @@ -15,7 +15,7 @@ router.post( auth({ member: true }), validate(T.APIKeysCreateSchema), async (ctx: APIContext) => { - const { name } = ctx.request.body; + const { name } = ctx.input.body; const { user } = ctx.state.auth; authorize(user, "createApiKey", user.team); @@ -68,7 +68,7 @@ router.post( auth({ member: true }), validate(T.APIKeysDeleteSchema), async (ctx: APIContext) => { - const { id } = ctx.request.body; + const { id } = ctx.input.body; const { user } = ctx.state.auth; const key = await ApiKey.findByPk(id); diff --git a/server/routes/api/authenticationProviders.test.ts b/server/routes/api/authenticationProviders/authenticationProviders.test.ts similarity index 100% rename from server/routes/api/authenticationProviders.test.ts rename to server/routes/api/authenticationProviders/authenticationProviders.test.ts diff --git a/server/routes/api/authenticationProviders.ts b/server/routes/api/authenticationProviders/authenticationProviders.ts similarity index 86% rename from server/routes/api/authenticationProviders.ts rename to server/routes/api/authenticationProviders/authenticationProviders.ts index 62b51d9e5..29a68c288 100644 --- a/server/routes/api/authenticationProviders.ts +++ b/server/routes/api/authenticationProviders/authenticationProviders.ts @@ -1,6 +1,7 @@ import Router from "koa-router"; import { sequelize } from "@server/database/sequelize"; import auth from "@server/middlewares/authentication"; +import validate from "@server/middlewares/validate"; import { AuthenticationProvider, Event } from "@server/models"; import { authorize } from "@server/policies"; import { @@ -8,19 +9,19 @@ import { presentPolicies, } from "@server/presenters"; import { APIContext } from "@server/types"; -import { assertUuid, assertPresent } from "@server/validation"; -import allAuthenticationProviders from "../auth/providers"; +import allAuthenticationProviders from "../../auth/providers"; +import * as T from "./schema"; const router = new Router(); router.post( "authenticationProviders.info", auth({ admin: true }), - async (ctx: APIContext) => { - const { id } = ctx.request.body; - assertUuid(id, "id is required"); - + validate(T.AuthenticationProvidersInfoSchema), + async (ctx: APIContext) => { + const { id } = ctx.input.body; const { user } = ctx.state.auth; + const authenticationProvider = await AuthenticationProvider.findByPk(id); authorize(user, "read", authenticationProvider); @@ -34,10 +35,9 @@ router.post( router.post( "authenticationProviders.update", auth({ admin: true }), - async (ctx: APIContext) => { - const { id, isEnabled } = ctx.request.body; - assertUuid(id, "id is required"); - assertPresent(isEnabled, "isEnabled is required"); + validate(T.AuthenticationProvidersUpdateSchema), + async (ctx: APIContext) => { + const { id, isEnabled } = ctx.input.body; const { user } = ctx.state.auth; const authenticationProvider = await sequelize.transaction( diff --git a/server/routes/api/authenticationProviders/index.ts b/server/routes/api/authenticationProviders/index.ts new file mode 100644 index 000000000..34594445d --- /dev/null +++ b/server/routes/api/authenticationProviders/index.ts @@ -0,0 +1 @@ +export { default } from "./authenticationProviders"; diff --git a/server/routes/api/authenticationProviders/schema.ts b/server/routes/api/authenticationProviders/schema.ts new file mode 100644 index 000000000..2fd6e1169 --- /dev/null +++ b/server/routes/api/authenticationProviders/schema.ts @@ -0,0 +1,27 @@ +import { z } from "zod"; +import BaseSchema from "@server/routes/api/BaseSchema"; + +export const AuthenticationProvidersInfoSchema = BaseSchema.extend({ + body: z.object({ + /** Authentication Provider Id */ + id: z.string().uuid(), + }), +}); + +export type AuthenticationProvidersInfoReq = z.infer< + typeof AuthenticationProvidersInfoSchema +>; + +export const AuthenticationProvidersUpdateSchema = BaseSchema.extend({ + body: z.object({ + /** Authentication Provider Id */ + id: z.string().uuid(), + + /** Whether the Authentication Provider is enabled or not */ + isEnabled: z.boolean(), + }), +}); + +export type AuthenticationProvidersUpdateReq = z.infer< + typeof AuthenticationProvidersUpdateSchema +>;