mirror of
https://github.com/lukevella/rallly.git
synced 2025-05-12 08:26:48 +02:00
♻️ Create backend package (#643)
This commit is contained in:
parent
7fc08c6736
commit
05fe2edaea
68 changed files with 476 additions and 391 deletions
36
packages/backend/session.ts
Normal file
36
packages/backend/session.ts
Normal file
|
@ -0,0 +1,36 @@
|
|||
import { sealData, unsealData } from "iron-session";
|
||||
|
||||
import { sessionConfig } from "./session-config";
|
||||
|
||||
type UserSessionData = { id: string; isGuest: boolean };
|
||||
|
||||
declare module "iron-session" {
|
||||
export interface IronSessionData {
|
||||
user: UserSessionData;
|
||||
}
|
||||
}
|
||||
|
||||
export const decryptToken = async <P = UserSessionData>(
|
||||
token: string,
|
||||
): Promise<P | null> => {
|
||||
const payload = await unsealData(token, {
|
||||
password: sessionConfig.password,
|
||||
});
|
||||
if (Object.keys(payload).length === 0) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return payload as P;
|
||||
};
|
||||
|
||||
export const createToken = async <T = UserSessionData>(
|
||||
payload: T,
|
||||
options?: {
|
||||
ttl?: number;
|
||||
},
|
||||
) => {
|
||||
return await sealData(payload, {
|
||||
password: sessionConfig.password,
|
||||
ttl: options?.ttl ?? 60 * 15, // 15 minutes
|
||||
});
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue