From fa7a1e87ff92f7468c7c2a3e2edf092620389fc8 Mon Sep 17 00:00:00 2001 From: Last2014 Date: Fri, 20 Mar 2026 18:34:37 +0900 Subject: [PATCH] =?UTF-8?q?Feat:=20=E3=83=88=E3=83=BC=E3=82=AF=E3=83=B3?= =?UTF-8?q?=E3=82=92=E5=89=8A=E9=99=A4=E3=81=A7=E3=81=8D=E3=82=8B=E6=A9=9F?= =?UTF-8?q?=E8=83=BD=20/=20Fix:=20me=E3=82=A8=E3=83=B3=E3=83=89=E3=83=9D?= =?UTF-8?q?=E3=82=A4=E3=83=B3=E3=83=88=E3=81=A7=E3=83=AC=E3=82=B9=E3=83=9D?= =?UTF-8?q?=E3=83=B3=E3=82=B9=E3=83=98=E3=83=83=E3=83=80=E3=83=BC=E3=81=AB?= =?UTF-8?q?application/json=E3=81=8C=E3=81=AA=E3=81=84=E5=95=8F=E9=A1=8C?= =?UTF-8?q?=20/=20Chg:=20=E3=82=A8=E3=83=B3=E3=83=89=E3=83=9D=E3=82=A4?= =?UTF-8?q?=E3=83=B3=E3=83=88=E3=81=AE=E9=96=A2=E6=95=B0=E5=90=8D=E3=82=92?= =?UTF-8?q?L.js=E3=82=92=E7=B5=B1=E4=B8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../backend/src/modules/repositories/Token.ts | 9 +++++++ packages/backend/src/routes/me/index.ts | 2 ++ packages/backend/src/routes/primary/index.ts | 8 +++--- packages/backend/src/routes/primary/signin.ts | 2 +- packages/backend/src/routes/primary/signup.ts | 2 +- .../backend/src/routes/setup/create-admin.ts | 2 +- packages/backend/src/routes/setup/index.ts | 8 +++--- .../src/routes/setup/initialization.ts | 2 +- packages/backend/src/routes/token/delete.ts | 27 +++++++++++++++++++ packages/backend/src/routes/token/index.ts | 8 ++++++ 10 files changed, 58 insertions(+), 12 deletions(-) create mode 100644 packages/backend/src/routes/token/delete.ts create mode 100644 packages/backend/src/routes/token/index.ts diff --git a/packages/backend/src/modules/repositories/Token.ts b/packages/backend/src/modules/repositories/Token.ts index a3df749..91cef05 100644 --- a/packages/backend/src/modules/repositories/Token.ts +++ b/packages/backend/src/modules/repositories/Token.ts @@ -5,6 +5,7 @@ import { randomBytes } from "node:crypto"; import { UserEntity } from "@/modules/entities/User"; import { ErrorBase } from "@/errors"; import Logger from "@/lib/logger"; +import type { FastifyInstance } from "fastify"; const logger = new Logger("Repo | Token.ts"); @@ -83,4 +84,12 @@ export class TokenRepository extends EntityRepository { return token; } + + async deleteToken(token: TokenEntity, fastify?: FastifyInstance) { + await this.nativeDelete(token); + this.em.clear(); + + if (fastify) + fastify.orm.em.clear(); + } } diff --git a/packages/backend/src/routes/me/index.ts b/packages/backend/src/routes/me/index.ts index c345b53..6e16a70 100644 --- a/packages/backend/src/routes/me/index.ts +++ b/packages/backend/src/routes/me/index.ts @@ -2,6 +2,8 @@ import type { FastifyInstance } from "fastify"; export default async function Me(fastify: FastifyInstance) { fastify.post("/", async (req, res) => { + res.header("Content-Type", "application/json"); + if ("error" in req.token) return res.code(400).send(req.token); diff --git a/packages/backend/src/routes/primary/index.ts b/packages/backend/src/routes/primary/index.ts index 1f0018e..fb63373 100644 --- a/packages/backend/src/routes/primary/index.ts +++ b/packages/backend/src/routes/primary/index.ts @@ -1,13 +1,13 @@ import type { FastifyInstance } from "fastify"; -import SignUp from "./signup"; -import SignIn from "./signin"; +import PrimarySignUp from "./signup"; +import PrimarySignIn from "./signin"; export default async function Primary(fastify: FastifyInstance) { - await fastify.register(SignUp, { + await fastify.register(PrimarySignUp, { prefix: "/signup", }); - await fastify.register(SignIn, { + await fastify.register(PrimarySignIn, { prefix: "/signin", }); } diff --git a/packages/backend/src/routes/primary/signin.ts b/packages/backend/src/routes/primary/signin.ts index 509218b..bf6d247 100644 --- a/packages/backend/src/routes/primary/signin.ts +++ b/packages/backend/src/routes/primary/signin.ts @@ -5,7 +5,7 @@ import { UserEntity } from "@/modules/entities/User"; import { UserRepository } from "@/modules/repositories/User"; import type { FastifyInstance } from "fastify"; -export default function SignIn(fastify: FastifyInstance) { +export default function PrimarySignIn(fastify: FastifyInstance) { const logger = new Logger("Endpoint | primary/signin"); fastify.post("/", async (req, res) => { diff --git a/packages/backend/src/routes/primary/signup.ts b/packages/backend/src/routes/primary/signup.ts index 3bbf758..48d1cd7 100644 --- a/packages/backend/src/routes/primary/signup.ts +++ b/packages/backend/src/routes/primary/signup.ts @@ -4,7 +4,7 @@ import type { FastifyInstance } from "fastify"; import { UserRepository } from "@/modules/repositories/User"; import { DatabaseError, InputError } from "@/errors"; -export default function SignUp(fastify: FastifyInstance) { +export default function PrimarySignUp(fastify: FastifyInstance) { const logger = new Logger("Endpoint | primary/signup"); fastify.post("/", async (req, res) => { diff --git a/packages/backend/src/routes/setup/create-admin.ts b/packages/backend/src/routes/setup/create-admin.ts index 91eba84..ecf10b7 100755 --- a/packages/backend/src/routes/setup/create-admin.ts +++ b/packages/backend/src/routes/setup/create-admin.ts @@ -5,7 +5,7 @@ import { UserRepository } from "@/modules/repositories/User"; import { DatabaseError, ErrorBase, InputError } from "@/errors"; import { UniqueConstraintViolationException } from "@mikro-orm/core"; -export default function CreateAdmin(fastify: FastifyInstance) { +export default function SetupCreateAdmin(fastify: FastifyInstance) { const logger = new Logger("Endpoint | setup/create-admin"); fastify.post("/", async (req, res) => { diff --git a/packages/backend/src/routes/setup/index.ts b/packages/backend/src/routes/setup/index.ts index 05b61a4..24f39d2 100755 --- a/packages/backend/src/routes/setup/index.ts +++ b/packages/backend/src/routes/setup/index.ts @@ -1,13 +1,13 @@ import type { FastifyInstance } from "fastify"; -import CreateAdmin from "./create-admin"; -import Initialization from "./initialization"; +import SetupCreateAdmin from "./create-admin"; +import SetupInitialization from "./initialization"; export default async function Setup(fastify: FastifyInstance) { - await fastify.register(Initialization, { + await fastify.register(SetupInitialization, { prefix: "/initialization", }); - await fastify.register(CreateAdmin, { + await fastify.register(SetupCreateAdmin, { prefix: "/create-admin", }); } \ No newline at end of file diff --git a/packages/backend/src/routes/setup/initialization.ts b/packages/backend/src/routes/setup/initialization.ts index 2fef43b..89b4860 100644 --- a/packages/backend/src/routes/setup/initialization.ts +++ b/packages/backend/src/routes/setup/initialization.ts @@ -4,7 +4,7 @@ import { ConfigEntity } from "@/modules/entities/Config"; import type { FastifyInstance } from "fastify"; import z from "zod/v3"; -export default function Initialization(fastify: FastifyInstance) { +export default function SetupInitialization(fastify: FastifyInstance) { const logger = new Logger("Endpoint | setup/initialization"); fastify.post("/", async (req, res) => { diff --git a/packages/backend/src/routes/token/delete.ts b/packages/backend/src/routes/token/delete.ts new file mode 100644 index 0000000..f2ed6d9 --- /dev/null +++ b/packages/backend/src/routes/token/delete.ts @@ -0,0 +1,27 @@ +import { DatabaseError } from "@/errors"; +import Logger from "@/lib/logger"; +import { TokenEntity } from "@/modules/entities/Token"; +import type { FastifyInstance } from "fastify"; + +export default function TokenDelete(fastify: FastifyInstance) { + const logger = new Logger("Endpoint | token/delete"); + + fastify.post("/", async (req, res) => { + res.header("Content-Type", "application/json"); + + if ("error" in req.token) + return res.code(400).send(req.token); + + try { + await fastify.orm.em.getRepository(TokenEntity).deleteToken(req.token, fastify); + + return res.send({ + success: true, + }); + } catch (err) { + logger.error("Database Error: Server initialization failed:", err); + + return res.code(500).send(DatabaseError()); + } + }); +} \ No newline at end of file diff --git a/packages/backend/src/routes/token/index.ts b/packages/backend/src/routes/token/index.ts new file mode 100644 index 0000000..4e53a8f --- /dev/null +++ b/packages/backend/src/routes/token/index.ts @@ -0,0 +1,8 @@ +import type { FastifyInstance } from "fastify"; +import TokenDelete from "./delete"; + +export default async function Token(fastify: FastifyInstance) { + await fastify.register(TokenDelete, { + prefix: "/delete", + }); +} \ No newline at end of file