add clients to int api

This commit is contained in:
miloschwartz
2025-07-30 21:31:16 -07:00
parent 35a68703c2
commit d38656e026
9 changed files with 158 additions and 14 deletions

View File

@@ -18,28 +18,28 @@ const getClientSchema = z
})
.strict();
async function query(clientId: number) {
async function query(clientId: number, orgId: string) {
// Get the client
const [client] = await db
.select()
.from(clients)
.where(eq(clients.clientId, clientId))
.where(and(eq(clients.clientId, clientId), eq(clients.orgId, orgId)))
.limit(1);
if (!client) {
return null;
}
// Get the siteIds associated with this client
const sites = await db
.select({ siteId: clientSites.siteId })
.from(clientSites)
.where(eq(clientSites.clientId, clientId));
// Add the siteIds to the client object
return {
...client,
siteIds: sites.map(site => site.siteId)
siteIds: sites.map((site) => site.siteId)
};
}
@@ -75,9 +75,9 @@ export async function getClient(
);
}
const { clientId } = parsedParams.data;
const { clientId, orgId } = parsedParams.data;
const client = await query(clientId);
const client = await query(clientId, orgId);
if (!client) {
return next(
@@ -98,4 +98,4 @@ export async function getClient(
createHttpError(HttpCode.INTERNAL_SERVER_ERROR, "An error occurred")
);
}
}
}

View File

@@ -23,7 +23,7 @@ const pickClientDefaultsSchema = z
registry.registerPath({
method: "get",
path: "/site/{siteId}/pick-client-defaults",
path: "/org/{orgId}/pick-client-defaults",
description: "Return pre-requisite data for creating a client.",
tags: [OpenAPITags.Client, OpenAPITags.Site],
request: {

View File

@@ -5,7 +5,7 @@ import * as domain from "./domain";
import * as target from "./target";
import * as user from "./user";
import * as role from "./role";
// import * as client from "./client";
import * as client from "./client";
import * as accessToken from "./accessToken";
import * as apiKeys from "./apiKeys";
import * as idp from "./idp";
@@ -20,7 +20,8 @@ import {
verifyApiKeyUserAccess,
verifyApiKeySetResourceUsers,
verifyApiKeyAccessTokenAccess,
verifyApiKeyIsRoot
verifyApiKeyIsRoot,
verifyApiKeyClientAccess
} from "@server/middlewares";
import HttpCode from "@server/types/HttpCode";
import { Router } from "express";
@@ -513,3 +514,45 @@ authenticated.get(
verifyApiKeyHasAction(ActionsEnum.listIdpOrgs),
idp.listIdpOrgPolicies
);
authenticated.get(
"/org/:orgId/pick-client-defaults",
verifyApiKeyOrgAccess,
verifyApiKeyHasAction(ActionsEnum.createClient),
client.pickClientDefaults
);
authenticated.get(
"/org/:orgId/clients",
verifyApiKeyOrgAccess,
verifyApiKeyHasAction(ActionsEnum.listClients),
client.listClients
);
authenticated.get(
"/org/:orgId/client/:clientId",
verifyApiKeyOrgAccess,
verifyApiKeyHasAction(ActionsEnum.getClient),
client.getClient
);
authenticated.put(
"/org/:orgId/client",
verifyApiKeyOrgAccess,
verifyApiKeyHasAction(ActionsEnum.createClient),
client.createClient
);
authenticated.delete(
"/client/:clientId",
verifyApiKeyClientAccess,
verifyApiKeyHasAction(ActionsEnum.deleteClient),
client.deleteClient
);
authenticated.post(
"/client/:clientId",
verifyApiKeyClientAccess,
verifyApiKeyHasAction(ActionsEnum.updateClient),
client.updateClient
);