{"version":3,"sources":["store/reducers/Alert.ts","components/base/AlertComponent.tsx","helpers/constants/index.ts","store/reducers/Loading.ts","helpers/environment.ts","routing/RoutePaths.ts","helpers/hooks/handleError.ts","helpers/hooks/useBackgroundPromiseWrapper.ts","pages/auth/models/UpdatePasswordStatus.ts","pages/auth/components/ForgotPassword.tsx","pages/home/components/Home.tsx","pages/auth/components/Confirmation.tsx","pages/auth/components/Login.tsx","pages/auth/components/Registration.tsx","pages/auth/components/ResetPassword.tsx","routing/TitleableRoute.tsx","routing/AppRouting.tsx","components/base/ProgressBarComponent.tsx","components/CookieConsent.tsx","components/Footer.tsx","App.tsx","store/index.ts","services/base/ApiServiceBase.ts","pages/auth/services/AuthenticationService.ts","services/index.ts","pages/home/services/AuthorizationService.ts","pages/auth/services/UsersService.ts","index.tsx","store/configureStore.ts"],"names":["AlertActionType","AlertComponent","toastRef","React","alertMessages","useSelector","appState","alerts","messages","current","length","show","ref","commonConstant","constantMessage","LoadingActionType","defaultMessage","life","closable","sticky","contentClassName","alertSuccess","message","detail","type","success","summary","alertWarn","warn","alertError","error","alertNotAuthentificated","statusText","alertLoadError","startLoading","start","finishLoading","finish","captchaIsPassed","environment","baseUrl","process","apiUrl","captchaSiteKey","defaultClientId","defaultRedirectUrl","defaultReturnUrl","defaultReturnAuthUrl","RoutePaths","forgotPassword","home","login","registration","resetPassword","handleError","dispatch","response","status","data","Message","errData","title","request","console","UpdatePasswordStatus","useBackgroundPromiseWrapper","useDispatch","useState","isLoading","setIsLoading","onLoading","loading","call","afterCall","onError","disableAnimation","promise","wrappedPromise","a","undefined","makeBackgroundWrapper","ForgotPassword","email","setEmail","promiseWrapper","history","useHistory","hideCaptcha","state","isCompleted","setIsCompleted","emailIsValid","RegExp","test","isValid","services","authenticationService","goBack","push","window","location","search","completedTemplate","className","to","notCompletedTemplate","htmlFor","id","placeholder","disabled","value","onChange","e","target","onKeyDown","key","Boolean","language","siteKey","onResponse","label","onClick","Home","setDisableAnimation","hasError403","setHasError403","urlParams","tmp","substring","split","forEach","x","keyValue","clientId","redirectUrl","decodeURIComponent","authorizationService","authorize","code","returnUrlParam","encodeURIComponent","returnAuthUrl","href","Code","Confirmation","showWarningMessage","onIsValidChange","onInnerRefInit","personalConfirmed","setPersonalConfirmed","policyConfirmed","setPolicyConfirmed","personalConfirmedRef","severity","text","inputId","inputRef","checked","rel","Login","password","setPassword","isConfirmed","setIsConfirmed","captchaToken","setToken","logout","passwordRef","focusPassword","focus","needConfirmation","setNeedConfirmation","parseInt","localStorage","loginErrorsCount","errorsCount","setErrorsCount","captcha","resetErrors","signIn","innerElement","setInnerElement","focusConfirmedOrSignIn","log","captchaValidate","Registration","setTitle","register","emailRef","focusEmail","focusConfirmed","ResetPassword","passwordConfirm","setPasswordConfirm","passwordIsValid","passwordConfirmIsValid","passwordConfirmRef","focusPasswordConfirm","setLogin","usersService","getCurrentUserInternal","isAuthorized","reset","updatePassword","NoError","DecryptError","ExpirationError","UserNotFoundError","UserLockedError","PasswordLengthError","notAuthorizedTemplate","TitleableRoute","rest","document","AppRouting","exact","path","component","ProgressBarComponent","loadingCount","mode","CookieConsent","props","visible","findCookie","acceptCookies","bind","declineCookies","Cookies","get","cookies","now","Date","expires","setMonth","getMonth","set","this","setState","Footer","Fragment","App","header","src","alt","reducers","incomingAction","map","info","ApiServiceBase","prefixUrl","relativeUrl","init","fetch","Object","assign","method","body","typeless","File","FormData","indexOf","constructor","JSON","stringify","headers","credentials","then","Promise","resolve","reject","ok","fixDates","parse","catch","pathname","obj","c","Array","i","fixVal","val","String","datePattern","stateCache","AuthenticationService","confirmed","Password","Confirmed","captcha_token","post","Title","Key","AuthorizationService","formBody","join","UsersService","createBrowserHistory","basename","store","initialState","middleware","thunk","routerMiddleware","rootReducer","combineReducers","router","connectRouter","enhancers","windowIfDefined","__REDUX_DEVTOOLS_EXTENSION__","createStore","compose","applyMiddleware","configureStore","connectServices","ReactDOM","getElementById"],"mappings":"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","file":"static/js/main.87c9820f.chunk.js","sourcesContent":["import { Reducer } from \"redux\";\r\nimport { ToastMessage } from \"primereact/toast\";\r\n\r\nexport interface AlertState {\r\n messages?: ToastMessage[];\r\n}\r\n\r\nexport enum AlertActionType {\r\n success = \"alert_success\",\r\n error = `alert_error`,\r\n info = \"alert_info\",\r\n warn = \"alert_warning\",\r\n}\r\nconst defaultMessage: ToastMessage = { life: 5000, closable: true, sticky: false, contentClassName: \"\"};\r\n\r\ninterface AlertAction {\r\n type: AlertActionType;\r\n messages: ToastMessage[];\r\n}\r\n\r\nexport const alertSuccess: (message?: ToastMessage, detail?: string) => AlertAction = (message?: ToastMessage, detail?: string) => (\r\n{\r\n type: AlertActionType.success,\r\n messages: [{ summary: `Успешно`, detail: detail ? detail : `Сохранено`, contentClassName: '', ...message}]\r\n})\r\nexport const alertInfo: (message: ToastMessage) => AlertAction = (message: ToastMessage) => (\r\n{\r\n type: AlertActionType.info,\r\n messages: [message]\r\n})\r\nexport const alertWarns: (messages: ToastMessage[]) => AlertAction = (messages: ToastMessage[]) => (\r\n{\r\n type: AlertActionType.warn,\r\n messages: messages\r\n})\r\nexport const alertWarn: (message: ToastMessage) => AlertAction = (message: ToastMessage) => (\r\n{\r\n type: AlertActionType.warn,\r\n messages: [{summary: `Предупреждение`, ...message}]\r\n})\r\nexport const alertErrors: (messages: ToastMessage[]) => AlertAction = (messages: ToastMessage[]) => (\r\n{\r\n type: AlertActionType.error,\r\n messages: messages\r\n})\r\nexport const alertError: (message?: ToastMessage) => AlertAction = (message?: ToastMessage) => (\r\n{\r\n type: AlertActionType.error,\r\n messages: [{ summary: `Ошибка`, contentClassName: '', ...message}]\r\n})\r\nexport const alertNotAuthorized: (statusText: string) => AlertAction = (statusText: string) => ( \r\n alertWarn({ summary: `Авторизация`, detail: \"Введите email и пароль\", contentClassName: \"\"}))\r\nexport const alertNotAuthentificated: (statusText: string) => AlertAction = (statusText: string) => (\r\n alertWarn({ summary: `Ошибка доступа`, detail: statusText, contentClassName: \"\" }))\r\nexport const alertServerError: (message: string) => AlertAction = (message: string) => (\r\n alertError({ summary: `Внутренняя ошибка сервера`, detail: message, sticky: true, contentClassName: \"\"}))\r\nexport const alertLoadError: (detail: any) => AlertAction = (detail: string) =>\r\n alertError({ summary: `Загрузка`, detail: detail + ``, sticky: true, contentClassName: \"\"});\r\nexport const alertRequestError: () => AlertAction = () =>\r\n alertError({ summary: `Ошибка сети`, detail: `Нет ответа от сервера`, sticky: true, contentClassName: \"\"});\r\n\r\nexport const reducer: Reducer = (\r\n state,\r\n incomingAction: AlertAction\r\n) => {\r\n if (state === undefined) {\r\n return {};\r\n }\r\n const messages = incomingAction.messages;\r\n switch (incomingAction.type) {\r\n case AlertActionType.success:\r\n return {\r\n ...state,\r\n messages: messages.map(message => {return {...defaultMessage, ...message, severity: `success`}}) \r\n };\r\n case AlertActionType.error:\r\n return {\r\n ...state,\r\n messages: messages.map(message => {return {...defaultMessage, ...message, severity: `error`}}) \r\n };\r\n case AlertActionType.info:\r\n return {\r\n ...state,\r\n messages: messages.map(message => {return {...defaultMessage, ...message, severity: `info`}}) \r\n };\r\n case AlertActionType.warn:\r\n return {\r\n ...state,\r\n messages: messages.map(message => {return {...defaultMessage, ...message, severity: `warn`}}) \r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n","import * as React from \"react\";\r\nimport { Toast } from \"primereact/toast\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\nimport { ApplicationState } from \"../../store\";\r\n\r\n\r\nexport const AlertComponent: React.FC = () => {\r\n const toastRef = React.useRef(null);\r\n const alertMessages = useSelector(\r\n (appState: ApplicationState) => appState.alerts.messages\r\n );\r\n React.useEffect(() => {\r\n if (toastRef?.current != null) {\r\n if (alertMessages && alertMessages?.length > 0) {\r\n toastRef.current.show(alertMessages);\r\n }\r\n }\r\n }, [alertMessages]);\r\n\r\n return (\r\n \r\n );\r\n};\r\n","export const commonConstant = {\r\n appName: `личный кабинет КА RFP`\r\n}\r\n\r\nexport const constantMessage = {\r\n cancelRequest: `Operation canceled due user action`,\r\n}","import { Reducer } from \"redux\";\r\n\r\nexport enum LoadingActionType {\r\n start = \"startLoading\",\r\n finish = \"finishLoading\",\r\n captchaIsPassed = \"captchaIsPassed\"\r\n}\r\n\r\nexport interface LoadingState {\r\n loadingCount: number;\r\n captchaIsPassed: boolean;\r\n}\r\n\r\ninterface LoadingAction {\r\n type: LoadingActionType;\r\n}\r\n\r\nexport const startLoading: LoadingAction = {type: LoadingActionType.start};\r\nexport const finishLoading: LoadingAction = {type: LoadingActionType.finish};\r\nexport const captchaIsPassed: LoadingAction = { type: LoadingActionType.captchaIsPassed };\r\n\r\nconst loadingCounter = 1;\r\nexport const reducer: Reducer = (state, incomingAction: LoadingAction) => {\r\n switch (incomingAction.type) {\r\n case LoadingActionType.captchaIsPassed:\r\n return {\r\n ...state,\r\n loadingCount: state?.loadingCount ?? 0,\r\n captchaIsPassed: true,\r\n };\r\n case LoadingActionType.finish:\r\n return {\r\n ...state,\r\n loadingCount: (state?.loadingCount ?? 0) - loadingCounter,\r\n captchaIsPassed: state?.captchaIsPassed ?? false\r\n };\r\n case LoadingActionType.start:\r\n return {\r\n ...state,\r\n loadingCount: (state?.loadingCount ?? 0) + loadingCounter,\r\n captchaIsPassed: state?.captchaIsPassed ?? false\r\n };\r\n default:\r\n return {\r\n ...state,\r\n loadingCount: state?.loadingCount ?? 0,\r\n captchaIsPassed: state?.captchaIsPassed ?? false\r\n };\r\n }\r\n};\r\n","const environment = {\r\n baseUrl: process.env.PUBLIC_URL ?? `/`,\r\n apiUrl: process.env.REACT_APP_API_URL ?? `/`,\r\n captchaSiteKey: process.env.REACT_APP_CAPTCHA || '', // https://www.google.com/recaptcha/admin/create\r\n defaultClientId: process.env.REACT_APP_DEFAULT_CLIENT_ID || '',\r\n defaultRedirectUrl: process.env.REACT_APP_DEFAULT_REDIRECT_URL || '',\r\n defaultReturnUrl: process.env.REACT_APP_DEFAULT_RETURN_URL || '',\r\n defaultReturnAuthUrl: process.env.REACT_APP_DEFAULT_RETURN_AUTH_URL || ''\r\n};\r\n\r\nexport default environment;","export class RoutePaths {\r\n public static forgotPassword = \"/forgot-password\";\r\n public static home = \"/\";\r\n public static login = \"/login\";\r\n public static registration = \"/registration\";\r\n public static resetPassword = \"/reset-password\";\r\n}","import { alertError, alertLoadError, alertNotAuthentificated, alertNotAuthorized, alertRequestError, alertServerError } from \"../../store/reducers/Alert\";\r\n\r\nimport { constantMessage } from \"../constants\";\r\n\r\n// eslint-disable-next-line\r\nexport function handleError(error: any, dispatch: React.Dispatch): void {\r\n if (error.response) {\r\n switch (error.response.status) {\r\n case 500:\r\n dispatch(alertServerError(error.response.data?.Message));\r\n break;\r\n case 400:\r\n const errData = error.response.data;\r\n if (errData !== null && typeof (errData) === \"object\") {\r\n dispatch(alertError({ detail: errData?.title, contentClassName: \"\" }))\r\n }\r\n else if(error?.error?.error){\r\n dispatch(alertNotAuthentificated(error.error.error))\r\n }\r\n else {\r\n dispatch(alertError({ detail: errData, contentClassName: \"\" }));\r\n }\r\n break;\r\n case 401:\r\n dispatch(alertNotAuthorized(error.response.statusText))\r\n break;\r\n case 403:\r\n dispatch(alertNotAuthentificated(error.error.error))\r\n break;\r\n default:\r\n dispatch(alertLoadError(error))\r\n break;\r\n }\r\n } else if (error.request) {\r\n dispatch(alertRequestError());\r\n } else {\r\n if (\"message\" in error) {\r\n if (error.message === constantMessage.cancelRequest) {\r\n console.error(error + ``);\r\n return;\r\n }\r\n }\r\n dispatch(alertLoadError(error));\r\n }\r\n}","import { useDispatch } from \"react-redux\";\r\nimport { useState } from \"react\";\r\n\r\nimport { finishLoading, startLoading } from \"../../store/reducers/Loading\";\r\nimport { handleError } from '../../helpers/hooks/handleError';\r\n\r\nfunction makeBackgroundWrapper(\r\n promise: () => Promise,\r\n dispatch: React.Dispatch,\r\n onLoading: (x: boolean) => void,\r\n afterCall?: (r: T) => void,\r\n onError?: (error: any) => void | undefined,\r\n disableAnimation?: boolean | undefined\r\n): Promise {\r\n const wrappedPromise: () => Promise = async () => {\r\n let response: T | null = null;\r\n try {\r\n if (!disableAnimation) dispatch(startLoading);\r\n onLoading(true);\r\n response = await promise();\r\n } catch (error) {\r\n handleError(error, dispatch);\r\n if (onError !== undefined)\r\n onError(error);\r\n } finally {\r\n if (!disableAnimation) dispatch(finishLoading);\r\n onLoading(false);\r\n }\r\n if (response !== null && afterCall !== undefined) afterCall(response);\r\n };\r\n\r\n return wrappedPromise();\r\n}\r\n\r\nexport const useBackgroundPromiseWrapper = (): [(call: () => Promise, afterCall?: ((T: any) => void) | undefined, onError?: (error: any) => void | undefined, disableAnimation?: boolean | undefined) => void, boolean] => {\r\n const dispatch = useDispatch();\r\n const [isLoading, setIsLoading] = useState(false);\r\n const onLoading = (loading: boolean) => setIsLoading(loading);\r\n const promise = (\r\n call: () => Promise,\r\n afterCall?: (r: T) => void,\r\n onError?: (error: any) => void | undefined,\r\n disableAnimation?: boolean | undefined\r\n ) => {\r\n makeBackgroundWrapper(call, dispatch, onLoading, afterCall, onError, disableAnimation);\r\n };\r\n\r\n return [promise, isLoading]\r\n};\r\n","export enum UpdatePasswordStatus {\r\n NoError = 0,\r\n DecryptError = 1,\r\n ExpirationError = 2,\r\n UserNotFoundError = 3,\r\n UserLockedError = 4,\r\n PasswordLengthError = 5\r\n}","import * as React from \"react\";\r\nimport { Button } from \"primereact/button\";\r\nimport { Captcha } from 'primereact/captcha';\r\nimport { Link } from 'react-router-dom';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { useHistory } from \"react-router-dom\";\r\n\r\nimport { alertSuccess } from '../../../store/reducers/Alert';\r\nimport { ApplicationState } from \"../../../store\";\r\nimport { captchaIsPassed } from \"../../../store/reducers/Loading\";\r\nimport environment from '../../../helpers/environment';\r\nimport { RoutePaths } from \"../../../routing/RoutePaths\";\r\nimport { services } from \"../../..\";\r\nimport { useBackgroundPromiseWrapper } from \"../../../helpers/hooks/useBackgroundPromiseWrapper\";\r\n\r\n\r\nexport const ForgotPassword: React.FC = () => {\r\n const [email, setEmail] = React.useState(\"\");\r\n\r\n const [promiseWrapper, loading] = useBackgroundPromiseWrapper();\r\n const dispatch = useDispatch();\r\n const history = useHistory();\r\n\r\n const hideCaptcha: boolean = useSelector((state: ApplicationState) => state.loading?.captchaIsPassed ?? false);\r\n const [isCompleted, setIsCompleted] = React.useState(false);\r\n\r\n const emailIsValid = React.useMemo(() => email.length === 0 || new RegExp('^\\\\S+@\\\\S+\\\\.\\\\S+$').test(email), [email]);\r\n const isValid = React.useMemo(() => !loading && (environment.captchaSiteKey ? hideCaptcha : true) && email.length > 0 && emailIsValid, [loading, hideCaptcha, email, emailIsValid]);\r\n\r\n const forgotPassword = React.useCallback(() => {\r\n promiseWrapper(\r\n () => services.authenticationService.forgotPassword(email),\r\n () => {\r\n dispatch(alertSuccess(undefined, \"Отправлено\"));\r\n setIsCompleted(true);\r\n }\r\n );\r\n }, [email]);\r\n\r\n const goBack = React.useCallback(() => {\r\n history.push(`${RoutePaths.login}${window.location.search}`);\r\n }, []);\r\n\r\n\r\n const completedTemplate = React.useCallback(() => (\r\n \r\n
На указанный адрес отправлено письмо с данными для сброса пароля.
\r\n
\r\n Вернуться на главную страницу\r\n
\r\n
\r\n ), []);\r\n\r\n const notCompletedTemplate = React.useCallback(() => (\r\n \r\n
\r\n \r\n setEmail(e.target.value)}\r\n onKeyDown={e => e.key === 'Enter' && isValid && forgotPassword()} />\r\n
\r\n\r\n
\r\n {\r\n Boolean(environment.captchaSiteKey) &&\r\n dispatch(captchaIsPassed)} />\r\n }\r\n
\r\n\r\n
\r\n \r\n forgotPassword()} />\r\n goBack()} />\r\n \r\n\r\n
\r\n
\r\n ), [loading, email, emailIsValid, hideCaptcha, isValid, forgotPassword, goBack]);\r\n\r\n\r\n return (\r\n \r\n
\r\n
Восстановление пароля
\r\n
\r\n
\r\n {isCompleted ? completedTemplate() : notCompletedTemplate()}\r\n
\r\n
\r\n );\r\n};\r\n","import * as React from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { CodeDto } from \"../models/CodeDto\";\r\nimport environment from \"../../../helpers/environment\";\r\nimport { services } from '../../../';\r\nimport { useBackgroundPromiseWrapper } from \"../../../helpers/hooks/useBackgroundPromiseWrapper\";\r\n\r\n\r\n\r\nexport const Home: React.FC = () => {\r\n const [promiseWrapper] = useBackgroundPromiseWrapper();\r\n const [disableAnimation, setDisableAnimation] = React.useState(false);\r\n const [hasError403, setHasError403] = React.useState(false);\r\n\r\n const urlParams: { [key: string]: string } = React.useMemo(() => {\r\n var tmp: { [key: string]: string } = {};\r\n window.location.search.substring(1).split(\"&\").forEach(x => {\r\n var keyValue: string[] = x.split(\"=\");\r\n tmp[keyValue[0]] = keyValue.length > 1 ? keyValue[1] : \"\";\r\n });\r\n\r\n return tmp;\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n promiseWrapper(\r\n () => {\r\n const clientId = urlParams[\"client_id\"] ?? environment.defaultClientId;\r\n const redirectUrl = urlParams[\"redirect_url\"] ? decodeURIComponent(urlParams[\"redirect_url\"]) : environment.defaultRedirectUrl;\r\n return services.authorizationService.authorize(clientId, redirectUrl);\r\n },\r\n (code: CodeDto) => {\r\n const returnUrlParam: string = urlParams[\"return_url\"] ? urlParams[\"return_url\"] : encodeURIComponent(environment.defaultReturnUrl);\r\n const returnAuthUrl: string = urlParams[\"return_auth_url\"] ? decodeURIComponent(urlParams[\"return_auth_url\"]) : environment.defaultReturnAuthUrl;\r\n\r\n window.location.href = `${returnAuthUrl}?code=${code.Code}&return_url=${returnUrlParam}`;\r\n },\r\n (error: any) => {\r\n if (error.response?.status === 403)\r\n setHasError403(true);\r\n },\r\n disableAnimation\r\n );\r\n\r\n return () => setDisableAnimation(true);\r\n // eslint-disable-next-line\r\n }, []);\r\n\r\n\r\n return (\r\n \r\n {\r\n !hasError403 &&\r\n
Идёт проверка...
\r\n }\r\n {\r\n hasError403 &&\r\n Вы вошли в личный кабинет, но
у вас нет доступа к данному модулю.
Обратитесь, пожалуйста, к администратору.
\r\n }\r\n
\r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport { Checkbox } from 'primereact/checkbox';\r\nimport { Link } from 'react-router-dom';\r\nimport { Message } from 'primereact/message';\r\n\r\n\r\ninterface ConfirmationProps {\r\n showWarningMessage: boolean;\r\n loading: boolean;\r\n onIsValidChange: (isValid: boolean) => void;\r\n onInnerRefInit: (innerElement: HTMLInputElement) => void;\r\n}\r\n\r\nexport const Confirmation: React.FC = ({ showWarningMessage, loading, onIsValidChange, onInnerRefInit }) => {\r\n const [personalConfirmed, setPersonalConfirmed] = React.useState(false);\r\n const [policyConfirmed, setPolicyConfirmed] = React.useState(false);\r\n\r\n const isValid = React.useMemo(() => personalConfirmed && policyConfirmed, [personalConfirmed, policyConfirmed]);\r\n React.useEffect(() => onIsValidChange(isValid), [isValid]);\r\n\r\n const personalConfirmedRef = React.useRef(null);\r\n React.useEffect(() => {\r\n if (personalConfirmedRef.current == null)\r\n return;\r\n\r\n onInnerRefInit(personalConfirmedRef.current);\r\n }, [personalConfirmedRef]);\r\n\r\n\r\n return (\r\n \r\n {\r\n showWarningMessage &&\r\n
\r\n \r\n
\r\n }\r\n
\r\n setPersonalConfirmed(e.checked)} />\r\n \r\n
\r\n
\r\n setPolicyConfirmed(e.checked)} />\r\n \r\n
\r\n
\r\n );\r\n}","import * as React from \"react\";\r\nimport { Button } from \"primereact/button\";\r\nimport { Captcha } from 'primereact/captcha';\r\nimport { Link } from 'react-router-dom';\r\nimport { useDispatch } from 'react-redux';\r\nimport { useHistory } from \"react-router-dom\";\r\n\r\nimport { alertSuccess } from '../../../store/reducers/Alert';\r\nimport { Confirmation } from \"./Confirmation\";\r\nimport environment from '../../../helpers/environment';\r\nimport { RoutePaths } from \"../../../routing/RoutePaths\";\r\nimport { services } from \"../../..\";\r\nimport { useBackgroundPromiseWrapper } from \"../../../helpers/hooks/useBackgroundPromiseWrapper\";\r\n\r\n\r\nexport const Login: React.FC = () => {\r\n const [email, setEmail] = React.useState(\"\");\r\n const [password, setPassword] = React.useState(\"\");\r\n const [isConfirmed, setIsConfirmed] = React.useState(false);\r\n const [captchaToken, setToken] = React.useState(\"\");\r\n\r\n const [promiseWrapper, loading] = useBackgroundPromiseWrapper();\r\n const dispatch = useDispatch();\r\n const history = useHistory();\r\n\r\n React.useEffect(() => {\r\n promiseWrapper(\r\n () => services.authenticationService.logout(),\r\n () => { }\r\n );\r\n // eslint-disable-next-line\r\n }, []);\r\n\r\n const passwordRef = React.useRef(null);\r\n const focusPassword = React.useCallback(() => {\r\n passwordRef.current?.focus();\r\n }, [passwordRef]);\r\n\r\n const [needConfirmation, setNeedConfirmation] = React.useState(false);\r\n const [errorsCount, setErrorsCount] = React.useState(parseInt(window.localStorage?.loginErrorsCount) || 0);\r\n\r\n const emailIsValid = React.useMemo(() => email.length === 0 || new RegExp('^\\\\S+@\\\\S+\\\\.\\\\S+$').test(email), [email]);\r\n const captcha = React.useMemo(() => Boolean(environment.captchaSiteKey), [errorsCount]); // && errorsCount > 2\r\n const isValid = React.useMemo(() => !loading\r\n && email.length > 0 && emailIsValid\r\n && password.length > 0\r\n && (captcha ? captchaToken.length > 0 : true)\r\n && (!needConfirmation || isConfirmed),\r\n [loading, captcha, email, emailIsValid, password, captchaToken, needConfirmation, isConfirmed]);\r\n\r\n const resetErrors = () => {\r\n setErrorsCount(0);\r\n if (window.localStorage)\r\n window.localStorage.loginErrorsCount = 0;\r\n };\r\n\r\n const captchaValidate = ({ response }: { response: string }) => {\r\n console.log(response);\r\n setToken(response);\r\n resetErrors();\r\n }\r\n\r\n const signIn = React.useCallback(() => {\r\n promiseWrapper(\r\n () => services.authenticationService.login(email, password, captchaToken, needConfirmation),\r\n (success: boolean) => {\r\n if (!success) {\r\n setNeedConfirmation(true);\r\n return;\r\n }\r\n\r\n dispatch(alertSuccess(undefined, \"Вход\"));\r\n resetErrors();\r\n history.push(`${RoutePaths.home}${window.location.search}`);\r\n },\r\n () => {\r\n setErrorsCount(errorsCount + 1);\r\n if (window.localStorage)\r\n window.localStorage.loginErrorsCount = errorsCount + 1;\r\n focusPassword();\r\n }\r\n );\r\n // eslint-disable-next-line\r\n }, [email, password, needConfirmation, captchaToken, errorsCount, focusPassword]);\r\n\r\n const [innerElement, setInnerElement] = React.useState(null);\r\n const focusConfirmedOrSignIn = React.useCallback(() => {\r\n if (needConfirmation)\r\n innerElement?.focus();\r\n else if (isValid)\r\n signIn();\r\n }, [needConfirmation, innerElement, isValid, signIn]);\r\n\r\n\r\n return (\r\n
\r\n
\r\n \r\n setEmail(e.target.value)}\r\n onKeyDown={e => e.key === 'Enter' && focusPassword()} />\r\n
\r\n
\r\n \r\n setPassword(e.target.value)}\r\n onKeyDown={e => e.key === 'Enter' && focusConfirmedOrSignIn()} />\r\n
\r\n {\r\n needConfirmation &&\r\n setIsConfirmed(e)}\r\n onInnerRefInit={(e) => setInnerElement(e)} />\r\n }\r\n
\r\n {\r\n captcha &&\r\n captchaValidate(e)} />\r\n }\r\n
\r\n
\r\n signIn()} />\r\n\r\n
\r\n
\r\n Регистрация\r\n
\r\n
\r\n Забыли пароль?\r\n
\r\n
\r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport { Button } from \"primereact/button\";\r\nimport { Captcha } from 'primereact/captcha';\r\nimport { Checkbox } from 'primereact/checkbox';\r\nimport { Link } from 'react-router-dom';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { useHistory } from \"react-router-dom\";\r\n\r\nimport { alertSuccess } from '../../../store/reducers/Alert';\r\nimport { ApplicationState } from \"../../../store\";\r\nimport { captchaIsPassed } from \"../../../store/reducers/Loading\";\r\nimport { Confirmation } from \"./Confirmation\";\r\nimport environment from '../../../helpers/environment';\r\nimport { RoutePaths } from \"../../../routing/RoutePaths\";\r\nimport { services } from \"../../..\";\r\nimport { useBackgroundPromiseWrapper } from \"../../../helpers/hooks/useBackgroundPromiseWrapper\";\r\n\r\n\r\nexport const Registration: React.FC = () => {\r\n const [title, setTitle] = React.useState(\"\");\r\n const [email, setEmail] = React.useState(\"\");\r\n const [isConfirmed, setIsConfirmed] = React.useState(false);\r\n\r\n const [promiseWrapper, loading] = useBackgroundPromiseWrapper();\r\n const dispatch = useDispatch();\r\n const history = useHistory();\r\n\r\n const hideCaptcha: boolean = useSelector((state: ApplicationState) => state.loading?.captchaIsPassed ?? false);\r\n const [isCompleted, setIsCompleted] = React.useState(false);\r\n\r\n const emailIsValid = React.useMemo(() => email.length === 0 || new RegExp('^\\\\S+@\\\\S+\\\\.\\\\S+$').test(email), [email]);\r\n const isValid = React.useMemo(() => !loading && (environment.captchaSiteKey ? hideCaptcha : true) && title.length > 0 && email.length > 0 && emailIsValid && isConfirmed, [loading, hideCaptcha, title, email, emailIsValid, isConfirmed]);\r\n\r\n const register = React.useCallback(() => {\r\n promiseWrapper(\r\n () => services.authenticationService.register(email, title),\r\n () => {\r\n dispatch(alertSuccess(undefined, \"Отправлено\"));\r\n setIsCompleted(true);\r\n }\r\n );\r\n }, [email, title]);\r\n\r\n const goBack = React.useCallback(() => {\r\n history.push(`${RoutePaths.login}${window.location.search}`);\r\n }, []);\r\n\r\n\r\n const emailRef = React.useRef(null);\r\n const focusEmail = React.useCallback(() => {\r\n emailRef.current?.focus();\r\n }, [emailRef]);\r\n\r\n const [innerElement, setInnerElement] = React.useState(null);\r\n const focusConfirmed = React.useCallback(() => {\r\n innerElement?.focus();\r\n }, [innerElement]);\r\n\r\n\r\n\r\n const completedTemplate = React.useCallback(() => (\r\n \r\n
На указанный адрес отправлено письмо с данными для входа в систему.
\r\n
Если в течение 10 минут письмо не пришло, уточните, заведен ли адрес в систему в качестве адреса контрагента.
\r\n
\r\n Вернуться на главную страницу\r\n
\r\n
\r\n ), []);\r\n\r\n const notCompletedTemplate = React.useCallback(() => (\r\n \r\n
\r\n \r\n setTitle(e.target.value)}\r\n onKeyDown={e => e.key === 'Enter' && focusEmail()} />\r\n
\r\n
\r\n \r\n setEmail(e.target.value)}\r\n onKeyDown={e => e.key === 'Enter' && focusConfirmed()} />\r\n
\r\n setIsConfirmed(e)}\r\n onInnerRefInit={(e) => setInnerElement(e)} />\r\n \r\n
\r\n {\r\n Boolean(environment.captchaSiteKey) &&\r\n dispatch(captchaIsPassed)} />\r\n }\r\n
\r\n\r\n
\r\n {\r\n \r\n register()} />\r\n goBack()} />\r\n \r\n }\r\n
\r\n
\r\n ), [loading, title, focusEmail, emailIsValid, emailRef, email, focusConfirmed, hideCaptcha, isValid, register, goBack]);\r\n\r\n\r\n return (\r\n \r\n
\r\n
{isCompleted ? 'Регистрация завершена' : 'Регистрация'}
\r\n
\r\n
\r\n {isCompleted ? completedTemplate() : notCompletedTemplate()}\r\n
\r\n
\r\n Видео инструкция по регистрации и аутентификации\r\n
\r\n
\r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport { Button } from \"primereact/button\";\r\nimport { Captcha } from 'primereact/captcha';\r\nimport { Link } from 'react-router-dom';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\n\r\nimport { alertError, alertSuccess } from '../../../store/reducers/Alert';\r\nimport { ApplicationState } from \"../../../store\";\r\nimport { captchaIsPassed } from \"../../../store/reducers/Loading\";\r\nimport environment from '../../../helpers/environment';\r\nimport { RoutePaths } from \"../../../routing/RoutePaths\";\r\nimport { services } from \"../../..\";\r\nimport { UpdatePasswordStatus } from \"../models/UpdatePasswordStatus\";\r\nimport { useBackgroundPromiseWrapper } from \"../../../helpers/hooks/useBackgroundPromiseWrapper\";\r\nimport { UserDto } from \"../models/UserDto\";\r\n\r\n\r\nexport const ResetPassword: React.FC = () => {\r\n const [promiseWrapper, loading] = useBackgroundPromiseWrapper();\r\n const dispatch = useDispatch();\r\n const hideCaptcha: boolean = useSelector((state: ApplicationState) => state.loading?.captchaIsPassed ?? false);\r\n\r\n const [password, setPassword] = React.useState(\"\");\r\n const [passwordConfirm, setPasswordConfirm] = React.useState(\"\");\r\n\r\n const minPasswordLength: number = 8;\r\n const passwordIsValid: boolean = React.useMemo(() => password.length === 0 || password.length >= minPasswordLength, [password]);\r\n const passwordConfirmIsValid: boolean = React.useMemo(() => passwordConfirm.length === 0 || password === passwordConfirm, [password, passwordConfirm]);\r\n const isValid: boolean = React.useMemo(() => password.length > 0 && passwordIsValid && passwordConfirm.length > 0 && passwordConfirmIsValid && (environment.captchaSiteKey ? hideCaptcha : true), [password, passwordIsValid, passwordConfirm, passwordConfirmIsValid]);\r\n\r\n\r\n const passwordConfirmRef = React.useRef(null);\r\n const focusPasswordConfirm = React.useCallback(() => {\r\n passwordConfirmRef.current?.focus();\r\n }, [passwordConfirmRef]);\r\n\r\n\r\n const key: string = React.useMemo(() => {\r\n var urlParams: { [key: string]: string } = {};\r\n window.location.search.substring(1).split(\"&\").forEach(x => {\r\n var keyValue: string[] = x.split(\"=\");\r\n urlParams[keyValue[0]] = keyValue.length > 1 ? keyValue[1] : \"\";\r\n });\r\n\r\n return urlParams[\"key\"] ?? \"\";\r\n }, []);\r\n\r\n const [login, setLogin] = React.useState(\"\");\r\n React.useEffect(() => {\r\n if (key.length > 0)\r\n return;\r\n\r\n promiseWrapper(\r\n () => services.usersService.getCurrentUserInternal(),\r\n (data: UserDto) => setLogin(data.Login)\r\n );\r\n }, [key]);\r\n\r\n\r\n const isAuthorized = React.useMemo(() => key.length > 0 || login.length > 0, [key, login]);\r\n const [isCompleted, setIsCompleted] = React.useState(false);\r\n\r\n\r\n const reset = React.useCallback(() => {\r\n promiseWrapper(\r\n () => key.length > 0 ?\r\n services.authenticationService.resetPassword(key, password) :\r\n services.authenticationService.updatePassword(password),\r\n (status: UpdatePasswordStatus) => {\r\n if (status === UpdatePasswordStatus.NoError) {\r\n dispatch(alertSuccess(undefined, \"Сохранено\"));\r\n setIsCompleted(true);\r\n return;\r\n }\r\n\r\n let error: string = \"\";\r\n switch (status) {\r\n case UpdatePasswordStatus.DecryptError:\r\n error = \"Не удалось дешифровать код сброса пароля\";\r\n break;\r\n\r\n case UpdatePasswordStatus.ExpirationError:\r\n error = \"Истек срок действия ссылки\";\r\n break;\r\n\r\n case UpdatePasswordStatus.UserNotFoundError:\r\n error = \"Пользователь не найден\";\r\n break;\r\n\r\n case UpdatePasswordStatus.UserLockedError:\r\n error = \"Пользователь заблокирован\";\r\n break;\r\n\r\n case UpdatePasswordStatus.PasswordLengthError:\r\n error = \"Длина пароля меньше допустимого значения\";\r\n break;\r\n }\r\n\r\n dispatch(alertError({ summary: `Не удалось сохранить новый пароль`, detail: error, contentClassName: '' }));\r\n }\r\n );\r\n }, [key, password]);\r\n\r\n\r\n\r\n const notAuthorizedTemplate = React.useCallback(() => (\r\n
Идёт проверка...
\r\n ), []);\r\n\r\n const completedTemplate = React.useCallback(() => (\r\n \r\n
\r\n
Сброс пароля
\r\n
\r\n
\r\n
Новый пароль задан.
\r\n
\r\n Вернуться на главную страницу\r\n
\r\n
\r\n
\r\n ), []);\r\n\r\n const notCompletedTemplate = React.useCallback(() => (\r\n \r\n
\r\n
Сброс пароля
\r\n
\r\n
\r\n
\r\n \r\n setPassword(e.target.value)}\r\n onKeyDown={e => e.key === 'Enter' && focusPasswordConfirm()} />\r\n
\r\n
\r\n \r\n setPasswordConfirm(e.target.value)}\r\n onKeyDown={e => e.key === 'Enter' && isValid && reset()} />\r\n
\r\n
\r\n {\r\n Boolean(environment.captchaSiteKey) &&\r\n dispatch(captchaIsPassed)} />\r\n }\r\n
\r\n\r\n
\r\n {\r\n reset()} />\r\n }\r\n
\r\n
\r\n
\r\n ), [loading, password, passwordIsValid, focusPasswordConfirm, passwordConfirmRef, passwordConfirm, passwordConfirmIsValid, isValid, reset, hideCaptcha]);\r\n\r\n\r\n\r\n\r\n return (\r\n \r\n {\r\n isCompleted ?\r\n completedTemplate() :\r\n (isAuthorized ? notCompletedTemplate() : notAuthorizedTemplate())\r\n }\r\n \r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport { Route } from \"react-router-dom\";\r\n\r\n\r\nexport const TitleableRoute: React.FC = ({ title, ...rest }) => {\r\n React.useEffect(() => {\r\n document.title = title;\r\n }, []);\r\n\r\n return (\r\n \r\n );\r\n}","import * as React from \"react\";\r\nimport { Switch } from \"react-router-dom\";\r\n\r\nimport { commonConstant } from \"../helpers/constants\";\r\nimport { ForgotPassword } from \"../pages/auth/components/ForgotPassword\";\r\nimport { Home } from \"../pages/home/components/Home\";\r\nimport { Login } from \"../pages/auth/components/Login\";\r\nimport { Registration } from \"../pages/auth/components/Registration\";\r\nimport { ResetPassword } from \"../pages/auth/components/ResetPassword\";\r\nimport { RoutePaths } from \"./RoutePaths\";\r\nimport { TitleableRoute } from \"./TitleableRoute\";\r\n\r\n\r\nexport const AppRouting: React.FC = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n );\r\n};\r\n","import * as React from \"react\";\r\nimport { ProgressBar } from \"primereact/progressbar\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\nimport { ApplicationState } from \"../../store\";\r\n\r\n\r\nexport const ProgressBarComponent: React.FC = () => {\r\n const loadingCount = useSelector((state: ApplicationState) => state.loading?.loadingCount ?? 0);\r\n\r\n return (\r\n \r\n {\r\n loadingCount > 0 &&\r\n \r\n }\r\n \r\n );\r\n};\r\n","import * as React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport Cookies from 'universal-cookie';\r\n\r\ntype CookieConsentState = {\r\n visible: boolean,\r\n};\r\n\r\ntype CookieConsentProps = {\r\n};\r\n\r\nexport default class CookieConsent extends React.PureComponent {\r\n\r\n constructor(props: Readonly) {\r\n super(props);\r\n this.acceptCookies = this.acceptCookies.bind(this);\r\n this.declineCookies = this.declineCookies.bind(this);\r\n }\r\n\r\n state: CookieConsentState = {\r\n visible: !this.findCookie(),\r\n }\r\n\r\n findCookie() {\r\n const cookies = new Cookies();\r\n return cookies.get('cookie_consent_accepted') === 1;\r\n }\r\n\r\n declineCookies() {\r\n const cookies = new Cookies();\r\n const now = new Date(Date.now());\r\n const expires = new Date(now.setMonth(now.getMonth()+1));\r\n\r\n cookies.set('cookie_consent_accepted', 0, { path: '/', expires: expires });\r\n this.setState({\r\n visible: false,\r\n })\r\n ///window.open('chrome://settings/cookies', '_blank');\r\n }\r\n\r\n acceptCookies() {\r\n const cookies = new Cookies();\r\n const now = new Date(Date.now());\r\n const expires = new Date(now.setMonth(now.getMonth()+1));\r\n \r\n cookies.set('cookie_consent_accepted', 1, { path: '/', expires: expires });\r\n this.setState({\r\n visible: false,\r\n })\r\n }\r\n\r\n\r\n\r\n public render() {\r\n return (\r\n this.state.visible &&\r\n \r\n
\r\n
\r\n \r\n Данный сайт использует файлы-cookies, а также другие технологии для улучшения работы, совершенствования сервисов, определения пользовательских предпочтений и обеспечения безопасности. Продолжая работу с сайтом, Вы даете согласие на обработку файлов-cookies в соответствии с Политикой в отношении обработки персональных данных. При несогласии Вы можете отключить обработку файлов-cookies в настройках Вашего браузера или закрыть страницу сайта\r\n \r\n
\r\n {/* */}\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n","import React from \"react\";\r\n\r\nexport const Footer: React.FC = () => {\r\n return (\r\n \r\n \r\n \r\n );\r\n}","import * as React from 'react';\r\nimport { Card } from \"primereact/card\";\r\n\r\nimport { AlertComponent } from \"./components/base/AlertComponent\";\r\nimport { AppRouting } from \"./routing/AppRouting\";\r\nimport { commonConstant } from \"./helpers/constants\";\r\nimport { ProgressBarComponent } from \"./components/base/ProgressBarComponent\";\r\nimport CookieConsent from './components/CookieConsent';\r\nimport { Footer } from './components/Footer';\r\n\r\n\r\nexport const App: React.FC = () => {\r\n const header = (\r\n \r\n {commonConstant.appName}\r\n |\r\n

{commonConstant.appName}

\r\n
\r\n );\r\n\r\n\r\n return (\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n