import { Request } from 'express';

const ALLOWED_IP = '211.48.209.5';

function isRefererInclude(request: Request, str: string): boolean {
  return request.headers.referer
    ? request.headers.referer.includes(str)
    : false;
}

//* 개발용 인증 우회(사무실 IP · swagger · 개발용 회원번호)의 명시 스위치 — 값이 정확히 `true` 일 때만 켜진다.
//* 미설정이면 실행 환경 이름과 무관하게 꺼진다. 운영 env 에는 두지 않는다.
export function isDevAuthBypassEnabled(): boolean {
  return process.env.DEV_AUTH_BYPASS === 'true';
}

export function isLocalRequest(request: Request): boolean {
  return (
    isDevAuthBypassEnabled() &&
    isRefererInclude(request, '127.0.0.1') &&
    request.headers['x-forwarded-for'] === ALLOWED_IP
  );
}

export function isDevSwaggerRequest(request: Request): boolean {
  return (
    isDevAuthBypassEnabled() &&
    isRefererInclude(request, 'swagger') &&
    request.headers['x-forwarded-for'] == ALLOWED_IP
  );
}
