{"version":3,"sources":["pages/authentication/Login.tsx"],"names":["Login","navigate","useNavigate","useForm","handleSubmit","control","useState","badLogin","setBadLogin","onSubmit","data","a","login","password","accountService","account","getAccount","role","UserRole","Reseller","Admin","title","sx","backgroundColor","display","flexDirection","minHeight","maxWidth","py","elevation","p","justifyContent","alignItems","pb","to","size","variant","color","mt","flexGrow","id","name","defaultValue","rules","required","maxLength","value","message","render","field","error","fieldState","fullWidth","autoFocus","label","autoComplete","helperText","type","pt","my","component","RouterLink","href"],"mappings":"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","file":"static/js/22.1d884f43.chunk.js","sourcesContent":["import { useState } from 'react';\r\nimport { Link as RouterLink, useNavigate } from 'react-router-dom';\r\nimport { Box, Button, Card, CardContent, Container, TextField, Typography, Divider, Link } from '@mui/material';\r\nimport { Logo } from '../../components/Logo';\r\nimport { Title } from '../../components/Title';\r\nimport { useForm, Controller, SubmitHandler } from 'react-hook-form';\r\nimport { accountService, UserRole } from '../../account.service';\r\n\r\ninterface FormData {\r\n    login: string;\r\n    password: string;\r\n}\r\n\r\nconst Login = () => {\r\n    const navigate = useNavigate();\r\n    const { handleSubmit, control } = useForm<FormData>();\r\n    const [badLogin, setBadLogin] = useState<boolean>(false);\r\n\r\n    const onSubmit: SubmitHandler<FormData> = async (data: FormData) => {\r\n        setBadLogin(false);\r\n        const { login, password } = data;\r\n        const result = await accountService.login(login, password);\r\n        if (result) {\r\n            const account = accountService.getAccount();\r\n            switch (account.role) {\r\n                case UserRole.Reseller:\r\n                    navigate('/reseller/orders');\r\n                    break;\r\n                case UserRole.Admin:\r\n                    navigate('/kb/');\r\n                    break;\r\n                default:\r\n                    navigate('/client/orders');\r\n                    break;\r\n            }\r\n        } else {\r\n            setBadLogin(true);\r\n        }\r\n    };\r\n\r\n    return (\r\n        <>\r\n            <Title title=\"Sign In\" />\r\n            <Box\r\n                sx={{\r\n                    backgroundColor: 'background.default',\r\n                    display: 'flex',\r\n                    flexDirection: 'column',\r\n                    minHeight: '100vh',\r\n                }}\r\n            >\r\n                <Container maxWidth=\"sm\" sx={{ py: '80px' }}>\r\n                    <Card elevation={6} sx={{ p: 4 }}>\r\n                        <CardContent\r\n                            sx={{\r\n                                display: 'flex',\r\n                                flexDirection: 'column',\r\n                                p: 4,\r\n                            }}\r\n                        >\r\n                            <Box\r\n                                sx={{\r\n                                    display: 'flex',\r\n                                    justifyContent: 'center',\r\n                                    alignItems: 'center',\r\n                                    flexDirection: 'column',\r\n                                }}\r\n                            >\r\n                                <Box sx={{ pb: 2 }}>\r\n                                    <RouterLink to=\"/\">\r\n                                        <Logo size={64} />\r\n                                    </RouterLink>\r\n                                </Box>\r\n                                <Typography variant=\"h4\">Sign in</Typography>\r\n                                <Typography color=\"textSecondary\" sx={{ mt: 2 }} variant=\"body1\">\r\n                                    Sign in on LSoft Technologies Support platform\r\n                                </Typography>\r\n                            </Box>\r\n                            <Box\r\n                                sx={{\r\n                                    flexGrow: 1,\r\n                                    mt: 5,\r\n                                }}\r\n                            >\r\n                                <form id=\"login\" onSubmit={handleSubmit(onSubmit)}>\r\n                                    <Controller\r\n                                        name=\"login\"\r\n                                        control={control}\r\n                                        defaultValue=\"\"\r\n                                        rules={{\r\n                                            required: 'Email (login) is required',\r\n                                            maxLength: {\r\n                                                value: 150,\r\n                                                message: 'Email (login) cannot exceed 150 characters',\r\n                                            },\r\n                                            // pattern: {\r\n                                            //     value: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,}$/i,\r\n                                            //     message: 'Invalid email address',\r\n                                            // },\r\n                                        }}\r\n                                        render={({ field, fieldState: { error } }) => (\r\n                                            <TextField\r\n                                                {...field}\r\n                                                fullWidth\r\n                                                autoFocus\r\n                                                label=\"Email (login)\"\r\n                                                autoComplete=\"email\"\r\n                                                error={!!error}\r\n                                                helperText={error ? error.message : null}\r\n                                            />\r\n                                        )}\r\n                                    />\r\n                                    <Controller\r\n                                        name=\"password\"\r\n                                        control={control}\r\n                                        defaultValue=\"\"\r\n                                        rules={{\r\n                                            required: 'Password is required',\r\n                                            maxLength: {\r\n                                                value: 25,\r\n                                                message: 'Password cannot exceed 25 characters',\r\n                                            },\r\n                                        }}\r\n                                        render={({ field, fieldState: { error } }) => (\r\n                                            <TextField\r\n                                                {...field}\r\n                                                fullWidth\r\n                                                label=\"Password\"\r\n                                                autoComplete=\"password\"\r\n                                                type=\"password\"\r\n                                                sx={{ mt: 3 }}\r\n                                                error={!!error}\r\n                                                helperText={error ? error.message : null}\r\n                                            />\r\n                                        )}\r\n                                    />\r\n                                    {badLogin && (\r\n                                        <Box sx={{ pt: 1, color: 'red' }}>\r\n                                            <Typography variant=\"subtitle2\">Email or password is incorrect</Typography>\r\n                                        </Box>\r\n                                    )}\r\n                                    <Button\r\n                                        sx={{ mt: 3 }}\r\n                                        fullWidth\r\n                                        color=\"primary\"\r\n                                        size=\"large\"\r\n                                        type=\"submit\"\r\n                                        variant=\"contained\"\r\n                                    >\r\n                                        Sign in\r\n                                    </Button>\r\n                                </form>\r\n                            </Box>\r\n                            <Divider sx={{ my: 3 }} />\r\n                            <Link\r\n                                component={RouterLink}\r\n                                to=\"/account/create-account\"\r\n                                color=\"textPrimary\"\r\n                                href=\"\"\r\n                                variant=\"body2\"\r\n                            >\r\n                                Create new account\r\n                            </Link>\r\n                            <Link\r\n                                component={RouterLink}\r\n                                to=\"/account/forgot-password\"\r\n                                sx={{ mt: 3 }}\r\n                                href=\"\"\r\n                                color=\"textPrimary\"\r\n                                variant=\"body2\"\r\n                            >\r\n                                Forgot password?\r\n                            </Link>\r\n                        </CardContent>\r\n                    </Card>\r\n                </Container>\r\n            </Box>\r\n        </>\r\n    );\r\n};\r\nexport default Login;\r\n"],"sourceRoot":""}