42 lines
1.2 KiB
JavaScript
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;
|