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