{"version":3,"file":"static/chunks/8787-49d6e26a08d69b1f.js","mappings":"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","sources":["webpack://_N_E/./src/store/actions/auth/loginByAccessToken.ts","webpack://_N_E/./src/helpers/basePageFunc.ts","webpack://_N_E/./src/store/actions/auth/getClientAll.ts","webpack://_N_E/../../packages/geo/src/allCities/getCityFromHostName.ts","webpack://_N_E/../../packages/geo/src/allCities/removeCityFromLocation.ts","webpack://_N_E/../../packages/geo/src/getCityDomain/byAgreement/data.ts","webpack://_N_E/../../packages/geo/src/getCityDomain/byAgreement/index.ts","webpack://_N_E/../../packages/geo/src/getCityDomain/byGeoIpService/data.ts","webpack://_N_E/../../packages/geo/src/getCityDomain/byGeoIpService/getCityByRegion.ts","webpack://_N_E/../../packages/do-request/src/core/BaseFetchRequest.ts","webpack://_N_E/../../packages/do-request/src/doFetchRequest.ts","webpack://_N_E/../../packages/api-domru/src/r1-platform-gateway/v1/city-by-ip/index.ts","webpack://_N_E/../../packages/geo/src/getCityDomain/byGeoIpService/getIpData.ts","webpack://_N_E/../../packages/geo/src/getCityDomain/byGeoIpService/index.ts","webpack://_N_E/../../packages/geo/src/getCityDomain/index.ts"],"sourcesContent":["import { captureException } from '@sentry/node';\nimport { Response } from 'express';\n\nimport { isAxiosError } from '@r1-frontend/do-request/guards/isAxiosError';\n\nimport { TAppThunkDispatch } from '~/src/store';\nimport { getClientAll } from '~/src/store/actions/auth/getClientAll';\nimport { logout } from '~/src/store/actions/auth/logout';\n\nexport const loginByAccessToken = (agreementNumber?: string, response?: Response): (dispatch: TAppThunkDispatch) => Promise<{\n isValidAccessToken: boolean,\n}> => {\n return async(dispatch: TAppThunkDispatch) => {\n try {\n await dispatch(getClientAll(response, agreementNumber));\n\n return { isValidAccessToken: true };\n } catch (e) {\n if (isAxiosError(e) && e.response?.status === 401) {\n dispatch(logout(response));\n return { isValidAccessToken: false };\n }\n\n captureException(e);\n return { isValidAccessToken: false };\n }\n };\n};\n","import cookie from 'react-cookies';\nimport { Response } from 'express';\nimport { IncomingHttpHeaders, IncomingMessage } from 'http';\nimport get from 'lodash/get';\nimport { NextPageContext } from 'next';\n\nimport { getCityFromHostName } from '@r1-frontend/geo';\n\nimport { isClientSide, isServerSide } from '@r1-frontend/shared/helpers/ssr';\n\nimport { ACCESS_TOKEN_COOKIE, AGREEMENT_ID_COOKIE, CITYDOMAIN_COOKIE } from '~/src/constants';\nimport { getCookie } from '~/src/helpers/cookie';\nimport { setLogin } from '~/src/store/actionCreators/auth';\nimport { loginByAccessToken } from '~/src/store/actions/auth/loginByAccessToken';\n\nimport { getHostNameFromUrl } from './url';\n\nconst getHostName = (req: IncomingMessage) => {\n const headers: IncomingHttpHeaders = get(req, 'headers');\n const headerHost = headers?.host || '';\n\n return isClientSide()\n ? getHostNameFromUrl(window.location)\n : headerHost && get(req, 'hostname', getHostNameFromUrl(headerHost));\n};\n\nconst getAccessToken = (options: NextPageContext): string | undefined => {\n const { req } = options;\n\n if (isServerSide() && req) {\n const hostname = getHostName(req);\n const domain = getCityFromHostName(hostname);\n const accessToken = getCookie(ACCESS_TOKEN_COOKIE, req);\n\n // Кука CITYDOMAIN_COOKIE - устанавливается при авторизации, по домену авторизации.\n const cityDomainFromCookie = getCookie(CITYDOMAIN_COOKIE, req);\n // Возвращаем accessToken только если текущий домен совпадает с сохраненным в куке CITYDOMAIN_COOKIE, т.е. с тем под которым авторизовывались.\n return cityDomainFromCookie === domain ? accessToken : undefined;\n } else {\n return cookie.load(ACCESS_TOKEN_COOKIE);\n }\n};\n\n/**\n * Receiving data for every page.\n * May be called on Server side and Client side renders.\n * !!! We do not have the req/res on a client side !!!\n */\nexport const initialProps = async(\n ctx: NextPageContext,\n auth = { isNeedAuthData: true },\n): Promise<{ validatedAccessToken: null | string }> => {\n const { req, res } = ctx;\n\n const accessToken = getAccessToken(ctx) ?? null;\n\n /**\n * This means that the parent methods getInitialProps()\n * are called on the client side. But we should always\n * return the accessToken from here\n */\n if (!req || !res) {\n return { validatedAccessToken: accessToken };\n }\n\n if (accessToken) {\n ctx.store.dispatch(setLogin({ accessToken, refreshToken: accessToken }));\n }\n /**\n * We should to collect data instead of dispatching it to store at the moment\n * response cannot be a take of part of redux action\n */\n if (auth.isNeedAuthData && accessToken) {\n // todo - remove prop drilling ad-hoc after avoiding requesting user data on ssr\n // task - https://ticket.ertelecom.ru/browse/WEB-45658\n const agreementNumber = getCookie(AGREEMENT_ID_COOKIE, req);\n\n // response cannot be a take of part of redux action\n // todo - убрать приведение типов при уходе от запроса данных пользователей на ssr\n const { isValidAccessToken } = await ctx.store.dispatch(loginByAccessToken(agreementNumber, res as unknown as Response));\n return { validatedAccessToken: isValidAccessToken ? accessToken : null };\n }\n\n return { validatedAccessToken: null };\n};\n","import { Response } from 'express';\n\nimport { TAppThunkDispatch, TGetState } from '~/src/store';\nimport { fetchClientInfo } from '~/src/store/actions/clientInfo';\n\n/**\n * Получаем данные для ЛК авторизованного\n */\nexport function getClientAll(response?: Response, agreementNumber?: string) {\n return async(dispatch: TAppThunkDispatch, getState: TGetState) => {\n const { auth } = getState();\n const { clientPaymentLoaded, clientPaymentFetching, clientPersonal } = auth;\n\n // Не выполняем запрос если данные были загружены ранее\n if (clientPaymentLoaded || clientPaymentFetching || clientPersonal !== null) {\n return;\n }\n\n await Promise.resolve(\n dispatch(fetchClientInfo(response, agreementNumber)),\n );\n };\n}\n","import allCitiesJson from './data.json';\n\nconst allCities = allCitiesJson.map(city => city.domain);\n\nexport const getCityFromHostName = (hostname?: string): string => {\n if (!hostname) {\n return '';\n }\n\n return allCities.find(city => hostname.startsWith(city)) || '';\n};\n","export const removeCityFromLocation = (location: string): string => {\n const splitLocationOrigin = location.split('.');\n splitLocationOrigin.shift();\n return splitLocationOrigin.join('.');\n};\n","export const prefixesToDomainMap: Array<{ prefix: number, domain: string | undefined }> = [\n {\n prefix: 783,\n domain: 'interzet',\n },\n {\n prefix: 784,\n domain: 'interzet',\n },\n {\n prefix: 668,\n domain: 'ekat',\n },\n {\n prefix: 780,\n domain: 'interzet',\n },\n {\n prefix: 660,\n domain: 'ekat',\n },\n {\n prefix: 380,\n domain: 'irkutsk',\n },\n {\n prefix: 540,\n domain: 'nsk',\n },\n {\n prefix: 610,\n domain: 'rostov',\n },\n {\n prefix: 520,\n domain: 'nn',\n },\n {\n prefix: 550,\n domain: 'omsk',\n },\n {\n prefix: 162,\n domain: 'nk',\n },\n {\n prefix: 161,\n domain: 'chelny',\n },\n {\n prefix: 240,\n domain: 'krsk',\n },\n {\n prefix: 220,\n domain: 'barnaul',\n },\n {\n prefix: 560,\n domain: 'oren',\n },\n {\n prefix: 174,\n domain: 'chel',\n },\n {\n prefix: 360,\n domain: 'voronezh',\n },\n {\n prefix: 640,\n domain: 'saratov',\n },\n {\n prefix: 580,\n domain: 'penza',\n },\n {\n prefix: 180,\n domain: 'izhevsk',\n },\n {\n prefix: 274,\n domain: 'mgn',\n },\n {\n prefix: 450,\n domain: 'kurgan',\n },\n {\n prefix: 102,\n domain: 'ufa',\n },\n {\n prefix: 710,\n domain: 'tula',\n },\n {\n prefix: 730,\n domain: 'ulsk',\n },\n {\n prefix: 620,\n domain: 'ryazan',\n },\n {\n prefix: 210,\n domain: 'cheb',\n },\n {\n prefix: 320,\n domain: 'bryansk',\n },\n {\n prefix: 160,\n domain: 'kazan',\n },\n {\n prefix: 690,\n domain: 'tver',\n },\n {\n prefix: 460,\n domain: 'kursk',\n },\n {\n prefix: 120,\n domain: 'yola',\n },\n {\n prefix: 760,\n domain: 'yar',\n },\n {\n prefix: 480,\n domain: 'lipetsk',\n },\n {\n prefix: 430,\n domain: 'kirov',\n },\n {\n prefix: 700,\n domain: 'tomsk',\n },\n {\n prefix: 720,\n domain: 'tmn',\n },\n {\n prefix: 348,\n domain: 'vlz',\n },\n {\n prefix: 340,\n domain: 'volgograd',\n },\n {\n prefix: 630,\n domain: 'samara',\n },\n {\n prefix: 590,\n domain: 'perm',\n },\n {\n prefix: 781,\n domain: 'interzet',\n },\n {\n prefix: 770,\n domain: undefined,\n },\n {\n prefix: 381,\n domain: 'irkutsk',\n },\n {\n prefix: 782,\n domain: 'interzet',\n },\n {\n prefix: 785,\n domain: 'interzet',\n },\n {\n prefix: 970,\n domain: undefined,\n },\n {\n prefix: 761,\n domain: 'yar',\n },\n {\n prefix: 100,\n domain: undefined,\n },\n {\n prefix: 382,\n domain: 'irkutsk',\n },\n {\n prefix: 383,\n domain: 'irkutsk',\n },\n {\n prefix: 621,\n domain: undefined,\n },\n {\n prefix: 622,\n domain: undefined,\n },\n {\n prefix: 591,\n domain: 'perm',\n },\n {\n prefix: 341,\n domain: 'volgograd',\n },\n];\n","import { prefixesToDomainMap } from './data';\n\nexport const getCityDomainByAgreement = (agreement: string): string | undefined => {\n\n const foundedPrefixToDomain = prefixesToDomainMap.find(({ prefix }) => agreement.startsWith(`${prefix}`));\n if (foundedPrefixToDomain) {\n return foundedPrefixToDomain.domain;\n }\n};\n","interface IRegions {\n [regionIsoCode: string]: {\n default: string,\n [cityName: string]: string | undefined,\n },\n}\n\nexport const regions: IRegions = {\n 'RU-ALT': {\n default: 'barnaul',\n },\n 'RU-BRY': {\n default: 'bryansk',\n },\n 'RU-VGG': {\n default: 'volgograd',\n 'Волжский': 'vlz',\n },\n 'RU-VOR': {\n default: 'voronezh',\n },\n 'RU-KIR': {\n default: 'kirov',\n },\n 'RU-KYA': {\n default: 'krsk',\n },\n 'RU-KDA': {\n default: 'krd',\n },\n 'RU-LIP': {\n default: 'lipetsk',\n },\n 'RU-NIZ': {\n default: 'nn',\n 'Дзержинск': 'dzr',\n },\n 'RU-NVS': {\n default: 'nsk',\n },\n 'RU-OMS': {\n default: 'omsk',\n },\n 'RU-ORE': {\n default: 'oren',\n },\n 'RU-PNZ': {\n default: 'penza',\n },\n 'RU-PER': {\n default: 'perm',\n 'Березники': 'ber',\n 'Чусовой': 'chus',\n 'Кунгур': 'kungur',\n 'Соликамск': 'slk',\n },\n 'RU-ME': {\n default: 'yola',\n },\n 'RU-TA': {\n default: 'kazan',\n 'Набережные Челны': 'chelny',\n 'Нижнекамск': 'nk',\n },\n 'RU-MOW': {\n default: 'msk',\n },\n 'RU-MOS': {\n default: 'msk',\n },\n 'RU-TAM': {\n default: 'mich',\n },\n 'RU-ROS': {\n default: 'rostov',\n },\n 'RU-BU': {\n default: 'ulu',\n },\n 'RU-LEN': {\n default: 'sbor',\n },\n 'RU-UD': {\n default: 'izhevsk',\n },\n 'RU-CU': {\n default: 'cheb',\n },\n 'RU-RYA': {\n default: 'ryazan',\n },\n 'RU-SAM': {\n default: 'samara',\n 'Сызрань': 'syzran',\n },\n 'RU-SPE': {\n default: 'interzet',\n },\n 'RU-SAR': {\n default: 'saratov',\n 'Энгельс': 'engels',\n },\n 'RU-SVE': {\n default: 'ekat',\n },\n 'RU-TYU': {\n default: 'tmn',\n },\n 'RU-CHE': {\n default: 'chel',\n 'Магнитогорск': 'mgn',\n },\n 'RU-YAR': {\n default: 'yar',\n },\n 'RU-TUL': {\n default: 'tula',\n },\n 'RU-IRK': {\n default: 'irkutsk',\n 'Усолье-Сибирское': 'usol',\n 'Ангарск': 'angarsk',\n },\n 'RU-TOM': {\n default: 'tomsk',\n 'Северск': 'seversk',\n },\n 'RU-KGN': {\n default: 'kurgan',\n },\n 'RU-KRS': {\n default: 'kursk',\n },\n 'RU-TVE': {\n default: 'tver',\n },\n 'RU-BA': {\n default: 'ufa',\n },\n 'RU-ULY': {\n default: 'ulsk',\n 'Димитровград': 'dimgrad',\n },\n};\n","import { regions } from './data';\n\ninterface ICityByRegion {\n name: string,\n region: string,\n}\n\nexport const getCityByRegion = ({ name, region }: ICityByRegion) => {\n const foundedRegion = regions[region];\n\n if (!foundedRegion) {\n return;\n }\n\n return foundedRegion[Object.keys(foundedRegion).find(cityName => cityName === name) ?? 'default'];\n};\n","import BaseRequest from '@r1-frontend/do-request/core/BaseRequest';\nimport { IBaseRequest, TBaseUrl, TResponse } from '@r1-frontend/do-request/core/types';\nimport { BaseErrorBody } from '@r1-frontend/do-request/error/baseErrorBody';\n\nimport { IRequest } from '@r1-frontend/shared/types/IRequest';\n\nclass BaseFetchRequest extends BaseRequest implements IBaseRequest {\n constructor() {\n super();\n }\n\n public async doRequest(\n urls: TBaseUrl,\n request: IRequest,\n ): Promise> {\n const baseURL = this.getBaseUrl(urls);\n const requestConfig = this.getConfig(request);\n\n try {\n const { uri, queryParams } = request;\n\n const params = new URLSearchParams(queryParams);\n\n const response = await fetch(\n `${baseURL}${uri}?${params}`,\n requestConfig,\n );\n const payload = await response.json();\n\n return {\n isSuccess: true,\n payload,\n };\n } catch (e) {\n console.error(e);\n\n return {\n isSuccess: false,\n error: {\n code: '',\n message: e.message,\n },\n };\n }\n }\n\n private getConfig(request: IRequest): RequestInit {\n const { headers, method, body, withAuth, withProvider } = request;\n\n const defaultHeaders = this.getDefaultHeaders(withAuth, withProvider);\n\n const requestConfig: RequestInit = {\n method,\n headers: {\n ...defaultHeaders,\n ...headers,\n },\n };\n\n if (['POST', 'PUT', 'PATCH'].includes(method)) {\n requestConfig.body = body;\n }\n\n return requestConfig;\n }\n}\n\nexport default BaseFetchRequest;\n","import BaseFetchRequest from '@r1-frontend/do-request/core/BaseFetchRequest';\nimport { DoRequest } from '@r1-frontend/do-request/core/DoRequest';\n\nexport const doFetchRequest = new DoRequest(\n new BaseFetchRequest(),\n);\n","import { IRequest } from '@r1-frontend/shared/types/IRequest';\n\n/**\n * Возвращает информацию о локации по IP-адресу\n * https://master.r1-platform-gateway.sandbox.d2c.r-one.io/docs#/Geo/Ip2cityContoller_cityByIp\n * @param ip IP-адрес для проверки\n */\nexport const cityByIp = (ip: string): IRequest => {\n return {\n uri: `/v1/city-by-ip/${ip}`,\n method: 'GET',\n };\n};\n","import { doFetchRequest } from '@r1-frontend/do-request/doFetchRequest';\nimport { cityByIp } from '@r1-frontend/api-domru/r1-platform-gateway/v1/city-by-ip';\nimport { IResponseDto } from '@r1-frontend/api-domru/r1-platform-gateway/v1/city-by-ip/dto/IResponseDto';\n\nexport const getIpData = async(ip: string) => {\n const response = await doFetchRequest.r1PlatformGateway(\n cityByIp(ip),\n );\n\n if (response.isSuccess) {\n const { result } = response.payload;\n\n if (result) {\n const { name_ru: name, region_iso_code: region } = result;\n return {\n name,\n region,\n };\n }\n }\n};\n","import { getCityByRegion } from './getCityByRegion';\nimport { getIpData } from './getIpData';\n\nexport const getCityDomainByGeoIpService = async(ip: string): Promise => {\n const cityData = await getIpData(ip);\n if (cityData) {\n return getCityByRegion(cityData);\n }\n};\n","import { getCityDomainByAgreement } from './byAgreement';\nimport { getCityDomainByGeoIpService } from './byGeoIpService';\n\nconst DEFAULT_CITY_DOMAIN = 'perm';\n\ninterface IGetCityDomainOptions {\n // Можно выключить geo-определение и всегда возвращать город-домен по умолчанию\n enabled: boolean,\n}\n\ninterface IGetCityDomain {\n cityDomain: string,\n method: 'cityDomainCookie' | 'agreement' | 'ip' | 'default' | 'disabled',\n}\n\n/**\n * @param definedCityDomain город-домен, сохраненный в куке\n * @param agreement номер договора, сохраненный в куке\n * @param ip ipv4\n * @param {IGetCityDomainOptions} options\n */\nconst getCityDomain = async(\n definedCityDomain: string | undefined,\n agreement: string | undefined,\n ip?: string,\n options?: IGetCityDomainOptions,\n): Promise => {\n if (options?.enabled === false) {\n return { cityDomain: DEFAULT_CITY_DOMAIN, method: 'disabled' };\n }\n\n if (definedCityDomain) {\n return { cityDomain: definedCityDomain, method: 'cityDomainCookie' };\n }\n\n if (agreement) {\n const domainByAgreement = getCityDomainByAgreement(agreement);\n if (domainByAgreement) {\n return { cityDomain: domainByAgreement, method: 'agreement' };\n }\n }\n\n // Для песка всегда определяется gp и Воронеж, а не реальный ip-адрес\n if (ip) {\n const domainByGeoIp = await getCityDomainByGeoIpService(ip);\n if (domainByGeoIp) {\n return { cityDomain: domainByGeoIp, method: 'ip' };\n }\n }\n\n return { cityDomain: DEFAULT_CITY_DOMAIN, method: 'default' };\n};\n\nexport default getCityDomain;\n"],"names":["loginByAccessToken","agreementNumber","response","dispatch","e","getClientAll","isValidAccessToken","isAxiosError","status","logout","captureException","getAccessToken","options","req","isServerSide","hostname","headers","get","headerHost","host","isClientSide","getHostNameFromUrl","window","location","getHostName","domain","getCityFromHostName","accessToken","getCookie","ACCESS_TOKEN_COOKIE","CITYDOMAIN_COOKIE","undefined","cookie","initialProps","ctx","auth","res","isNeedAuthData","validatedAccessToken","store","setLogin","refreshToken","AGREEMENT_ID_COOKIE","getState","clientPaymentLoaded","clientPaymentFetching","clientPersonal","Promise","resolve","fetchClientInfo","allCities","allCitiesJson","city","find","startsWith","removeCityFromLocation","splitLocationOrigin","split","shift","join","prefixesToDomainMap","prefix","getCityDomainByAgreement","agreement","foundedPrefixToDomain","regions","default","getCityByRegion","Object","name","region","foundedRegion","keys","cityName","BaseFetchRequest","doRequest","urls","request","baseURL","requestConfig","uri","queryParams","params","payload","getBaseUrl","getConfig","URLSearchParams","fetch","json","isSuccess","console","error","code","message","method","body","withAuth","withProvider","defaultHeaders","this","getDefaultHeaders","includes","BaseRequest","doFetchRequest","DoRequest","cityByIp","ip","getIpData","result","r1PlatformGateway","name_ru","region_iso_code","getCityDomainByGeoIpService","cityData","DEFAULT_CITY_DOMAIN","definedCityDomain","domainByAgreement","domainByGeoIp","enabled","cityDomain"],"sourceRoot":""}