diff --git a/pages/api/data/[...nextcrud].ts b/pages/api/data/[...nextcrud].ts index 05629c7..2bfd329 100644 --- a/pages/api/data/[...nextcrud].ts +++ b/pages/api/data/[...nextcrud].ts @@ -3,14 +3,20 @@ import { Prisma } from "@prisma/client"; import { NextApiRequest, NextApiResponse } from "next"; import { getServerSession } from "next-auth/next"; import { authOptions } from "../auth/[...nextauth]"; -// import { getToken } from "next-auth/jwt"; -// import { getSession } from "next-auth/client"; +import { JWT } from "next-auth/jwt"; const common = require("../../../src/helpers/common"); import jwt from 'jsonwebtoken'; -import { decode } from 'next-auth/jwt'; const logger = require('../../../src/logger'); -// import { getToken } from "next-auth/jwt"; +interface SessionUser { + email?: string; + name?: string; +} + +interface Session { + user?: SessionUser; + expires: string; +} const handler = async (req: NextApiRequest, res: NextApiResponse) => { const prismaClient = common.getPrismaClient(); @@ -19,24 +25,31 @@ const handler = async (req: NextApiRequest, res: NextApiResponse) => { adapter: new PrismaAdapter({ prismaClient }), models: { [Prisma.ModelName.CartEvent]: { name: "cartevents" }, + [Prisma.ModelName.Publisher]: { name: "publishers" }, + [Prisma.ModelName.Availability]: { name: "availabilities" }, + [Prisma.ModelName.Location]: { name: "locations" }, + [Prisma.ModelName.Shift]: { name: "shifts" }, + [Prisma.ModelName.Assignment]: { name: "assignments" }, + [Prisma.ModelName.Report]: { name: "reports" }, + [Prisma.ModelName.Message]: { name: "messages" }, + [Prisma.ModelName.Survey]: { name: "surveys" }, + [Prisma.ModelName.EventLog]: { name: "eventlogs" }, }, }); + //1: check session - const session = await getServerSession(req, res, authOptions); - //console.log("Session:", session); // Log the session + const session = (await getServerSession(req, res, authOptions)) as Session | null; const authHeader = req.headers.authorization || ''; - //console.log('authHeader', authHeader); - if (session) { + + if (session && req.query.nextcrud) { //get target table const targetTable = req.query.nextcrud[0]; //get target action if (req.method === 'DELETE') { switch (targetTable) { - // case 'publishers': - // case 'availabilities': default: const targetId = req.query.nextcrud[1]; - logger.info('[nextCrud] ' + targetTable + ': ' + targetId + ' DELETED by ' + session.user.email); + logger.info('[nextCrud] ' + targetTable + ': ' + targetId + ' DELETED by ' + session.user?.email); break; } } @@ -50,21 +63,18 @@ const handler = async (req: NextApiRequest, res: NextApiResponse) => { //2: check jwt const secret = process.env.NEXTAUTH_SECRET; const bearerHeader = req.headers['authorization']; - if (bearerHeader) { + if (bearerHeader && secret) { const token = bearerHeader.split(' ')[1]; // Assuming "Bearer " - try { - const decoded = await decode({ - token: token, - secret: process.env.NEXTAUTH_SECRET, - }); - //console.log('Decoded JWT:'); - } catch (err) { - console.error('[nextCrud]: Error decoding token:', err); - } + // try { + // const decodedToken = await getToken({ req, secret }); + // if (decodedToken) { + // return nextCrudHandler(req, res); + // } + // } catch (err) { + // console.error('[nextCrud]: Error decoding token:', err); + // } try { const verified = jwt.verify(token, secret); - //console.log('Verified JWT:'); - return nextCrudHandler(req, res); } catch (err) { console.error('[nextCrud]: Invalid token:', err); @@ -77,7 +87,6 @@ const handler = async (req: NextApiRequest, res: NextApiResponse) => { return nextCrudHandler(req, res); } - return res.status(401).json({ message: '[nextCrud]: Unauthorized' }); }; diff --git a/public/content/permits/12- Разрешително за Декември 24г..pdf b/public/content/permits/12- Разрешително за Декември 24г..pdf new file mode 100644 index 0000000..12f842e Binary files /dev/null and b/public/content/permits/12- Разрешително за Декември 24г..pdf differ