diff --git a/client/src/proxy.ts b/client/src/proxy.ts index bcbc1e4..26c5b4a 100644 --- a/client/src/proxy.ts +++ b/client/src/proxy.ts @@ -20,14 +20,20 @@ async function refreshTokenMiddleware (refreshToken : string) : Promise export async function proxy (request : NextRequest) { try { + const accessTokenSecret = process.env.JWT_ACCESS_SECRET || process.env.ACCESS_TOKEN_SECRET; + + if(!accessTokenSecret){ + console.error("Missing JWT_ACCESS_SECRET/ACCESS_TOKEN_SECRET in ph-client runtime environment"); + } + const { pathname } = request.nextUrl; // eg /dashboard, /admin/dashboard, /doctor/dashboard const pathWithQuery = `${pathname}${request.nextUrl.search}`; const accessToken = request.cookies.get("accessToken")?.value; const refreshToken = request.cookies.get("refreshToken")?.value; - const decodedAccessToken = accessToken && jwtUtils.verifyToken(accessToken, process.env.JWT_ACCESS_SECRET as string).data; + const decodedAccessToken = accessToken && accessTokenSecret && jwtUtils.verifyToken(accessToken, accessTokenSecret).data; - const isValidAccessToken = accessToken && jwtUtils.verifyToken(accessToken, process.env.JWT_ACCESS_SECRET as string).success; + const isValidAccessToken = Boolean(accessToken && accessTokenSecret && jwtUtils.verifyToken(accessToken, accessTokenSecret).success); let userRole: UserRole | null = null; @@ -45,7 +51,7 @@ export async function proxy (request : NextRequest) { //proactively refresh token if refresh token exists and access token is expired or about to expire - if (isValidAccessToken && refreshToken && (await isTokenExpiringSoon(accessToken))){ + if (isValidAccessToken && accessToken && refreshToken && (await isTokenExpiringSoon(accessToken))){ const requestHeaders = new Headers(request.headers); const response = NextResponse.next({ diff --git a/docker-compose.prod.yaml b/docker-compose.prod.yaml index d97613a..d28f4e2 100644 --- a/docker-compose.prod.yaml +++ b/docker-compose.prod.yaml @@ -35,6 +35,9 @@ services: image: ${REGISTRY}/${IMAGE_NAMESPACE}/ph-healthcare-client:${IMAGE_TAG} container_name: ph-client restart: unless-stopped + environment: + JWT_ACCESS_SECRET: ${JWT_ACCESS_SECRET} + ACCESS_TOKEN_SECRET: ${JWT_ACCESS_SECRET} depends_on: - ph-server networks: