feat: add actual user for trpc wss-dev-server (#261)

* feat: add actual user for trpc wss-dev-server #233

* chore: address pull request feedback

* fix: deepsource issue
This commit is contained in:
Meier Lukas
2024-03-25 18:57:59 +01:00
committed by GitHub
parent 87808c1349
commit 058a8c4776
15 changed files with 174 additions and 69 deletions

View File

@@ -17,3 +17,4 @@ export * from "./security";
export const createHandlers = (isCredentialsRequest: boolean) =>
createConfiguration(isCredentialsRequest);
export const { auth } = createConfiguration(false);
export { getSessionFromToken, sessionTokenCookieName } from "./session";

View File

@@ -1,4 +1,7 @@
import { randomUUID } from "crypto";
import type { Session } from "next-auth";
import type { Database } from "@homarr/db";
export const sessionMaxAgeInSeconds = 30 * 24 * 60 * 60; // 30 days
export const sessionTokenCookieName = "next-auth.session-token";
@@ -10,3 +13,38 @@ export const expireDateAfter = (seconds: number) => {
export const generateSessionToken = () => {
return randomUUID();
};
export const getSessionFromToken = async (
db: Database,
token: string | undefined,
): Promise<Session | null> => {
if (!token) {
return null;
}
const session = await db.query.sessions.findFirst({
where: ({ sessionToken }, { eq }) => eq(sessionToken, token),
columns: {
expires: true,
},
with: {
user: {
columns: {
id: true,
name: true,
email: true,
image: true,
},
},
},
});
if (!session) {
return null;
}
return {
user: session.user,
expires: session.expires.toISOString(),
};
};