mirror of
https://github.com/Dokploy/dokploy
synced 2025-06-26 18:27:59 +00:00
feat: add no expiration to token generated
This commit is contained in:
@@ -26,7 +26,7 @@ import {
|
|||||||
updateAuthById,
|
updateAuthById,
|
||||||
verify2FA,
|
verify2FA,
|
||||||
} from "../services/auth";
|
} from "../services/auth";
|
||||||
import { TimeSpan } from "lucia";
|
import { luciaToken } from "@/server/auth/token";
|
||||||
|
|
||||||
export const authRouter = createTRPCRouter({
|
export const authRouter = createTRPCRouter({
|
||||||
createAdmin: publicProcedure
|
createAdmin: publicProcedure
|
||||||
@@ -143,9 +143,9 @@ export const authRouter = createTRPCRouter({
|
|||||||
const auth = await findAuthById(ctx.user.authId);
|
const auth = await findAuthById(ctx.user.authId);
|
||||||
|
|
||||||
if (auth.token) {
|
if (auth.token) {
|
||||||
await lucia.invalidateSession(auth.token);
|
await luciaToken.invalidateSession(auth.token);
|
||||||
}
|
}
|
||||||
const session = await lucia.createSession(auth?.id || "", {
|
const session = await luciaToken.createSession(auth?.id || "", {
|
||||||
expiresIn: 60 * 60 * 24 * 30,
|
expiresIn: 60 * 60 * 24 * 30,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -13,9 +13,10 @@ import { TRPCError, initTRPC } from "@trpc/server";
|
|||||||
import type { CreateNextContextOptions } from "@trpc/server/adapters/next";
|
import type { CreateNextContextOptions } from "@trpc/server/adapters/next";
|
||||||
import superjson from "superjson";
|
import superjson from "superjson";
|
||||||
import { ZodError } from "zod";
|
import { ZodError } from "zod";
|
||||||
import { validateBearerToken, validateRequest } from "../auth/auth";
|
import { validateRequest } from "../auth/auth";
|
||||||
import type { Session, User } from "lucia";
|
import type { Session, User } from "lucia";
|
||||||
import type { OperationMeta } from "openapi-trpc";
|
import type { OperationMeta } from "openapi-trpc";
|
||||||
|
import { validateBearerToken } from "../auth/token";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 1. CONTEXT
|
* 1. CONTEXT
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ export const lucia = new Lucia(adapter, {
|
|||||||
secure: false,
|
secure: false,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// sessionExpiresIn: new TimeSpan(1, "d"),
|
sessionExpiresIn: new TimeSpan(1, "d"),
|
||||||
getUserAttributes: (attributes) => {
|
getUserAttributes: (attributes) => {
|
||||||
return {
|
return {
|
||||||
email: attributes.email,
|
email: attributes.email,
|
||||||
@@ -93,32 +93,3 @@ export async function validateWebSocketRequest(
|
|||||||
const result = await lucia.validateSession(sessionId);
|
const result = await lucia.validateSession(sessionId);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const validateBearerToken = async (
|
|
||||||
req: IncomingMessage,
|
|
||||||
): ReturnValidateToken => {
|
|
||||||
const authorizationHeader = req.headers.authorization;
|
|
||||||
const sessionId = lucia.readBearerToken(authorizationHeader ?? "");
|
|
||||||
if (!sessionId) {
|
|
||||||
return {
|
|
||||||
user: null,
|
|
||||||
session: null,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
const result = await lucia.validateSession(sessionId);
|
|
||||||
|
|
||||||
return {
|
|
||||||
session: result.session,
|
|
||||||
...((result.user && {
|
|
||||||
user: {
|
|
||||||
authId: result.user.id,
|
|
||||||
email: result.user.email,
|
|
||||||
rol: result.user.rol,
|
|
||||||
id: result.user.id,
|
|
||||||
secret: result.user.secret,
|
|
||||||
},
|
|
||||||
}) || {
|
|
||||||
user: null,
|
|
||||||
}),
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|||||||
49
server/auth/token.ts
Normal file
49
server/auth/token.ts
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
import { Lucia } from "lucia/dist/core.js";
|
||||||
|
import type { IncomingMessage } from "node:http";
|
||||||
|
import { TimeSpan } from "lucia";
|
||||||
|
import { adapter, type ReturnValidateToken } from "./auth";
|
||||||
|
|
||||||
|
export const luciaToken = new Lucia(adapter, {
|
||||||
|
sessionCookie: {
|
||||||
|
attributes: {
|
||||||
|
secure: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
sessionExpiresIn: new TimeSpan(365, "d"),
|
||||||
|
getUserAttributes: (attributes) => {
|
||||||
|
return {
|
||||||
|
email: attributes.email,
|
||||||
|
rol: attributes.rol,
|
||||||
|
secret: attributes.secret !== null,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
export const validateBearerToken = async (
|
||||||
|
req: IncomingMessage,
|
||||||
|
): ReturnValidateToken => {
|
||||||
|
const authorizationHeader = req.headers.authorization;
|
||||||
|
const sessionId = luciaToken.readBearerToken(authorizationHeader ?? "");
|
||||||
|
if (!sessionId) {
|
||||||
|
return {
|
||||||
|
user: null,
|
||||||
|
session: null,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
const result = await luciaToken.validateSession(sessionId);
|
||||||
|
console.log(result);
|
||||||
|
return {
|
||||||
|
session: result.session,
|
||||||
|
...((result.user && {
|
||||||
|
user: {
|
||||||
|
authId: result.user.id,
|
||||||
|
email: result.user.email,
|
||||||
|
rol: result.user.rol,
|
||||||
|
id: result.user.id,
|
||||||
|
secret: result.user.secret,
|
||||||
|
},
|
||||||
|
}) || {
|
||||||
|
user: null,
|
||||||
|
}),
|
||||||
|
};
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user