/api/client/list Endpoint 추가

This commit is contained in:
static
2024-12-29 22:03:39 +09:00
parent 97f6e1e32f
commit 4a10ba0fbf
4 changed files with 28 additions and 10 deletions

View File

@@ -21,12 +21,8 @@ export const createUserClient = async (userId: number, clientId: number) => {
await db.insert(userClient).values({ userId, clientId }).execute(); await db.insert(userClient).values({ userId, clientId }).execute();
}; };
export const getAllValidUserClients = async (userId: number) => { export const getAllUserClients = async (userId: number) => {
return await db return await db.select().from(userClient).where(eq(userClient.userId, userId)).execute();
.select()
.from(userClient)
.where(and(eq(userClient.userId, userId), eq(userClient.state, "active")))
.execute();
}; };
export const getUserClient = async (userId: number, clientId: number) => { export const getUserClient = async (userId: number, clientId: number) => {

View File

@@ -6,6 +6,7 @@ import {
createClient, createClient,
getClientByPubKey, getClientByPubKey,
createUserClient, createUserClient,
getAllUserClients,
getUserClient, getUserClient,
createUserClientChallenge, createUserClientChallenge,
getUserClientChallenge, getUserClientChallenge,
@@ -13,6 +14,16 @@ import {
} from "$lib/server/db/client"; } from "$lib/server/db/client";
import env from "$lib/server/loadenv"; import env from "$lib/server/loadenv";
export const getUserClientList = async (userId: number) => {
const userClients = await getAllUserClients(userId);
return {
userClients: userClients.map(({ clientId, state }) => ({
id: clientId,
state,
})),
};
};
const expiresIn = ms(env.challenge.pubKeyExp); const expiresIn = ms(env.challenge.pubKeyExp);
const expiresAt = () => new Date(Date.now() + expiresIn); const expiresAt = () => new Date(Date.now() + expiresIn);

View File

@@ -1,5 +1,5 @@
import { error } from "@sveltejs/kit"; import { error } from "@sveltejs/kit";
import { getAllValidUserClients } from "$lib/server/db/client"; import { getAllUserClients } from "$lib/server/db/client";
import { import {
getAllValidClientMeks, getAllValidClientMeks,
getActiveMek, getActiveMek,
@@ -23,11 +23,12 @@ export const registerNewActiveMek = async (
createdBy: number, createdBy: number,
clientMeks: ClientMek[], clientMeks: ClientMek[],
) => { ) => {
const userClients = await getAllValidUserClients(userId); const userClients = await getAllUserClients(userId);
const activeUserClients = userClients.filter(({ state }) => state === "active");
if ( if (
clientMeks.length !== userClients.length || clientMeks.length !== activeUserClients.length ||
!clientMeks.every((clientMek) => !clientMeks.every((clientMek) =>
userClients.some((userClient) => userClient.clientId === clientMek.clientId), activeUserClients.some((userClient) => userClient.clientId === clientMek.clientId),
) )
) { ) {
error(400, "Invalid key list"); error(400, "Invalid key list");

View File

@@ -0,0 +1,10 @@
import { json } from "@sveltejs/kit";
import { authenticate } from "$lib/server/modules/auth";
import { getUserClientList } from "$lib/server/services/client";
import type { RequestHandler } from "@sveltejs/kit";
export const GET: RequestHandler = async ({ cookies }) => {
const { userId } = authenticate(cookies);
const { userClients } = await getUserClientList(userId);
return json({ clients: userClients });
};