diff --git a/code/backend/src/server.ts b/code/backend/src/server.ts index 072e847..771421c 100644 --- a/code/backend/src/server.ts +++ b/code/backend/src/server.ts @@ -31,6 +31,7 @@ export const minioClient = new Client({ //swagger configuration import swaggerJSDoc from "swagger-jsdoc"; import swaggerUi from "swagger-ui-express"; +import { deleteExpiredTokens } from "./tasks/deleteTokens"; const options = { definition: { @@ -65,6 +66,15 @@ const options = { }; const specs = swaggerJSDoc(options); app.use("/api-docs", swaggerUi.serve, swaggerUi.setup(specs)); + +// remove old tokens every ten minutes +setInterval( + () => { + console.log("Deleting old tokens"); + deleteExpiredTokens(); + }, + 10 * 60 * 1000 +); app.use(bodyParser.json()); app.use("/api/user", userRouter); app.use("/api/posts", authenticateToken(), postRouter); diff --git a/code/backend/src/tasks/deleteTokens.ts b/code/backend/src/tasks/deleteTokens.ts new file mode 100644 index 0000000..9f076bc --- /dev/null +++ b/code/backend/src/tasks/deleteTokens.ts @@ -0,0 +1,19 @@ +import { PrismaClient } from "../../prisma/app/generated/prisma/client"; + +const prisma = new PrismaClient(); + +export const deleteExpiredTokens = async () => { + const now = new Date(); + try { + const result = await prisma.refreshToken.deleteMany({ + where: { + expiresAt: { + lt: now, // delete expired tokens + }, + }, + }); + console.log(`deleted ${result.count} tokens`); + } catch (error) { + console.error("Error while deleting tokens:", error); + } +};