Files
mwitnessing/src/axiosServer.js
2024-05-08 16:29:49 +03:00

42 lines
1.2 KiB
JavaScript

import axios from 'axios';
import jwt from 'jsonwebtoken';
import common from '../src/helpers/common';
import { getServerSession } from 'next-auth/next';
import { authOptions } from '../pages/api/auth/[...nextauth]';
import { red } from '@mui/material/colors';
const axiosServer = async (context) => {
let headers = {
'Content-Type': 'application/json',
};
const session = await getServerSession(context.req || req, context.res || res, authOptions);
context.req.session = session;
if (session) {
const secret = process.env.NEXTAUTH_SECRET;
if (!secret) {
throw new Error('NEXTAUTH_SECRET is not set');
}
const token = jwt.sign({ ...session }, secret, { expiresIn: '1h' });
headers['Authorization'] = `Bearer ${token}`;
//headers['X-From-Server'] = token; // Note: Using the entire token as a header value might not be intended
return axios.create({
baseURL: common.getBaseUrl("", context.req || req),
withCredentials: true,
headers: headers,
});
}
else {
//redirect to next-auth login page
//context.res.writeHead(302, { Location: encodeURIComponent('/api/auth/signin') });
context.res.end();
return { props: {} };
}
};
export default axiosServer;