{"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":"qSAoLeA,UAvKD,WACV,IAAMC,EAAWC,cADD,EAEkBC,cAA1BC,EAFQ,EAERA,aAAcC,EAFN,EAEMA,QAFN,EAGgBC,oBAAkB,GAHlC,mBAGTC,EAHS,KAGCC,EAHD,KAKVC,EAAiC,uCAAG,WAAOC,GAAP,mBAAAC,EAAA,6DACtCH,GAAY,GACJI,EAAoBF,EAApBE,MAAOC,EAAaH,EAAbG,SAFuB,SAGjBC,IAAeF,MAAMA,EAAOC,GAHX,mCAK5BE,EAAUD,IAAeE,aALG,KAM1BD,EAAQE,KANkB,cAOzBC,IAASC,SAPgB,UAUzBD,IAASE,MAVgB,2BAQ1BnB,EAAS,oBARiB,oCAW1BA,EAAS,QAXiB,oCAc1BA,EAAS,kBAdiB,qDAkBlCO,GAAY,GAlBsB,4CAAH,sDAsBvC,OACI,qCACI,cAAC,IAAD,CAAOa,MAAM,YACb,cAAC,IAAD,CACIC,GAAI,CACAC,gBAAiB,qBACjBC,QAAS,OACTC,cAAe,SACfC,UAAW,SALnB,SAQI,cAAC,IAAD,CAAWC,SAAS,KAAKL,GAAI,CAAEM,GAAI,QAAnC,SACI,cAAC,IAAD,CAAMC,UAAW,EAAGP,GAAI,CAAEQ,EAAG,GAA7B,SACI,eAAC,IAAD,CACIR,GAAI,CACAE,QAAS,OACTC,cAAe,SACfK,EAAG,GAJX,UAOI,eAAC,IAAD,CACIR,GAAI,CACAE,QAAS,OACTO,eAAgB,SAChBC,WAAY,SACZP,cAAe,UALvB,UAQI,cAAC,IAAD,CAAKH,GAAI,CAAEW,GAAI,GAAf,SACI,cAAC,IAAD,CAAYC,GAAG,IAAf,SACI,cAAC,IAAD,CAAMC,KAAM,SAGpB,cAAC,IAAD,CAAYC,QAAQ,KAApB,qBACA,cAAC,IAAD,CAAYC,MAAM,gBAAgBf,GAAI,CAAEgB,GAAI,GAAKF,QAAQ,QAAzD,+DAIJ,cAAC,IAAD,CACId,GAAI,CACAiB,SAAU,EACVD,GAAI,GAHZ,SAMI,uBAAME,GAAG,QAAQ/B,SAAUL,EAAaK,GAAxC,UACI,cAAC,IAAD,CACIgC,KAAK,QACLpC,QAASA,EACTqC,aAAa,GACbC,MAAO,CACHC,SAAU,4BACVC,UAAW,CACPC,MAAO,IACPC,QAAS,+CAOjBC,OAAQ,gBAAGC,EAAH,EAAGA,MAAqBC,EAAxB,EAAUC,WAAcD,MAAxB,OACJ,cAAC,IAAD,2BACQD,GADR,IAEIG,WAAS,EACTC,WAAS,EACTC,MAAM,gBACNC,aAAa,QACbL,QAASA,EACTM,WAAYN,EAAQA,EAAMH,QAAU,WAIhD,cAAC,IAAD,CACIN,KAAK,WACLpC,QAASA,EACTqC,aAAa,GACbC,MAAO,CACHC,SAAU,uBACVC,UAAW,CACPC,MAAO,GACPC,QAAS,yCAGjBC,OAAQ,gBAAGC,EAAH,EAAGA,MAAqBC,EAAxB,EAAUC,WAAcD,MAAxB,OACJ,cAAC,IAAD,2BACQD,GADR,IAEIG,WAAS,EACTE,MAAM,WACNC,aAAa,WACbE,KAAK,WACLnC,GAAI,CAAEgB,GAAI,GACVY,QAASA,EACTM,WAAYN,EAAQA,EAAMH,QAAU,WAI/CxC,GACG,cAAC,IAAD,CAAKe,GAAI,CAAEoC,GAAI,EAAGrB,MAAO,OAAzB,SACI,cAAC,IAAD,CAAYD,QAAQ,YAApB,8CAGR,cAAC,IAAD,CACId,GAAI,CAAEgB,GAAI,GACVc,WAAS,EACTf,MAAM,UACNF,KAAK,QACLsB,KAAK,SACLrB,QAAQ,YANZ,0BAYR,cAAC,IAAD,CAASd,GAAI,CAAEqC,GAAI,KACnB,cAAC,IAAD,CACIC,UAAWC,IACX3B,GAAG,0BACHG,MAAM,cACNyB,KAAK,GACL1B,QAAQ,QALZ,gCASA,cAAC,IAAD,CACIwB,UAAWC,IACX3B,GAAG,2BACHZ,GAAI,CAAEgB,GAAI,GACVwB,KAAK,GACLzB,MAAM,cACND,QAAQ,QANZ","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":""}