Hi, please help me.
My codes
session.service.ts
'use server';
import { jwtVerify, SignJWT } from 'jose';
import { cookies } from 'next/headers';
import { NextRequest, NextResponse } from 'next/server';
import CryptoJS from 'crypto-js';
export const getSession = async (): Promise<any> => {
if ((await cookies()).has('session')) {
const session = (await cookies()).get('session')?.value;
if (!session) return null;
return await decryptSession(session);
}
return null;
};
export const setSession = async (data: any) => {
(await cookies()).set('session', await encryptSession(data), {
httpOnly: true,
secure: process.env.NODE_ENV === 'production',
sameSite: 'lax',
path: '/',
maxAge: 60 * 60 * 24 * 7,
});
return null;
};
export const deleteSession = async () => {
return (await cookies()).delete('session');
};
'use server';
import { redirect } from 'next/navigation';
import { GetRequest, isError } from '../service/api.service';
import { sleep } from '../service/function.service';
import { deleteSession, getSession } from '../service/session.service';
export const getGuilds = async () => {
const session = await getSession();
try {
const { data: res } = await GetRequest('/users/@me/guilds', session.access_token);
return { data: res };
} catch (error) {
const err = await isError(error);
console.log(err);
if (err === 'You are being rate limited.') {
await sleep(1000);
getGuilds();
}
if (err === 'jwt expired') {
redirect('/dashboard');
}
return { error: err };
}
};
export const verifyAccess = async (id: string) => {
const session = await getSession();
try {
const { data: res } = await GetRequest(`/guilds/${id}/verify`, session.access_token);
return true;
} catch (error) {
await deleteSession();
return false;
}
};