Compare commits
2 Commits
e077467bce
...
725c256791
| Author | SHA1 | Date | |
|---|---|---|---|
| 725c256791 | |||
| 5d3dac0b21 |
@@ -1,2 +1,2 @@
|
|||||||
# Backend API base URL (no trailing slash)
|
# Server-only backend origin. Do not expose this as a NEXT_PUBLIC variable.
|
||||||
NEXT_PUBLIC_API_URL=http://localhost:8000/api/v1
|
BACKEND_ORIGIN=http://localhost:8000
|
||||||
|
|||||||
@@ -1,7 +1,21 @@
|
|||||||
import type { NextConfig } from 'next';
|
import type { NextConfig } from 'next';
|
||||||
|
|
||||||
|
const backendOrigin = process.env.BACKEND_ORIGIN?.replace(/\/+$/, '');
|
||||||
|
|
||||||
|
if (!backendOrigin) {
|
||||||
|
throw new Error('BACKEND_ORIGIN is required');
|
||||||
|
}
|
||||||
|
|
||||||
const nextConfig: NextConfig = {
|
const nextConfig: NextConfig = {
|
||||||
reactStrictMode: false,
|
reactStrictMode: false,
|
||||||
|
async rewrites() {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
source: '/:namespace(api|biz)/:path*',
|
||||||
|
destination: `${backendOrigin}/:namespace/:path*`,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
export default nextConfig;
|
export default nextConfig;
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
export const ENV_CONSTANT = {
|
export const ENV_CONSTANT = {
|
||||||
BASE_API_URL: process.env.NEXT_PUBLIC_API_URL,
|
BASE_API_URL: '/',
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -14,9 +14,6 @@ export const authService = {
|
|||||||
const response = await axiosAuth.post<AuthResponseData>(
|
const response = await axiosAuth.post<AuthResponseData>(
|
||||||
API_ROUTES.AUTH.LOGIN,
|
API_ROUTES.AUTH.LOGIN,
|
||||||
payload,
|
payload,
|
||||||
{
|
|
||||||
withCredentials: true,
|
|
||||||
},
|
|
||||||
);
|
);
|
||||||
return response.data;
|
return response.data;
|
||||||
},
|
},
|
||||||
@@ -24,14 +21,11 @@ export const authService = {
|
|||||||
const response = await axiosAuth.post<AuthResponseData>(
|
const response = await axiosAuth.post<AuthResponseData>(
|
||||||
API_ROUTES.AUTH.REFRESH,
|
API_ROUTES.AUTH.REFRESH,
|
||||||
{},
|
{},
|
||||||
{
|
|
||||||
withCredentials: true,
|
|
||||||
},
|
|
||||||
);
|
);
|
||||||
return response.data;
|
return response.data;
|
||||||
},
|
},
|
||||||
logout: async (): Promise<void> => {
|
logout: async (): Promise<void> => {
|
||||||
await axiosAuth.post(API_ROUTES.AUTH.LOGOUT, {}, { withCredentials: true });
|
await axiosAuth.post(API_ROUTES.AUTH.LOGOUT, {});
|
||||||
},
|
},
|
||||||
me: async (): Promise<MeResponse> => {
|
me: async (): Promise<MeResponse> => {
|
||||||
const response = await axiosClient.get<MeResponse>(API_ROUTES.AUTH.ME);
|
const response = await axiosClient.get<MeResponse>(API_ROUTES.AUTH.ME);
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ const BASE_URL = ENV_CONSTANT.BASE_API_URL;
|
|||||||
|
|
||||||
const axiosClient = axios.create({
|
const axiosClient = axios.create({
|
||||||
baseURL: BASE_URL,
|
baseURL: BASE_URL,
|
||||||
|
withCredentials: true,
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
},
|
},
|
||||||
@@ -14,6 +15,7 @@ const axiosClient = axios.create({
|
|||||||
|
|
||||||
export const axiosAuth = axios.create({
|
export const axiosAuth = axios.create({
|
||||||
baseURL: BASE_URL,
|
baseURL: BASE_URL,
|
||||||
|
withCredentials: true,
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
},
|
},
|
||||||
@@ -30,13 +32,7 @@ const isInvalidSessionResponse = (error: unknown) => {
|
|||||||
const refreshAccessToken = () => {
|
const refreshAccessToken = () => {
|
||||||
if (!refreshPromise) {
|
if (!refreshPromise) {
|
||||||
refreshPromise = axiosAuth
|
refreshPromise = axiosAuth
|
||||||
.post(
|
.post('api/auth/refresh', {})
|
||||||
'api/auth/refresh',
|
|
||||||
{},
|
|
||||||
{
|
|
||||||
withCredentials: true,
|
|
||||||
},
|
|
||||||
)
|
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
const accessToken = response.data?.access_token;
|
const accessToken = response.data?.access_token;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user