From fd18732e6e7b1957cace59f2a4c3d3fe6eda446c Mon Sep 17 00:00:00 2001 From: DarkSky <25152247+darkskygit@users.noreply.github.com> Date: Tue, 20 Feb 2024 09:47:27 +0800 Subject: [PATCH] feat: use custom verify token policy (#5836) --- .../server/src/core/auth/next-auth-options.ts | 18 ++++++++++++++++++ .../server/src/fundamentals/session/index.ts | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/packages/backend/server/src/core/auth/next-auth-options.ts b/packages/backend/server/src/core/auth/next-auth-options.ts index 3a80c2edd9..b65ed520c0 100644 --- a/packages/backend/server/src/core/auth/next-auth-options.ts +++ b/packages/backend/server/src/core/auth/next-auth-options.ts @@ -96,6 +96,24 @@ export const NextAuthOptionsProvider: FactoryProvider = { } return result; }; + + prismaAdapter.createVerificationToken = async data => { + await session.set( + `${data.identifier}:${data.token}`, + Date.now() + session.sessionTtl + ); + return data; + }; + + prismaAdapter.useVerificationToken = async ({ identifier, token }) => { + const expires = await session.get(`${identifier}:${token}`); + if (expires) { + return { identifier, token, expires: new Date(expires) }; + } else { + return null; + } + }; + const nextAuthOptions: NextAuthOptions = { providers: [], adapter: prismaAdapter, diff --git a/packages/backend/server/src/fundamentals/session/index.ts b/packages/backend/server/src/fundamentals/session/index.ts index a185452abb..3ee1759310 100644 --- a/packages/backend/server/src/fundamentals/session/index.ts +++ b/packages/backend/server/src/fundamentals/session/index.ts @@ -5,7 +5,7 @@ import { SessionCache } from '../cache'; @Injectable() export class SessionService { private readonly prefix = 'session:'; - private readonly sessionTtl = 30 * 60 * 1000; // 30 min + public readonly sessionTtl = 30 * 60 * 1000; // 30 min constructor(private readonly cache: SessionCache) {}