{"version":3,"file":"index-deeffaee.js","sources":["../../src/pages/auth/login/providers/errors/signInError.js","../../src/pages/auth/login/providers/model.jsx","../../src/pages/auth/login/containers/form.jsx","../../src/pages/auth/login/index.jsx"],"sourcesContent":["class SignInError extends Error {\r\n\r\n}\r\n\r\nexport default SignInError;","import PropTypes from 'prop-types';\nimport React, { useMemo, useState, useContext, useCallback, createContext } from 'react';\n\nimport AuthAPIClient from 'src/api/auth';\nimport { useAuth } from 'src/providers/authProvider';\n\nimport SignInError from './errors/signInError';\n\nexport const LoginContext = createContext();\n\nconst LoginProvider = ({ children }) => {\n const { login } = useAuth();\n\n const apiClient = useMemo(() => new AuthAPIClient(), []);\n\n const [email, setEmail] = useState('');\n const [password, setPassword] = useState('');\n\n const errors = useMemo(() => {\n const entries = [];\n\n if (!email) {\n entries.push({ type: 'validation_error', prop: 'email', kind: 'required' });\n }\n\n if (email.length > 128) {\n entries.push({ type: 'validation_error', prop: 'email', kind: 'maxLength', value: 128 });\n }\n\n if (!password) {\n entries.push({ type: 'validation_error', prop: 'password', kind: 'required' });\n }\n\n if (password.length > 25) {\n entries.push({ type: 'validation_error', prop: 'password', kind: 'maxLength', value: 25 });\n }\n\n return entries;\n }, [email, password]);\n\n const canSignIn = useMemo(() => errors.length === 0, [errors]);\n\n const signIn = useCallback(async () => {\n if (!canSignIn) {\n return;\n }\n\n let data;\n\n try {\n data = await apiClient.signIn({ email, password });\n }\n catch (ex) {\n if (ex.statusCode === 400) {\n throw new SignInError();\n }\n }\n\n login(data);\n }, [apiClient, login, canSignIn, email, password]);\n\n const value = useMemo(\n () => ({\n email,\n setEmail,\n password,\n setPassword,\n canSignIn,\n signIn,\n errors,\n }),\n [email, setEmail, password, setPassword, canSignIn, signIn, errors]\n );\n\n return {children};\n};\n\nexport const useLogin = () => useContext(LoginContext);\n\nexport default LoginProvider;\n\nLoginProvider.propTypes = {\n children: PropTypes.node,\n};\n","import { useMemo, useState } from 'react';\n\nimport Stack from '@mui/material/Stack';\nimport TextField from '@mui/material/TextField';\nimport IconButton from '@mui/material/IconButton';\nimport LoadingButton from '@mui/lab/LoadingButton';\nimport InputAdornment from '@mui/material/InputAdornment';\n\nimport { useRouter } from 'src/routes/hooks';\nimport { RouterLink } from 'src/routes/components';\n\nimport { useAlert } from 'src/providers/view/alertProvider';\n\nimport Iconify from 'src/components/iconify';\n\nimport { useLogin } from '../providers/model';\nimport SignInError from \"../providers/errors/signInError\";\n\nexport default function LoginForm() {\n const showAlert = useAlert();\n const router = useRouter();\n const { email, setEmail, password, setPassword, canSignIn, signIn, errors } = useLogin();\n\n const [inProgress, setInProgress] = useState(false);\n\n const handleSignIn = async (e) => {\n e.preventDefault();\n\n setIsEmailDirty(true);\n setIsPasswordDirty(true);\n\n if (canSignIn) {\n setInProgress(true);\n try {\n await signIn();\n }\n catch (ex) {\n if (ex instanceof SignInError) {\n showAlert(\"Некорректное имя пользователя или пароль.\", 'warning');\n\n return;\n }\n\n throw ex;\n }\n finally {\n setInProgress(false);\n }\n router.push('/');\n }\n };\n\n const handleEmailChange = (e) => {\n setIsEmailDirty(true);\n setEmail(e.target.value);\n };\n\n const handlePasswordChange = (e) => {\n setIsPasswordDirty(true);\n setPassword(e.target.value);\n };\n\n const [showPassword, setShowPassword] = useState(false);\n\n const [isEmailDirty, setIsEmailDirty] = useState(false);\n const emailError = useMemo(\n () => (isEmailDirty ? errors.find((x) => x.prop === 'email') : null),\n [errors, isEmailDirty]\n );\n const emailValidationMessage = useMemo(() => {\n if (!emailError) {\n return '';\n }\n\n if (emailError.kind === 'required') {\n return 'Заполните обязательное поле.';\n }\n\n if (emailError.kind === 'maxLength') {\n return `Максимальная длина поля: ${emailError.value}.`;\n }\n\n console.warn('Unknown error type: ', emailError);\n\n return 'Неизвестная ошибка';\n }, [emailError]);\n\n const [isPasswordDirty, setIsPasswordDirty] = useState(false);\n const passwordError = useMemo(\n () => errors.find((x) => (isPasswordDirty ? x.prop === 'password' : null)),\n [errors, isPasswordDirty]\n );\n const passwordValidationMessage = useMemo(() => {\n if (!passwordError) {\n return '';\n }\n\n if (passwordError.kind === 'required') {\n return 'Заполните обязательное поле.';\n }\n\n if (passwordError.kind === 'maxLength') {\n return `Максимальная длина поля: ${passwordError.value}.`;\n }\n\n console.warn('Unknown error type: ', passwordError);\n\n return 'Неизвестная ошибка';\n }, [passwordError]);\n\n return (\n
\n \n \n\n \n setShowPassword(!showPassword)} edge=\"end\">\n \n \n \n ),\n }}\n error={passwordError}\n helperText={passwordValidationMessage}\n />\n \n\n \n \n Забыли пароль?\n \n \n\n \n \n Войти\n \n \n
\n );\n}\n","import { Helmet } from 'react-helmet-async';\n\nimport Card from '@mui/material/Card';\nimport Divider from '@mui/material/Divider';\nimport Typography from '@mui/material/Typography';\n\nimport { RouterLink } from 'src/routes/components';\n\nimport AuthLayout from 'src/layouts/auth';\n\nimport LoginForm from './containers/form';\nimport LoginProvider from './providers/model';\n\n// ----------------------------------------------------------------------\n\nexport default function LoginPage() {\n return (\n <>\n \n Вход | XBooster \n \n\n \n \n Войти в X-Booster\n\n \n У вас еще нет аккаунта?  \n \n Зарегистрируйтесь\n \n \n\n \n \n Или\n \n \n\n \n \n \n \n \n \n );\n}\n"],"names":["SignInError","LoginContext","createContext","LoginProvider","children","login","useAuth","apiClient","useMemo","AuthAPIClient","email","setEmail","useState","password","setPassword","errors","entries","canSignIn","signIn","useCallback","data","ex","value","jsx","useLogin","useContext","LoginProvider$1","PropTypes","LoginForm","showAlert","useAlert","router","useRouter","inProgress","setInProgress","handleSignIn","e","setIsEmailDirty","setIsPasswordDirty","handleEmailChange","handlePasswordChange","showPassword","setShowPassword","isEmailDirty","emailError","x","emailValidationMessage","isPasswordDirty","passwordError","passwordValidationMessage","jsxs","Stack","TextField","InputAdornment","IconButton","Iconify","RouterLink","LoadingButton","LoginPage","Fragment","Helmet","AuthLayout","Card","Typography","Divider"],"mappings":"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"}