Connect Meshkee backend, blog and shared account session
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
import { NextResponse } from 'next/server';
|
||||
export const ACCESS_COOKIE='meshkee_customer_access_token';
|
||||
export const REFRESH_COOKIE='meshkee_customer_refresh_token';
|
||||
export function cookieOptions(request:Request){
|
||||
const host=(request.headers.get('host')||'').split(':')[0];
|
||||
const production=host==='sgemed.com'||host.endsWith('.sgemed.com');
|
||||
return {path:'/',httpOnly:true,sameSite:'lax' as const,secure:production||new URL(request.url).protocol==='https:',...(production?{domain:'.sgemed.com'}:{})};
|
||||
}
|
||||
export function setSessionCookies(response:NextResponse,request:Request,tokens:{accessToken:string;refreshToken:string}){
|
||||
// Session lifetime remains controlled by the backend; never infer claims from an unverified JWT.
|
||||
const options=cookieOptions(request);
|
||||
response.cookies.set(ACCESS_COOKIE,tokens.accessToken,options);
|
||||
response.cookies.set(REFRESH_COOKIE,tokens.refreshToken,options);
|
||||
}
|
||||
export function sameOrigin(request:Request){
|
||||
const origin=request.headers.get('origin');
|
||||
if(!origin)return false;
|
||||
try{return new URL(origin).host===request.headers.get('host')}catch{return false}
|
||||
}
|
||||
Reference in New Issue
Block a user