{"version":3,"sources":["utils/useWindowSize.js","components/Title.js","components/Formstyles.jsx","components/EditToolbar.js","utils/helpers.jsx","registration/css/Styles.jsx","components/DateTimeInput/Picker.js","components/DateTimeInput/index.js","config.js","provider/authProvider.js","provider/parseError.js","provider/dataProvider.js","MyUserMenu.js","MyAppBar.js","assest/main-logo.png","user/index.js","matchymatchy/index.js","company/index.js","email_domain/index.js","notification_group/index.js","notification_delivery/index.js","notification_filter/index.js","token/index.js","cewl/CewlCreate.js","components/ShowToolbar.js","cewl/CewlEdit.js","components/CustomTooltip.jsx","cewl/CewlList.js","cewl/index.js","ioc/index.js","deal_registration/index.js","processed/index.js","notification/index.js","dashboard/Dashboard.js","dashboard/index.ts","auth/images/ctci_icon_only.svg","auth/images/warp_speed.jpg","layout/Notification.tsx","auth/MyCoolLoginPage.js","user/EditProfileForm.jsx","auth/Requirement.jsx","auth/Requirements.jsx","auth/FancyChangePassword.jsx","auth/ChangePassword.js","auth/FancyForgotPasswordForm.js","customRoutes.js","user/EditProfile.js","auth/ForgotPassword.js","components/ProgressBar.jsx","App.js","agGridLicenseKey.js","reportWebVitals.js","index.js"],"names":["useWindowSize","useState","width","undefined","height","windowSize","setWindowSize","useEffect","window","handleResize","innerWidth","innerHeight","addEventListener","removeEventListener","Title","value","record","values","setValues","username","company_name","email_domain","notification_group_name","notification_delivery_name","filter_name","token_name","vendor","id_ref","id","ml","FormStyles","usePreferences","preferences","windowWidth","makeStyles","wrapper","display","justifyContent","flexWrap","show","left__block","right__block","alignItems","big_block","maxWidth","block","label__wrapper","fontWeight","label","paddingBottom","marginBottom","block__item","new_block__item","flexGrow","item","minWidth","margin","item_small","item__number","border","borderColor","borderRadius","boxSizing","padding","multiline","overflow","maxHeight","country_picker","paddingLeft","content","background","bool","switch","marginRight","empty","empty_p","custom__box","copy__button","role_picker","legend","color","transform","position","zIndex","paddingRight","fontSize","fontFamily","date","link","textDecoration","button","alignSelf","backgroundColor","button__password","cursor","transition","baseline","ToolBar","basePath","props","component","Link","to","style","CreateWithMutation","mutate","notify","redirect","resource","type","payload","data","returnPromise","body","parameter","detail","EditWithMutation","StyledContainer","styled","main","Picker","Component","locale","setLocale","source","className","isRequired","providerOptions","fullWidth","onChange","helperText","defaultValue","translate","useTranslate","setValue","useInput","input","meta","touched","error","navigator","language","moment","isValid","handleChange","useCallback","Date","parse","toISOString","LocalizationProvider","FieldTitle","split","UTC","toLocaleString","timeZone","Intl","DateTimeFormat","resolvedOptions","parseValue","clearText","cancelText","onBlur","renderInput","TextField","variant","defaultProps","options","labelTime","dateAdapter","MomentUtils","DateTimeInput","DateTimePicker","location","origin","protocol","current_hostname","hostname","production_api_host","test_myEndpoints","REACT_APP_CRUD_ADMIN_ENDPOINT","REACT_APP_CRUD_CEWL_ENDPOINT","REACT_APP_CRUD_LEGIT_ENDPOINT","REACT_APP_CRUD_ADMIN_LOGIN_ENDPOINT","REACT_APP_CRUD_ADMIN_REGISTER_ENDPOINT","REACT_APP_CRUD_ADMIN_CHANGE_PASSWORD_ENDPOINT","REACT_APP_CRUD_ADMIN_FORGOT_PASSWORD_ENDPOINT","REACT_APP_DOCUMENTATION_URL","REACT_APP_ADDRESS_CONFIRMATION_ENDPOINT","REACT_APP_TEST_NOTIFICATION_ENDPOINT","REACT_APP_CHECK_AND_NOTIFY_ENDPOINT","REACT_APP_NOTIFICATION_ENDPOINT","production_myEndpoints","myEndpoints","startsWith","console","log","process","authProvider","login","password","request","Request","method","JSON","stringify","headers","Headers","fetch","then","response","json","status","dompurify","sanitize","redirect_url","href","password_change_url","localStorage","setItem","Error","auth","access_token","firstname","lastname","nickname","roles","logout","removeItem","Promise","resolve","checkAuth","getItem","reject","message","checkError","getPermissions","access_token_exist","role","decodeJwt","rls","getIdentity","fullName","user_id","avatar","parseRFC7807Error","defaultParseMessage","defaultParseStatus","HttpError","DataProvider","apiUrl","httpClient","fetchUtils","fetchJson","params","GET_MANY","all","ids","map","responses","catch","UPDATE_MANY","length","filteredData","filter","DELETE_MANY","url","CREATE","GET_ONE","GET_LIST","pagination","page","perPage","sort","field","order","query","page_size","ordering","cewl_query","filter_download","output_format","GET_MANY_REFERENCE","target","UPDATE","DELETE","convertDataRequestToHttp","Object","keys","total","has","parseInt","get","pop","previousData","convertHttpResponse","MyUserMenu","UserMenu","MenuItemLink","primaryText","leftIcon","React","memo","useStyles","title","flex","textOverflow","whiteSpace","marginLeft","appbar","spacer","logo","MyAppBar","userRole","setUserRole","classes","permissions","usePermissions","AppBar","userMenu","Box","mt","mb","pl","p","Toolbar","src","alt","Typography","UserCreateLazy","lazy","UserEditLazy","UserListLazy","UserShowLazy","User","list","create","edit","matchyListLazy","matchyCewl","CompanyCreateLazy","CompanyEditLazy","Company","EmailDomainCreateLazy","EmailDomain","NotificationGroup","NotificationDelivery","NotificationFilters","Token","CewlCreate","setData","cve","setCve","setError","dataProvider","useDataProvider","useMutation","useNotify","useRedirect","save","Create","undoable","SimpleForm","toolbar","TextInput","allowEmpty","e","validate","required","Button","startIcon","onClick","getOne","err","disabled","NumberInput","borderBottom","BooleanInput","AutocompleteInput","emptyText","choices","name","ShowToolBar","CewlEdit","newData","setNewData","ref","useRef","useShowController","PostEditActions","TopToolbar","EditButton","Edit","actions","ShowToolbar","notification_date","product","cve_date","date_added","year","cwe","summary_note","external_note","internal_note","admiralty_score","cve_reference","vulnerability_type","description","honeypot","intel","research","notified","enabled","enable_from_date","removed","removed_date","base_score","base_metric_v2","special","base_metric_v3","forwardRef","useImperativeHandle","getReactContainerClasses","rel","header","root","search_input","search_button","right","CEWLHeader","timestamp_to_string","tz","format","show_truncated","columnDefs","headerName","headerTooltip","aggFunc","checkboxSelection","column","columnApi","isPivotMode","getRowGroupColumns","cellRenderer","enablePivot","valueFormatter","chartDataType","tooltipComponent","tooltipValueGetter","hide","errorMessage","gridOptions","columnTypes","nonEditableColumn","editable","dateColumn","suppressMenu","defaultColDef","resizable","sortable","enableRowGroup","enableValue","getMainMenuItems","getId","menu","defaultItems","slice","push","action","api","addCellRange","rowStartPinned","rowEndPinned","columnStart","columnEnd","getRowStyle","enableRangeSelection","sideBar","toolPanels","enableCharts","rowGroupPanelShow","pivotPanelShow","statusBar","statusPanels","statusPanel","align","frameworkComponents","customNoRowsOverlay","noRowsMessageFunc","customTooltip","CustomTooltip","noRowsOverlayComponent","noRowsOverlayComponentParams","overlayLoadingTemplate","tooltip","class","handleKeyDown","event","key","preventDefault","Cewl","searchBar","setSearchBar","rowData","setRowData","showData","setShowData","notifications","setNotifications","gridTheme","setGridTheme","processedCounter","setProcessedCounter","timeFilter","setTimeFilter","timeSearch","setTimeSearch","time","setTime","history","useHistory","localUserTimezone","jstz","determine","isMount","isMountRef","current","useIsMount","doSomethingWith","hideOverlay","showNoRowsOverlay","q_value","includes","myHeaders","Authorization","mode","status_code","indexOf","urlSearch","decodeURIComponent","onNotificationBarChange","hasOwnProperty","toggleProcessed","setFilterModel","rows","forEachNode","node","processed","redrawRows","rowNodes","prev","open","setOpen","loading","active","result","filters","Autocomplete","size","onOpen","onClose","getOptionDisabled","option","getOptionLabel","InputProps","endAdornment","Fragment","CircularProgress","AsyncAutocomplete","Grid","container","wrap","xs","lg","placeholder","newValue","onRequestSearch","onCancelSearch","autoFocus","onKeyDown","Tooltip","htmlFor","IconButton","pathname","search","selectedRow","getSelectedNodes","cve_id","updateProcessed","ToggleButtonGroup","exclusive","newTime","ToggleButton","textTransform","copy","redirectEdit","redirectShow","rowGroup","Ioc","DealRegistration","Processed","Notification","ReactGridLayout","WidthProvider","Responsive","mainTitle","list_item","paddingTop","hidden_block","base_documentation","Dashboard","validateToken","breakpoints","md","sm","xxs","cols","rowHeight","isResizable","verticalCompact","Card","x","y","w","h","static","CardHeader","CardContent","List","ListItem","theme","palette","light","contrastText","warning","undo","primary","autoHideDuration","rest","setErrorMessage","notification","useSelector","getNotification","dispatch","useDispatch","styles","useLocation","handleRequestClose","handleExited","complete","undoableEventEmitter","emit","isUndo","hideNotification","handleUndo","Snackbar","messageArgs","disableWindowBlurListener","onExited","ContentProps","classnames","Copyright","getFullYear","divStyle","backgroundPosition","backgroundSize","backgroundRepeat","backgroundImage","Image","paper","flexDirection","form","marginTop","spacing","submit","boxShadow","text","MyCoolLoginPage","setUsername","setPassword","remember","setRemember","useLogin","loggedInUser","isChecked","Container","CssBaseline","Paper","m","pt","pb","Icon","YourLogo","onSubmit","autoComplete","FormControlLabel","control","Checkbox","checked","EditProfileForm","smallerText","Requirement","isvalid","validMessage","invalidMessage","Requirements","long","number","mixed","createTheme","typography","join","snackBoxStyles","FancyChangePassword","snackBox","longEnough","hasNumber","hasMixed","hasSpecial","openSnackbar","setOpenSnackbar","setPreferences","handleClose","reason","Alert","elevation","parseJSON","ok","initialValues","new_password","old_password","backendError","test","resetForm","setErrors","setStatus","setSubmitting","errors","entries","constructor","token","requestOptions","endPoint","error_json","the_result","the_common_error","handleSubmit","isSubmitting","ThemeProvider","oldPassword","justify","severity","ChangePassword","FancyForgotPasswordForm","setTimeout","email","RegisterLazy","customRoutes","exact","path","noLayout","ProgressBar","LinearProgress","LicenseManager","setLicenseKey","Accept","set","themeFromType","merge","defaultTheme","blue","secondary","dark","overrides","RaMenuItem","gutters","MuiFilledInput","components","MuiToolbar","styleOverrides","MyMenu","icon","MyLayout","Layout","appBar","Suspense","fallback","children","App","document","i18nProvider","polyglotI18nProvider","englishMessages","allowMissing","onMissingKey","_","__","Admin","catchAll","dashboard","loginPage","layout","disableTelemetry","Resource","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","getElementById"],"mappings":"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","file":"static/js/main.b389c33f.chunk.js","sourcesContent":["import { useState, useEffect } from 'react';\n\n// Hook\nconst useWindowSize = () => {\n // Initialize state with undefined width/height so server and client renders match\n // Learn more here: https://joshwcomeau.com/react/the-perils-of-rehydration/\n const [windowSize, setWindowSize] = useState({\n width: undefined,\n height: undefined,\n });\n\n useEffect(() => {\n // only execute all the code below in client side\n if (typeof window !== 'undefined') {\n // Handler to call on window resize\n function handleResize() {\n // Set window width/height to state\n setWindowSize({\n width: window.innerWidth,\n height: window.innerHeight,\n });\n }\n\n // Add event listener\n window.addEventListener(\"resize\", handleResize);\n\n // Call handler right away so state gets updated with initial window size\n handleResize();\n\n // Remove event listener on cleanup\n return () => window.removeEventListener(\"resize\", handleResize);\n }\n }, []); // Empty array ensures that effect is only run on mount\n return [windowSize.width, windowSize.height];\n};\n\nexport default useWindowSize;","import React, { useState, useEffect } from \"react\";\nimport { Box } from \"@material-ui/core\";\n\nconst Title = ({ value, record }) => {\n const [values, setValues] = useState(\"\");\n\n useEffect(() => {\n value && setValues(value);\n record && record.username && setValues(record.username);\n record && record.company_name && setValues(record.company_name);\n record && record.email_domain && setValues(record.email_domain);\n record &&\n record.notification_group_name &&\n setValues(record.notification_group_name);\n record &&\n record.notification_delivery_name &&\n setValues(record.notification_delivery_name);\n record && record.filter_name && setValues(record.filter_name);\n record && record.token_name && setValues(record.token_name);\n record && record.vendor && setValues(record.vendor);\n record && record.id_ref && setValues(record.id);\n }, [value, record]);\n\n return {values};\n};\n\nexport default Title;\n","import { makeStyles } from \"@material-ui/core/styles\";\nimport { usePreferences } from \"@react-admin/ra-preferences\";\nimport useWindowSize from \"../utils/useWindowSize\";\n\nexport const FormStyles=() => {\n const [preferences]=usePreferences(\"theme\");\n const [windowWidth]=useWindowSize();\n\n return makeStyles({\n wrapper: {\n \"& > div\": {\n display: \"flex\",\n justifyContent: \"space-between\",\n flexWrap: \"wrap\",\n }\n },\n show: {\n display: \"flex\",\n flexWrap: \"wrap\",\n justifyContent: \"space-between\",\n },\n left__block: {\n width: \"fit-content\",\n },\n right__block: {\n display: \"flex\",\n flexWrap: \"wrap\",\n height: \"fit-content\",\n width: windowWidth < 1684 ? \"100%\" : \"270px\",\n justifyContent: windowWidth < 820 ? \"center\" : \"null\",\n alignItems: windowWidth < 820 ? \"center\" : \"null\",\n },\n big_block: {\n display: \"flex\",\n flexWrap: \"wrap\",\n maxWidth: \"1080px\",\n\n },\n block: {\n display: \"flex\",\n flexWrap: \"wrap\",\n alignItems: \"flex-start\",\n width: \"fit-content\",\n justifyContent: windowWidth < 820 ? \"center\" : \"null\",\n maxWidth: \"1080px\",\n },\n label__wrapper: {\n display: \"flex\",\n width: \"100%\",\n fontWeight:\"bold\"\n },\n label: {\n display: \"flex\",\n alignItems: \"center\",\n width: \"100%\",\n paddingBottom: \"10px\",\n marginBottom:\"10px\"\n }, \n block__item: {\n display: \"flex\",\n flexWrap: \"wrap\",\n alignItems: \"center\",\n justifyContent: windowWidth < 820 ? \"center\" : \"null\",\n },\n new_block__item: {\n display: \"flex\",\n flexWrap: windowWidth < 1380 ? \"wrap\" : \"nowrap\",\n flexGrow:2,\n alignItems: \"center\",\n justifyContent: windowWidth < 820 ? \"center\" : \"null\",\n },\n item: {\n width: \"255px\",\n minWidth: \"255px\",\n margin: \"8px 15px 4px 0\",\n height: \"64px\",\n },\n item_small: {\n width: \"140px\",\n minWidth: \"140px\",\n margin: \"8px 15px 4px 0\",\n height: \"80px\",\n },\n item__number: {\n border: \"1px solid rgba(0, 0, 0, 0.3)\",\n borderColor: preferences === \"dark\" ? \"#767676\" : \"rgba(0, 0, 0, 0.3)\",\n borderRadius: \"3px\",\n boxSizing: \"border-box\",\n width: \"255px\",\n padding: \"9px 0px 9px 14px\",\n margin: \"-16px 15px 4px 0\",\n \"&:hover\": {\n borderColor: preferences === \"dark\" ? \"#fff\" : \"#000\",\n },\n },\n multiline: {\n width: \"255px\",\n minWidth: \"255px\",\n margin: \"8px 15px 4px 0\",\n \"& > div > textarea\" : {\n overflow: \"auto !important\",\n maxHeight: \"100px\",\n }\n },\n country_picker: {\n padding: \"0 5px\",\n border: \"1px solid rgba(0, 0, 0, 0.3)\",\n borderColor: preferences === \"dark\" ? \"#767676\" : \"rgba(0, 0, 0, 0.3)\",\n borderRadius: \"3px\",\n width: \"244px\",\n height: \"38px\",\n \"&:hover\": {\n borderColor: preferences === \"dark\" ? \"#fff\" : \"#000\",\n },\n \"& > div > div\": {\n // cursor: \"text\",\n paddingLeft: \"5px\",\n },\n \"&:before\": {\n content: \"none !important\",\n },\n \"&:after\": {\n content: \"none !important\",\n },\n \"& > div > div:focus\": {\n background: \"none\",\n },\n },\n bool: {\n height: \"64px\",\n width: \"255px\",\n margin: \"8px 15px 4px 0\",\n },\n switch: {\n paddingLeft: \"11px\",\n marginRight: \"0\",\n },\n\n empty: {\n width: \"255px\",\n margin: \"8px 15px 4px 0\",\n height: \"64px\",\n },\n empty_p: {\n empty: {\n width: \"100%\",\n height: \"10px\",\n },\n },\n custom__box: {\n width: \"255px\",\n minWidth: \"255px\",\n height: \"64px\",\n margin: \"8px 15px 4px 0\",\n },\n copy__button: {\n \"& > button\" :{\n padding: \"0\"\n }\n },\n role_picker: {\n width: \"255px\",\n minWidth: \"255px\",\n height: \"64px\",\n margin: \"8px 15px 4px 0\",\n \"& > div\": {\n margin: \"0\"\n }\n },\n legend: {\n background: preferences === \"dark\" ? \"#424242\" : \"#fff\",\n color: preferences === \"dark\" ? \"#c6c6c6\" : \"#757575\",\n transform: \"translate(3px, -10px) scale(0.75)\",\n position: \"absolute\",\n zIndex: 1,\n paddingLeft: \"5px\",\n paddingRight: \"10px\",\n fontSize: \"1rem\",\n fontFamily: \"Roboto\",\n },\n date: {\n width: \"100%\",\n minWidth: \"100%\",\n \"& > div\": {\n margin: \"0\",\n width: \"100%\",\n },\n \"& > div > div > input\": {\n height: \"3px\",\n width: \"185px\",\n },\n \"& > div > label\": {\n transform: \"translate(12px, 13px) scale(1)\",\n },\n \"&:first-child\": {\n // marginRight: \"15px\",\n },\n },\n link: {\n width: windowWidth > 638 ? \"100%\" : \"255px\",\n minWidth: windowWidth > 638 ? \"525px\" : \"255px\",\n margin: \"8px 15px 4px 0\",\n textDecoration: \"none\",\n \"& > div > textarea\" : {\n overflow: \"auto !important\",\n maxHeight: \"600px\",\n }\n },\n button: {\n alignSelf: \"baseline\",\n margin: \"8px 15px 4px 0\",\n height: \"40px\",\n width: \"255px\",\n minWidth: \"255px\",\n backgroundColor: \"#2196f3\",\n color: \"white\",\n },\n button__password: {\n display: \"flex\",\n boxSizing: \"border-box\",\n width: \"100%\",\n color: \"#2196f3\",\n border: \"1px solid #2196f3\",\n borderRadius: \"4px\",\n height: \"40px\",\n cursor: \"pointer\",\n transition: \"all 250ms cubic-bezier(0.4, 0, 0.2, 1)\",\n \"&:hover\": {\n backgroundColor: \"#2196f3\",\n color: \"#fff\",\n }\n },\n baseline: {\n alignItems: \"flex-start\"\n },\n });\n\n}","import React from \"react\";\nimport { SaveButton, DeleteButton, Button, Toolbar } from \"react-admin\";\nimport { Link } from \"react-router-dom\";\nimport KeyboardReturnIcon from \"@material-ui/icons/KeyboardReturn\";\n\n\nconst ToolBar = ({ basePath, ...props }) => {\n return (\n \n \n \n \n \n \n \n );\n};\n\nexport default ToolBar;\n","export const CreateWithMutation = async (\n values,\n mutate,\n notify,\n redirect,\n resource\n) => {\n try {\n await mutate(\n {\n type: \"create\",\n resource: resource,\n payload: {data: values},\n },\n {returnPromise: true}\n );\n notify(\"Saved\", \"info\");\n redirect(`/${resource}`);\n } catch (error) {\n if (error && error.body && error.body.parameter) {\n if (error.body.detail) {\n notify(error.body.detail, \"error\");\n return error.body.parameter;\n } else {\n return error.body.parameter;\n }\n } else {\n notify(\"Error processing request\", \"error\");\n }\n }\n};\n\nexport const EditWithMutation = async (\n values,\n mutate,\n notify,\n redirect,\n resource\n) => {\n try {\n await mutate(\n {\n type: \"update\",\n resource: resource,\n payload: {id: values.id, data: values},\n },\n {returnPromise: true}\n );\n notify(\"Saved\", \"success\");\n redirect(`/${resource}`);\n } catch (error) {\n if (error && error.body && error.body.parameter) {\n if (error.body.detail) {\n notify(error.body.detail, \"error\");\n return error.body.parameter;\n } else {\n return error.body.parameter;\n }\n } else {\n notify(\"Error processing request\", \"error\");\n }\n }\n};\n","import styled from \"styled-components\";\n\n// Create a Title component that'll render an

tag with some styles\nconst StyledContainer = styled.main`\n padding: 0px;\n margin: 0px auto;\n max-width: 1920px;\n max-height: 1080px;\n\n background-color: white;\n\n button {\n display: flex;\n margin: 24px 0 16px;\n padding: 16px 24px;\n\n background-color: rebeccapurple;\n border: none;\n box-shadow: 0 4px 6px rgba(50, 50, 93, 0.11), 0 1px 3px rgba(0, 0, 0, 0.08);\n color: white;\n cursor: pointer;\n font-weight: 700;\n line-height: 1;\n outline: none;\n text-align: left;\n text-decoration: none;\n text-transform: capitalize;\n transition: all 0.15s ease;\n white-space: nowrap;\n width: auto;\n\n &:active,\n &:focus,\n &:hover {\n transform: translateY(-1px);\n box-shadow: 0 7px 14px rgba(50, 50, 93, 0.1),\n 0 3px 6px rgba(0, 0, 0, 0.08);\n }\n }\n\n button,\n input,\n label,\n textarea {\n border-radius: 3px;\n }\n\n label,\n textarea {\n display: block;\n width: 100%;\n }\n\n label {\n margin: 16px 0 8px;\n font-weight: 500;\n // text-transform: capitalize;\n }\n\n h1 {\n margin-top: 0;\n }\n\n .error {\n display: block;\n margin-bottom: 24px;\n margin-top: 8px;\n\n color: red;\n font-size: 1.4rem;\n }\n\n .strength-meter {\n label {\n padding: 4px 0;\n // width: 463px;\n }\n\n svg {\n margin-right: 8px;\n fill: lightgrey;\n transition: 0.2s fill ease;\n }\n\n .valid {\n svg {\n fill: rebeccapurple;\n }\n }\n }\n`;\n\nexport default StyledContainer;\n","import React, { useCallback, useState, useEffect } from \"react\";\nimport { FieldTitle, useInput, useTranslate } from \"react-admin\";\nimport { LocalizationProvider } from \"@material-ui/pickers\";\nimport { TextField } from \"@material-ui/core\";\nimport MomentUtils from \"@date-io/moment\";\nimport moment from \"moment\";\nimport \"moment/min/locales\";\n\nconst Picker = ({ Component, ...props }) => {\n const [locale, setLocale] = useState(\"\");\n const {\n label,\n source,\n resource,\n className,\n isRequired,\n providerOptions,\n fullWidth,\n onChange,\n helperText,\n defaultValue,\n } = props;\n\n const translate = useTranslate();\n const [value, setValue] = useState();\n const { input, meta } = useInput({ source });\n const { touched, error } = meta;\n\n useEffect(() => {\n const locale = navigator.language;\n moment().locale(locale).isValid() ? setLocale(locale) : setLocale(\"en\");\n }, []);\n\n useEffect(() => {\n if (input && input.value) {\n setValue(input.value);\n }\n if (defaultValue) {\n setValue(defaultValue);\n }\n }, [defaultValue, input]);\n\n const handleChange = useCallback(\n (value) => {\n onChange(value);\n Date.parse(value)\n ? input.onChange(value.toISOString())\n : input.onChange(null);\n },\n [input, onChange]\n );\n\n const parseValue = (value) => {\n const date = value.split(/[^0-9]/);\n let newDate =new Date(Date.UTC(date[0], date[1] - 1, date[2], date[3], date[4], date[5]));\n let usDate = newDate.toLocaleString(\"en-US\", {timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone});\n return usDate;\n };\n\n return (\n
\n\n
\n \n \n }\n margin=\"normal\"\n error={!!(touched && error)}\n helperText={touched && error}\n value={value ? parseValue(value) : null}\n clearText={translate(\"ra.action.clear_input_value\")}\n cancelText={translate(\"ra.action.cancel\")}\n onChange={(date) => handleChange(date)}\n onBlur={() =>\n input.onBlur(\n input.value ? new Date(input.value).toISOString() : null\n )\n }\n renderInput={(props) => (\n \n )}\n />\n \n
\n
\n );\n};\n\nPicker.defaultProps = {\n input: {},\n isRequired: false,\n meta: { touched: false, error: false },\n options: {},\n resource: \"\",\n source: \"\",\n labelTime: \"\",\n className: \"\",\n providerOptions: {\n dateAdapter: MomentUtils,\n },\n fullWidth: false,\n onChange: () => {},\n};\n\nexport default Picker;\n","import React from \"react\";\nimport { DateTimePicker } from \"@material-ui/pickers\";\nimport Picker from \"./Picker\";\n\nexport const DateTimeInput = (props) => (\n \n);\n","// A way to handle global variables\n// https://stackoverflow.com/questions/34351804/how-to-declare-a-global-variable-in-react\n// shouldn't need this after react-script 2.1.3: https://create-react-app.dev/docs/adding-custom-environment-variables/\n// import dotenv from 'dotenv';\n// dotenv.config();\n\nconst location_origin = window.location.origin\nconst http_protocol = window.location.protocol\nconst current_hostname = window.location.hostname;\nconst api_runs_on_port = \"5000\"\nconst production_api_host = \"https://api.ctci.ai/\"\n\nconst localhost = \"127.0.0.1\";\n\nconst local_host_myEndpoints = {\n\n REACT_APP_CRUD_ADMIN_ENDPOINT: http_protocol + \"//\" + localhost + \":\" + api_runs_on_port + \"/api/v1\",\n REACT_APP_CRUD_CEWL_ENDPOINT: http_protocol + \"//\" + localhost + \":\" + api_runs_on_port + \"/api/v1/cewl?q=\",\n REACT_APP_CRUD_LEGIT_ENDPOINT: http_protocol + \"//\" + localhost + \":\" + api_runs_on_port +\"/api/v1/ip/\",\n REACT_APP_CRUD_ADMIN_LOGIN_ENDPOINT: http_protocol + \"//\" + localhost + \":\" + api_runs_on_port + \"/api/v1/login\",\n REACT_APP_CRUD_ADMIN_REGISTER_ENDPOINT: http_protocol + \"//\" + localhost + \":\" + api_runs_on_port + \"/api/v1/register\",\n REACT_APP_CRUD_ADMIN_CHANGE_PASSWORD_ENDPOINT: http_protocol + \"//\" + localhost + \":\" + api_runs_on_port + \"api/v1/change_password\",\n REACT_APP_CRUD_ADMIN_FORGOT_PASSWORD_ENDPOINT: http_protocol + \"//\" + localhost + \":\" + api_runs_on_port + \"/api/v1/forgot_password\",\n REACT_APP_DOCUMENTATION_URL: \"https://ctci.atlassian.net/wiki/spaces/CTCIDOC/overview\",\n REACT_APP_ADDRESS_CONFIRMATION_ENDPOINT: http_protocol + \"//\" + localhost + \":\" + api_runs_on_port + \"/api/v1/resend_confirmation_web\",\n REACT_APP_TEST_NOTIFICATION_ENDPOINT: http_protocol + \"//\" + localhost + \":\" + api_runs_on_port + \"/api/v1/test/notification_delivery\",\n REACT_APP_CHECK_AND_NOTIFY_ENDPOINT: http_protocol + \"//\" + localhost + \":\" + api_runs_on_port + \"/api/v1/notification/check_and_notify\"\n}\n\nconst test_myEndpoints = {\n REACT_APP_CRUD_ADMIN_ENDPOINT: \"https://test-api.ctci.ai/api/v1\",\n REACT_APP_CRUD_CEWL_ENDPOINT: \"https://test-api.ctci.ai/api/v1/cewl?q=\",\n REACT_APP_CRUD_LEGIT_ENDPOINT: \"https://test-api.ctci.ai/api/v1/ip/\",\n REACT_APP_CRUD_ADMIN_LOGIN_ENDPOINT: \"https://test-api.ctci.ai/api/v1/login\",\n REACT_APP_CRUD_ADMIN_REGISTER_ENDPOINT: \"https://test-api.ctci.ai/api/v1/register\",\n REACT_APP_CRUD_ADMIN_CHANGE_PASSWORD_ENDPOINT: \"https://test-api.ctci.ai/api/v1/change_password\",\n REACT_APP_CRUD_ADMIN_FORGOT_PASSWORD_ENDPOINT: \"https://test-api.ctci.ai/api/v1/forgot_password\",\n REACT_APP_DOCUMENTATION_URL: \"https://ctci.atlassian.net/wiki/spaces/CTCIDOC/overview\",\n REACT_APP_ADDRESS_CONFIRMATION_ENDPOINT: \"https://test-api.ctci.ai/api/v1/resend_confirmation_web\",\n REACT_APP_TEST_NOTIFICATION_ENDPOINT: \"https://test-api.ctci.ai/api/v1/test/notification_delivery\",\n REACT_APP_CHECK_AND_NOTIFY_ENDPOINT: \"https://test-api.ctci.ai/api/v1/notification/check_and_notify\",\n REACT_APP_NOTIFICATION_ENDPOINT: \"https://test-api.ctci.ai/api/v1/notification\"\n}\n\nconst production_myEndpoints = {\n REACT_APP_CRUD_ADMIN_ENDPOINT: production_api_host + \"/api/v1\",\n REACT_APP_CRUD_CEWL_ENDPOINT: production_api_host + \"/api/v1/cewl?q=\",\n REACT_APP_CRUD_LEGIT_ENDPOINT: production_api_host + \"/api/v1/ip/\",\n REACT_APP_CRUD_ADMIN_LOGIN_ENDPOINT: production_api_host + \"/api/v1/login\",\n REACT_APP_CRUD_ADMIN_REGISTER_ENDPOINT: production_api_host + \"/api/v1/register\",\n REACT_APP_CRUD_ADMIN_CHANGE_PASSWORD_ENDPOINT: production_api_host + \"api/v1/change_password\",\n REACT_APP_CRUD_ADMIN_FORGOT_PASSWORD_ENDPOINT: production_api_host + \"/api/v1/forgot_password\",\n REACT_APP_DOCUMENTATION_URL: \"https://ctci.atlassian.net/wiki/spaces/CTCIDOC/overview\",\n REACT_APP_ADDRESS_CONFIRMATION_ENDPOINT: production_api_host + \"/api/v1/resend_confirmation_web\",\n REACT_APP_TEST_NOTIFICATION_ENDPOINT: production_api_host + \"/api/v1/test/notification_delivery\",\n REACT_APP_CHECK_AND_NOTIFY_ENDPOINT: production_api_host + \"/api/v1/notification/check_and_notify\"\n}\n\nconst myEndpoints = () => {\n // for some hardcoded end points for uat being test\n if (current_hostname.startsWith(\"uat\")){\n return test_myEndpoints\n }\n else if (process.env.NODE_ENV === \"development\"){\n return local_host_myEndpoints\n }\n else if (process.env.NODE_ENV === \"test\"){\n return local_host_myEndpoints\n }\n else if (process.env.NODE_ENV === \"production\"){\n return production_myEndpoints\n }\n\n}\n\nconsole.log(\"The environment it is running in is:\")\nconsole.log(process.env.NODE_ENV);\nconsole.log(myEndpoints().REACT_APP_CRUD_CEWL_ENDPOINT)\nconsole.log(current_hostname)\n\nexport default myEndpoints\n","import myEndpoints from \"../config\";\nimport decodeJwt from \"jwt-decode\";\n\n// for sanitizing HTML\nimport dompurify from 'dompurify';\n\nconst authProvider = {\n login: ({ username, password }) => {\n console.log(\"Checking endpoint\")\n console.log(myEndpoints().REACT_APP_CRUD_ADMIN_LOGIN_ENDPOINT)\n const request = new Request(\n myEndpoints().REACT_APP_CRUD_ADMIN_LOGIN_ENDPOINT,\n {\n method: \"POST\",\n body: JSON.stringify({ username, password }),\n headers: new Headers({ \"Content-Type\": \"application/json\" }),\n }\n );\n return fetch(request)\n .then(async (response) => {\n const json = await response.json();\n if (response.status < 200 || response.status >= 300) {\n if (dompurify.sanitize(json.parameter.redirect_url)) {\n window.location.href = dompurify.sanitize(json.parameter.redirect_url);\n }\n if (dompurify.sanitize(json.parameter.password_change_url)) {\n const link = dompurify.sanitize(json.parameter.password_change_url);\n localStorage.setItem(\"change_password\", link);\n window.location.href += \"/change_password\";\n }\n throw new Error(json.detail);\n }\n return json;\n })\n .then((auth) => {\n //localStorage.setItem('access_token', JSON.stringify(auth.access_token));\n localStorage.setItem(\"access_token\", auth.access_token);\n localStorage.setItem(\"firstname\", auth.firstname);\n localStorage.setItem(\"lastname\", auth.lastname);\n localStorage.setItem(\"nickname\", auth.nickname);\n localStorage.setItem(\"roles\", auth.roles);\n });\n },\n\n logout: () => {\n // username is removed from the checked button\n localStorage.removeItem(\"access_token\");\n localStorage.removeItem(\"firstname\");\n localStorage.removeItem(\"lastname\");\n localStorage.removeItem(\"nickname\");\n localStorage.removeItem(\"roles\");\n localStorage.removeItem(\"user_id\");\n return Promise.resolve(\"/login\");\n },\n\n checkAuth: () => {\n return localStorage.getItem(\"access_token\")\n ? Promise.resolve()\n : Promise.reject({ message: false });\n },\n\n checkError: (error) => {\n const status = error.status;\n if (status === 401 || status === 403) {\n return Promise.reject();\n }\n return Promise.resolve();\n },\n\n getPermissions: () => {\n // roles are stored in the JWT in field rls\n let access_token_exist = localStorage.getItem(\"access_token\", null);\n let role = \"\";\n if (access_token_exist) {\n try {\n role = decodeJwt(access_token_exist);\n // valid token format\n } catch (error) {\n // if there is a problem with the decode JWT then remove it\n localStorage.removeItem(\"access_token\");\n }\n } else {\n const role = { rls: [] };\n console.log(role);\n }\n return role.rls ? Promise.resolve(role) : Promise.reject();\n },\n\n // my addition\n getIdentity: () => {\n try {\n let fullName = localStorage.getItem(\"nickname\", \"\");\n if (fullName === undefined || fullName === null || fullName === \"null\") {\n fullName =\n localStorage.getItem(\"firstname\") +\n \" \" +\n localStorage.getItem(\"lastname\");\n }\n let access_token_exist = localStorage.getItem(\"access_token\", null);\n\n if (access_token_exist) {\n try {\n const id = decodeJwt(access_token_exist);\n const user_id = id.id;\n // this line is not needed later on!\n if (user_id) {\n localStorage.setItem(\"user_id\", user_id);\n }\n // look at adding avatars from local storage in the futrue\n const avatar = \"\";\n return Promise.resolve({ user_id, fullName, avatar });\n // valid token format\n } catch (error) {\n // if there is a problem with the decode JWT then remove it\n localStorage.removeItem(\"access_token\");\n return Promise.reject(error);\n }\n } else {\n Promise.reject(\"access_token invalid\");\n }\n } catch (error) {\n return Promise.reject(error);\n }\n },\n};\n\nexport default authProvider;\n","import { HttpError } from \"react-admin\";\n\n/**\n * Returns an RFC 7807 error parser which translate them into React-Admin expected format.\n * @param {options} Options\n * @param {options.message} A function which will be called with the error and must return a message. Defaults to extracting the detail property of the error body returned by React-Admin HttpClient.\n * @param {options.status} A function which will be called with the error and must return a status. Defaults to extracting the status property of the error body returned by React-Admin HttpClient.\n *\n * @example Basic usage\n * const parseError = parseRFC7807Error();\n *\n * httpClient(url, options)\n * .then((response) => {\n * return convertHttpResponse(response, type, resource, params);\n * })\n * .catch(error => parseError(error));\n * // Could be written like this as well\n * .catch(parseError);\n *\n * @example Customize how to get the message\n * const parseError = parseRFC7807Error({\n * message: function(error) {\n * return error.body.detail;\n * }\n * });\n *\n * httpClient(url, options)\n * .then((response) => {\n * return convertHttpResponse(response, type, resource, params);\n * })\n * .catch(error => parseError(error));\n *\n * @example Customize how to get the status\n * const parseError = parseRFC7807Error({\n * status: function(error) {\n * return error.body.status;\n * }\n * });\n *\n * httpClient(url, options)\n * .then((response) => {\n * return convertHttpResponse(response, type, resource, params);\n * })\n * .catch(error => parseError(error));\n *\n * @example Customize how to get the message and the status\n * const parseError = parseRFC7807Error({\n * message: function(error) {\n * return error.body.detail;\n * },\n * status: function(error) {\n * return error.body.status;\n * }\n * });\n *\n * httpClient(url, options)\n * .then((response) => {\n * return convertHttpResponse(response, type, resource, params);\n * })\n * .catch(error => parseError(error));\n *\n * @returns A function which takes a single argument: the error.\n */\nexport const parseRFC7807Error = ({\n message = defaultParseMessage,\n status = defaultParseStatus,\n} = {}) => {\n return function (error) {\n // If the response body included by React-admin in the error\n // follow the RFC, parse the notification message from it\n if (error.body && error.body.type && error.body.detail) {\n throw new HttpError(message(error), status(error), error.body);\n }\n // Otherwise, we just rethrow the original error\n throw error;\n };\n};\n\nconst defaultParseMessage = (error) => error.body.detail;\nconst defaultParseStatus = (error) => error.body.status;\n","import { stringify } from \"query-string\";\nimport {\n fetchUtils,\n GET_LIST,\n GET_ONE,\n CREATE,\n UPDATE,\n UPDATE_MANY,\n DELETE,\n DELETE_MANY,\n GET_MANY,\n GET_MANY_REFERENCE,\n} from \"react-admin\";\n\nimport { parseRFC7807Error } from \"./parseError\";\n\nconst DataProvider = (apiUrl, httpClient = fetchUtils.fetchJson) => {\n /**\n * @param {String} type React-admin request type, e.g. 'GET_LIST'\n * @param {String} resource Name of the resource to fetch, e.g. 'posts'\n * @param {Object} params Request parameters. Depends on the request type\n * @returns {Object} { url, options } The HTTP request parameters\n */\n const convertDataRequestToHttp = (type, resource, params) => {\n let url = \"\";\n let options = {};\n switch (type) {\n case CREATE:\n url = `${apiUrl}/${resource}`;\n options.method = \"POST\";\n options.body = JSON.stringify(params.data);\n break;\n case GET_ONE:\n // not some directories in javascript have been changed to match the directories in the backend!\n // this allows us not to have to override the code with a mapping\n // also allows us to match the file names right through the process of front-end to back-end\n url = `${apiUrl}/${resource}/${params.id}`;\n break;\n case GET_LIST: {\n const { page, perPage } = params.pagination;\n const { field, order } = params.sort;\n const { filter } = params;\n const query = {\n page,\n page_size: perPage,\n ordering: `${order === \"ASC\" ? \"\" : \"-\"}${field}`,\n ...filter,\n };\n const cewl_query = {\n page,\n filter_download: \"off\",\n output_format: \"json\",\n page_size: perPage,\n ordering: `${order === \"ASC\" ? \"\" : \"-\"}${field}`,\n ...filter,\n };\n if (resource === \"cve/cewl\") {\n url = `${apiUrl}/${resource}?${stringify(cewl_query)}`;\n } else {\n url = `${apiUrl}/${resource}?${stringify(query)}`;\n }\n break;\n }\n case GET_MANY_REFERENCE: {\n const { page, perPage } = params.pagination;\n const { field, order } = params.sort;\n const { filter, target, id } = params;\n const query = {\n page,\n page_size: perPage,\n ordering: `${order === \"ASC\" ? \"\" : \"-\"}${field}`,\n ...filter,\n [target]: id,\n };\n url = `${apiUrl}/${resource}?${stringify(query)}`;\n break;\n }\n case UPDATE:\n options.method = \"PUT\";\n options.body = JSON.stringify(params.data);\n url = `${apiUrl}/${resource}/${params.id}`;\n break;\n case DELETE:\n url = `${apiUrl}/${resource}/${params.id}`;\n options.method = \"DELETE\";\n break;\n default:\n throw new Error(`Unsupported Data Provider request type ${type}`);\n }\n return { url, options };\n };\n /**\n * @param {Object} response HTTP response from fetch()\n * @param {String} type React-admin request type, e.g. 'GET_LIST'\n * @param {String} resource Name of the resource to fetch, e.g. 'posts'\n * @param {Object} params Request parameters. Depends on the request type\n * @returns {Object} Data response\n */\n const convertHttpResponse = (response, type, resource, params) => {\n const { headers, json } = response;\n switch (type) {\n case GET_ONE:\n if (Object.keys(json).length > 0) {\n if (\"data\" in json) {\n return { data: json.data, total: json.data.length };\n } else {\n return { data: json, id: json.id };\n }\n } else {\n return { data: [], total: 0 };\n }\n case GET_LIST:\n case GET_MANY_REFERENCE:\n if (typeof json !== \"undefined\") {\n if (\"data\" in json) {\n return { data: json.data, total: json.data.length };\n } else if (headers.has(\"content-range\")) {\n return {\n data: json,\n total: parseInt(\n headers.get(\"content-range\").split(\"/\").pop(),\n 10\n ),\n };\n } else if (\"detail\" in json && json.detail === \"Invalid page.\") {\n return { data: [], total: 0 };\n } else {\n throw new Error(\n \"The total number of results is unknown. The DRF data provider \" +\n \"expects responses for lists of resources to contain this \" +\n \"information to build the pagination. If you're not using the \" +\n \"default PageNumberPagination class, please include this \" +\n 'information using the Content-Range header OR a \"count\" key ' +\n \"inside the response.\"\n );\n }\n } else {\n return { data: [], total: 0 };\n }\n case CREATE:\n // return { data: { ...params.data, id: json.id } };\n if (typeof json !== \"undefined\") {\n if (\"data\" in json) {\n return { data: json.data };\n } else {\n return { data: [], total: 0 };\n }\n } else {\n return { data: [], total: 0 };\n }\n case DELETE:\n return { data: params.previousData };\n default:\n return { data: json.data };\n }\n };\n /**\n * @param {String} type React-admin request type, e.g. 'GET_LIST'\n * @param {string} resource Name of the resource to fetch, e.g. 'posts'\n * @param {Object} params Request parameters. Depends on the request type\n * @returns {Promise} the Promise for a data response\n */\n return (type, resource, params) => {\n /**\n * Split GET_MANY, UPDATE_MANY and DELETE_MANY requests into multiple promises,\n * since they're not supported by default.\n */\n switch (type) {\n case GET_MANY:\n return Promise.all(\n params.ids.map((id) =>\n httpClient(`${apiUrl}/${resource}/${id}`, {\n method: \"GET\",\n })\n )\n )\n .then((responses) => ({\n data: responses.map((response) => response.json.data),\n }))\n .catch((error) => parseRFC7807Error()(error));\n case UPDATE_MANY:\n return Promise.all(\n params.ids.map((id) => {\n if (params.data.length) {\n const filteredData = params.data.filter((data) => data.id === id);\n return httpClient(`${apiUrl}/${resource}/${id}`, {\n method: \"PUT\",\n body: JSON.stringify(filteredData[0]),\n });\n } else {\n return httpClient(`${apiUrl}/${resource}/${id}`, {\n method: \"PUT\",\n body: JSON.stringify(params.data),\n });\n }\n })\n )\n .then((responses) => ({\n data: responses.map((response) => response.json),\n }))\n .catch((error) => parseRFC7807Error()(error));\n case DELETE_MANY:\n return Promise.all(\n params.ids.map((id) =>\n httpClient(`${apiUrl}/${resource}/${id}`, {\n method: \"DELETE\",\n })\n )\n )\n .then((responses) => ({\n data: responses.map((response) => response.json),\n }))\n .catch((error) => parseRFC7807Error()(error));\n default:\n break;\n }\n const { url, options } = convertDataRequestToHttp(type, resource, params);\n return httpClient(url, options)\n .then((response) => convertHttpResponse(response, type, resource, params))\n .catch((error) => parseRFC7807Error()(error));\n };\n};\n\nexport default DataProvider;\n","import React from \"react\";\nimport { UserMenu, MenuItemLink } from \"react-admin\";\nimport LockOpenIcon from \"@material-ui/icons/LockOpen\";\nimport SettingsIcon from \"@material-ui/icons/Settings\";\n\nconst MyUserMenu = (props) => {\n return (\n \n }\n />\n }\n />\n \n );\n};\n\nexport default React.memo(MyUserMenu);\n","// in src/MyAppBar.js\nimport React, { useState, useEffect } from \"react\";\nimport { AppBar, usePermissions } from \"react-admin\";\nimport MyUserMenu from \"./MyUserMenu\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Toolbar from \"@material-ui/core/Toolbar\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { Box } from \"@material-ui/core\";\n\nimport { ToggleThemeButton } from \"@react-admin/ra-preferences\";\n\nimport logo from \"./assest/main-logo.png\";\n\nconst useStyles = makeStyles({\n title: {\n flex: 1,\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n marginLeft: -10,\n },\n appbar: {\n backgroundColor: \"#000000\",\n },\n spacer: {\n flex: 1,\n },\n logo: {\n maxWidth: \"70px\",\n marginLeft: -35,\n },\n role: {\n fontSize: \"13px\",\n fontWeight: \"bold\",\n },\n});\n\nconst MyAppBar = (props) => {\n const [userRole, setUserRole] = useState();\n const classes = useStyles();\n const { permissions } = usePermissions();\n\n useEffect(() => {\n permissions && permissions.rls && setUserRole(permissions.rls);\n }, [permissions]);\n\n return (\n }>\n \n \n \"logo\"\n \n \n \n \n {`User role - ${userRole}`}\n \n \n \n );\n};\n\nexport default React.memo(MyAppBar);\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHAAAAAgCAYAAADKbvy8AAAACXBIWXMAAAsTAAALEwEAmpwYAAAF92lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDYgNzkuMTY0NzUzLCAyMDIxLzAyLzE1LTExOjUyOjEzICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjIuMyAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjEtMDUtMDdUMTE6Mjg6NDgtMDc6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDIxLTA1LTA3VDExOjMzOjA2LTA3OjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIxLTA1LTA3VDExOjMzOjA2LTA3OjAwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjI5MDllYTk2LTg1NTgtNGQ4OS05MDIzLWY1YmUzYTgzZGU2NiIgeG1wTU06RG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjQyZTViMmI5LTE1ZmMtMDc0Yi04MGY5LTYzMWIzMTJjYTgxOSIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOmExZWMwNDk2LTFlZWMtNGNiMC1hOGMzLTViYWU0YzQ1MjY0ZCI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6YTFlYzA0OTYtMWVlYy00Y2IwLWE4YzMtNWJhZTRjNDUyNjRkIiBzdEV2dDp3aGVuPSIyMDIxLTA1LTA3VDExOjI4OjQ4LTA3OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjIuMyAoTWFjaW50b3NoKSIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MjkwOWVhOTYtODU1OC00ZDg5LTkwMjMtZjViZTNhODNkZTY2IiBzdEV2dDp3aGVuPSIyMDIxLTA1LTA3VDExOjMzOjA2LTA3OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjIuMyAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7EVetGAAANNklEQVRoge2be7BdVX3HP+uxz/s+c29yb16ERIIYAjiowFgehk5mItIqEmyL1mqhj3GkygzSNMXBMTyqM9BSK1L7SFshI6IS0IK0QMuoIzGKgRjyICQhISbc3Jvc3HPPOfu1Vv9Y5+aeu+8+596EEBzsd2bNufu3197rt9d3/3779/utdQXPHWZKCP4OGd+AMmWUsagYlAFp3G/asbQgLFiRvFsJEMBZwNamY1oL+Qzods68fi29D2/Gn9sxta5vUWx47t5UucbPTHXt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\"","import React from \"react\";\n\nconst UserCreateLazy = React.lazy(() => import('./UserCreate'));\nconst UserEditLazy = React.lazy(() => import('./UserEdit'));\nconst UserListLazy = React.lazy(() => import('./userList'));\nconst UserShowLazy = React.lazy(() => import('./UserShow'));\n\n\nconst User = {\n list: UserListLazy,\n create: UserCreateLazy,\n edit: UserEditLazy,\n show: UserShowLazy,\n};\n\nexport default User;\n","import React from \"react\";\n\nconst matchyListLazy= React.lazy(() => import('./matchyList'));\n\n\nconst matchyCewl = {\n list: matchyListLazy\n\n};\n\nexport default matchyCewl;\n\n","import React from \"react\";\n\nconst CompanyCreateLazy = React.lazy(() => import('./CompanyCreate'));\nconst CompanyEditLazy = React.lazy(() => import('./CompanyEdit'));\nconst CompanyListLazy = React.lazy(() => import('./CompanyList'));\nconst CompanyShowLazy = React.lazy(() => import('./CompanyShow'));\n\n\nconst Company = {\n list: CompanyListLazy,\n create: CompanyCreateLazy,\n edit: CompanyEditLazy,\n show: CompanyShowLazy,\n};\n\nexport default Company;\n","import React from \"react\";\n\nconst EmailDomainCreateLazy = React.lazy(() => import('./EmailDomainCreate'));\nconst EmailDomainListLazy = React.lazy(() => import('./EmailDomainList'));\nconst EmailDomainEditLazy = React.lazy(() => import('./EmailDomainEdit'));\nconst EmailDomainShowLazy = React.lazy(() => import('./EmailDomainShow'));\n\n\nconst EmailDomain = {\n list: EmailDomainListLazy,\n create: EmailDomainCreateLazy,\n edit: EmailDomainEditLazy,\n show: EmailDomainShowLazy,\n\n};\n\nexport default EmailDomain;\n\n","import React from \"react\";\n\nconst NotificationGroupListLazy = React.lazy(() => import('./NotificationGroupList'));\nconst NotificationGroupCreateLazy = React.lazy(() => import('./NotificationGroupCreate'));\nconst NotificationGroupEditLazy = React.lazy(() => import('./NotificationGroupEdit'));\nconst NotificationGroupShowLazy = React.lazy(() => import('./NotificationGroupShow'));\n\n\nconst NotificationGroup = {\n list: NotificationGroupListLazy,\n create: NotificationGroupCreateLazy,\n edit: NotificationGroupEditLazy,\n show: NotificationGroupShowLazy,\n};\n\nexport default NotificationGroup;\n","import React from \"react\";\n\nconst NotificationDeliveryListLazy = React.lazy(() => import('./NotificationDeliveryList'));\nconst NotificationDeliveryCreateLazy = React.lazy(() => import('./NotificationDeliveryCreate'));\nconst NotificationDeliveryEditLazy = React.lazy(() => import('./NotificationDeliveryEdit'));\nconst NotificationDeliveryShowLazy = React.lazy(() => import('./NotificationDeliveryShow'));\n\n\nconst NotificationDelivery = {\n list: NotificationDeliveryListLazy,\n create: NotificationDeliveryCreateLazy,\n edit: NotificationDeliveryEditLazy,\n show: NotificationDeliveryShowLazy,\n};\n\nexport default NotificationDelivery;\n","import React from \"react\";\n\nconst NotificationFilterListLazy = React.lazy(() => import('./NotificationFilterList'));\nconst NotificationFilterCreateLazy = React.lazy(() => import('./NotificationFilterCreate'));\nconst NotificationFilterEditLazy = React.lazy(() => import('./NotificationFilterEdit'));\nconst NotificationFilterShowLazy = React.lazy(() => import('./NotificationFilterShow'));\n\n\nconst NotificationFilters = {\n list: NotificationFilterListLazy,\n create: NotificationFilterCreateLazy,\n edit: NotificationFilterEditLazy,\n show: NotificationFilterShowLazy,\n};\n\nexport default NotificationFilters;\n","import React from \"react\";\n\nconst TokenListLazy = React.lazy(() => import('./TokenList'));\nconst TokenCreateLazy = React.lazy(() => import('./TokenCreate'));\nconst TokenEditLazy = React.lazy(() => import('./TokenEdit'));\nconst TokenShowLazy = React.lazy(() => import('./TokenShow'));\n\n\nconst Token = {\n list: TokenListLazy,\n create: TokenCreateLazy,\n edit: TokenEditLazy,\n show: TokenShowLazy,\n};\n\nexport default Token;\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport {\n TextInput,\n BooleanInput,\n SimpleForm,\n Create,\n useDataProvider,\n AutocompleteInput,\n useMutation,\n useRedirect,\n useNotify,\n required, usePermissions,\n} from \"react-admin\";\nimport { NumberInput } from \"ra-ui-materialui\";\nimport Button from \"@material-ui/core/Button\";\nimport EvStationIcon from \"@material-ui/icons/EvStation\";\nimport Toolbar from \"../components/EditToolbar\";\nimport Title from \"../components/Title\";\nimport { DateTimeInput } from \"../components/DateTimeInput\";\nimport { CreateWithMutation } from \"../utils/helpers\";\nimport { FormStyles } from \"../components/Formstyles\";\nimport useWindowSize from \"../utils/useWindowSize\";\nimport { Typography } from \"@material-ui/core\";\nimport { usePreferences } from \"@react-admin/ra-preferences\";\n\nconst CewlCreate=(props) => {\n const [data, setData]=useState();\n const [cve, setCve]=useState();\n const [error, setError]=useState();\n const dataProvider=useDataProvider();\n const [mutate]=useMutation();\n const notify=useNotify();\n const redirect=useRedirect();\n const classes=FormStyles()();\n const {resource}=props;\n const [userRole, setUserRole]=useState();\n const {permissions}=usePermissions();\n\n const [preferences]=usePreferences(\"theme\");\n const [width]=useWindowSize();\n let windowWidth=width > 415 ? \"100%\" : \"258px\";\n\n useEffect(() => {\n permissions && permissions.rls && setUserRole(permissions.rls);\n }, [permissions]);\n\n const getCveData=() => {\n cve &&\n dataProvider\n .getOne(`cewl/nvd`, {id: cve})\n .then(({data}) => {\n setData(data);\n setError(null);\n })\n .catch((err) => {\n setError(err.message);\n setData(\" \");\n });\n };\n\n const save=useCallback(\n async(values) => {\n return await CreateWithMutation(\n values,\n mutate,\n notify,\n redirect,\n resource\n );\n },\n [mutate, notify, redirect, resource]\n );\n\n return (\n } >\n }\n defaultValue = { data }\n className = { classes.wrapper }\n save = { save }\n >\n
\n
\n
\n setCve(e.target.value) }\n helperText = { error && error }\n validate = { [required()] }\n />\n { userRole === \"super_admin\" ?\n }\n color = \"secondary\"\n onClick = { () => getCveData() }\n className = { classes.button }\n disabled={!cve}\n >\n Fill with NVD Details\n \n :\n
\n }\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n \n\n
\n \n\n
\n \n \n \n
\n
\n
\n \n
\n
\n CTCI-Intel\n \n
\n
\n
\n \n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n \n \n
\n \n \n
\n
\n
\n
\n
\n \n \n
\n
\n \n
\n \n
\n
\n
\n \n \n
\n
\n \n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n );\n};\n\nexport default CewlCreate;\n","import React from \"react\";\nimport { Button, Toolbar } from \"react-admin\";\nimport { Link } from \"react-router-dom\";\nimport KeyboardReturnIcon from \"@material-ui/icons/KeyboardReturn\";\n\nconst ShowToolBar = ({ basePath, ...props }) => {\n return (\n \n \n \n \n \n );\n};\n\nexport default ShowToolBar;\n","import React, { useState, useCallback, useEffect, useRef } from \"react\";\nimport {\n Edit,\n SimpleForm,\n TextInput,\n BooleanInput,\n AutocompleteInput,\n useMutation,\n useRedirect,\n useNotify,\n required,\n useDataProvider, TopToolbar, usePermissions, EditButton\n} from \"react-admin\";\nimport { useShowController } from 'react-admin';\nimport { Button } from \"@material-ui/core\";\nimport EvStationIcon from \"@material-ui/icons/EvStation\";\nimport { NumberInput } from \"ra-ui-materialui\";\nimport Toolbar from \"../components/EditToolbar\";\nimport ShowToolbar from \"../components/ShowToolbar\";\nimport Title from \"../components/Title\";\nimport { DateTimeInput } from \"../components/DateTimeInput\";\nimport { EditWithMutation } from \"../utils/helpers\";\nimport useWindowSize from \"../utils/useWindowSize\";\nimport { FormStyles } from \"../components/Formstyles\";\nimport { Typography } from \"@material-ui/core\";\nimport { usePreferences } from \"@react-admin/ra-preferences\";\n\nconst CewlEdit=(props) => {\n const [data, setData]=useState();\n const [newData, setNewData]=useState();\n const dataProvider=useDataProvider();\n const [mutate]=useMutation();\n const notify=useNotify();\n const redirect=useRedirect();\n const classes=FormStyles()();\n const ref=useRef();\n const {resource, id}=props;\n const [userRole, setUserRole]=useState();\n const {permissions}=usePermissions();\n const [width]=useWindowSize();\n const [preferences]=usePreferences(\"theme\");\n let windowWidth=width > 415 ? \"100%\" : \"258px\";\n\n const {record} = useShowController(props);\n useEffect(() => {\n permissions && permissions.rls && setUserRole(permissions.rls);\n }, [permissions]);\n\n useEffect(() => {\n setData(newData);\n }, [newData, data]);\n\n const getCveData=() => {\n id &&\n dataProvider\n .getOne(`cewl/nvd`, {id: id})\n .then(({data}) => {\n setData(data);\n })\n .catch((err) => {\n console.log(err);\n });\n };\n\n const save=useCallback(\n async(values) => {\n return await EditWithMutation(values, mutate, notify, redirect, resource);\n },\n [mutate, notify, redirect, resource]\n );\n\n const onChange=(e, value) => {\n if(data) {\n const newData=data;\n newData[value]=e.target.value;\n setNewData(newData);\n }\n };\n\n const PostEditActions=({basePath, data}) => (\n \n \n \n);\n\n return (\n } { ...props }\n actions = { userRole === \"super_admin\" ? : null } >\n : }\n className = { classes.wrapper } save = { save } >\n
\n
\n
\n \n { userRole === \"super_admin\" ?\n }\n color = \"secondary\"\n onClick = { () => getCveData() }\n className = { classes.button }\n ref = { ref }\n disabled = { userRole !== \"super_admin\" }\n >\n Fill with NVD Details\n \n :\n \n }\n
\n
\n onChange(e, \"vendor\") }\n label = \"Vendor\"\n source = \"vendor\"\n variant = \"outlined\"\n className = { classes.item }\n validate = { [required()] }\n defaultValue = { data && data.vendor && data.vendor }\n />\n onChange(e, \"product\") }\n label = \"Product\"\n source = \"product\"\n variant = \"outlined\"\n className = { classes.item }\n validate = { [required()] }\n defaultValue = { data && data.product && data.product }\n />\n
\n
\n
\n
\n \n \n
\n
\n onChange(e, \"year\") }\n label = \"Year\"\n allowEmpty\n source = \"year\"\n variant = \"outlined\"\n className = { classes.item }\n defaultValue = { data && data.year && data.year }\n /> \n onChange(e, \"cwe\") }\n label = \"CWE\"\n allowEmpty\n source = \"cwe\"\n variant = \"outlined\"\n className = { classes.item }\n defaultValue = { data && data.cwe && data.cwe }\n />\n
\n
\n
\n
\n onChange(e, \"summary_note\") }\n label = \"Summary Note\"\n allowEmpty\n multiline source = \"summary_note\"\n variant = \"outlined\"\n className={classes.link}\n defaultValue = { data && data.summary_note && data.summary_note }\n />\n onChange(e, \"external_note\") }\n label = \"External Note\"\n allowEmpty\n multiline source = \"external_note\"\n variant = \"outlined\"\n className={classes.link}\n defaultValue = { data && data.external_note && data.external_note }\n />\n
\n onChange(e, \"internal_note\") }\n label = \"Internal Note\"\n allowEmpty\n multiline source = \"internal_note\"\n className={classes.link}\n variant = \"outlined\"\n defaultValue = { data && data.internal_note && data.internal_note }\n /> \n\n
\n onChange(e, \"cve_reference\") }\n label = \"Admiralty Score\"\n allowEmpty\n source = \"admiralty_score\"\n variant = \"outlined\"\n className = { classes.item_small }\n defaultValue = { data && data.admiralty_score && data.admiralty_score }\n />\n onChange(e, \"cve_reference\") }\n label = \"Reference Link\"\n allowEmpty \n source = \"cve_reference\"\n variant = \"outlined\"\n className = { classes.link }\n defaultValue = { data && data.cve_reference && data.cve_reference }\n />\n onChange(e, \"vulnerability_type\") }\n label = \"Vulnerability Type\"\n allowEmpty\n source = \"vulnerability_type\"\n variant = \"outlined\"\n className = { classes.item }\n defaultValue = {\n data && data.vulnerability_type && data.vulnerability_type\n }\n />\n
\n\n
\n
\n onChange(e, \"description\") }\n label = \"Description\"\n source = \"description\"\n multiline\n style = { {width: `${ windowWidth }`} }\n variant = \"outlined\"\n className = { classes.link }\n defaultValue = { data && data.description && data.description }\n />\n
\n
\n CTCI-Intel\n \n
\n
\n
\n \n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n {(userRole !== \"super_admin\" && record && record.notified && record.notified)\n || (userRole === \"super_admin\") ?\n <>\n \n \n :null}\n
\n
\n {(userRole!==\"super_admin\" && record && record.enabled && record.enabled) || (userRole===\"super_admin\") ?\n <>\n \n \n :null}\n
\n
\n
\n
\n {(userRole!==\"super_admin\" && record && record.removed && record.removed )\n || (userRole===\"super_admin\") ?\n <>\n \n \n :null} \n
\n onChange(e, \"base_score\") }\n label = \"CVE Score\"\n allowEmpty\n source = \"base_score\"\n variant = \"outlined\"\n className = { classes.item }\n defaultValue = { data && data.base_score && data.base_score }\n />\n
\n \n
\n
\n
\n
\n
\n
\n \n \n
\n
\n \n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n );\n};\n\nexport default CewlEdit;\n","import React, { forwardRef, useImperativeHandle } from \"react\";\nimport \"./styles.css\";\nimport LinkIcon from \"@material-ui/icons/Link\";\n\nexport default forwardRef((props, ref) => {\n\n useImperativeHandle(ref, () => {\n return {\n getReactContainerClasses() {\n return [\"custom-tooltip\"];\n },\n };\n });\n\n return (\n
\n \n {props.value} \n \n
\n );\n});\n","import React, { useState, useEffect, useRef } from \"react\";\nimport { AgGridColumn, AgGridReact } from \"ag-grid-react\";\nimport {\n Title,\n usePermissions,\n useDataProvider,\n useNotify,\n useRedirect,\n} from \"react-admin\";\nimport { Link, useHistory } from \"react-router-dom\";\nimport \"ag-grid-enterprise\";\nimport \"ag-grid-community/dist/styles/ag-grid.css\";\nimport \"ag-grid-community/dist/styles/ag-theme-alpine.css\";\nimport \"ag-grid-community/dist/styles/ag-theme-alpine-dark.css\";\nimport \"ag-grid-community/dist/styles/ag-theme-balham-dark.css\";\n\nimport \"../cewl.css\";\nimport moment from \"moment-timezone\";\nimport jstz from \"jstz\";\n\n// for search input\nimport SearchBar from \"material-ui-search-bar\";\nimport Grid from \"@material-ui/core/Grid\";\n\n// to use react-admin's fetch\n// We should use their fetchUtils!\n// TODO use this library!\n// import { fetchUtils } from \"react-admin\";\n\n// for filter search\nimport TextField from \"@material-ui/core/TextField\";\nimport Autocomplete from \"@material-ui/lab/Autocomplete\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport AddAlertIcon from \"@material-ui/icons/AddAlert\";\nimport VisibilityIcon from \"@material-ui/icons/Visibility\";\nimport VisibilityOffIcon from \"@material-ui/icons/VisibilityOff\";\nimport FormatPaintIcon from \"@material-ui/icons/FormatPaint\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport FileCopyIcon from \"@material-ui/icons/FileCopy\";\nimport ToggleButton from \"@material-ui/lab/ToggleButton\";\nimport ToggleButtonGroup from \"@material-ui/lab/ToggleButtonGroup\";\nimport ListAdd from \"@material-ui/icons/PlaylistAdd\";\nimport EditIcon from \"@material-ui/icons/Edit\";\nimport FindInPageIcon from '@material-ui/icons/FindInPage';\nimport CheckBoxIcon from \"@material-ui/icons/CheckBox\";\nimport { usePreferences } from \"@react-admin/ra-preferences\";\nimport CustomTooltip from \"../components/CustomTooltip\";\n\nimport { Box, Button, CircularProgress } from \"@material-ui/core\";\n\nimport myEndpoints from \"../config.js\";\n\nimport { makeStyles } from \"@material-ui/core\";\n\nimport copy from \"copy-to-clipboard\";\n\nconst useStyles = makeStyles({\n header: {\n fontFamily: '\"data70\"',\n },\n root: {\n fontFamily: '\"data70\"',\n fontSize: \"30px\",\n color: \"#33cc99\",\n },\n search_input: {\n width: \"10ch\",\n \"& > label\": {\n /* bring your own prefixes for webkit */\n \"-webkit-transform\": \"translate(10px, 10px) scale(1)\",\n transform: \"translate(10px, 10px) scale(1)\",\n },\n \"& > div > input\": {\n padding: \"8.5px 30px 8.5px 8px\",\n },\n },\n search_button: {\n color: \"#2196f3\",\n minWidth: \"35px\",\n padding: 0,\n border: \"none\",\n position: \"absolute\",\n right: 0,\n height: \"35px\",\n \"& > .MuiButton-root\": {\n padding: 0,\n },\n \"& > span\": {\n fontSize: \"10px\",\n },\n },\n});\n\n// Defining the CEWL header title\nconst CEWLHeader = ( ) => {\n const classes = useStyles();\n return (\n \n CEWL\n \n );\n};\n\n// https://medium.com/javascript-in-plain-english/how-to-check-for-null-in-javascript-dffab64d8ed5\n// typeof maybeUndeclared !== \"undefined\" && (typeof maybeUndeclared !== \"object\" || !maybeUndeclared)\nconst timestamp_to_string = (data) =>\n data.value &&\n moment.tz(data.value, \"America/Los_Angeles\").format(\"YYYY-MM-DD\");\n\nconst show_truncated = (params) =>\n params.value &&\n `${params.value}`;\n\nconst redirectEdit = (history) => {\n const selectedRow = gridOptions.api.getSelectedNodes();\n selectedRow.length && history.push(`cewl/${selectedRow[0].data.id}`);\n};\n\nconst redirectShow = (history) => {\n const selectedRow = gridOptions.api.getSelectedNodes();\n selectedRow.length && history.push(`cewl/${selectedRow[0].data.id}/show`);\n};\n\nconst tooltipValueGetter = (params) => {\n return params.value;\n};\n\nexport const columnDefs = [\n {\n headerName: \"CVE\",\n field: \"id\",\n headerTooltip: \"CVE\",\n width: 190,\n aggFunc: \"count\",\n checkboxSelection: (params) => {\n if (\n params.column.columnApi.isPivotMode() ||\n params.column.columnApi.getRowGroupColumns().length > 0\n ) {\n return false;\n } else {\n return true;\n }\n },\n },\n {\n headerName: \"External Note\",\n field: \"external_note\",\n headerTooltip: \"external_note\",\n cellRenderer: show_truncated,\n enablePivot: false,\n },\n {\n headerName: \"Summary Note\",\n field: \"summary_note\",\n headerTooltip: \"summary_note\",\n cellRenderer: show_truncated,\n enablePivot: false,\n },\n {\n headerName: \"Year\",\n field: \"year\",\n headerTooltip: \"year\",\n width: 85,\n },\n {\n headerName: \"NVD Score\",\n field: \"base_score\",\n headerTooltip: \"base_score\",\n width: 123,\n enablePivot: true,\n },\n {\n headerName: \"CVE Date\",\n field: \"cve_date\",\n headerTooltip: \"cve_date\",\n valueFormatter: timestamp_to_string,\n width: 123,\n enablePivot: true,\n },\n {\n headerName: \"NVD Severity\",\n field: \"base_severity\",\n headerTooltip: \"base_severity\",\n width: 123,\n enablePivot: true,\n },\n {\n headerName: \"Vendor\",\n field: \"vendor\",\n headerTooltip: \"vendor\",\n width: 150,\n enablePivot: true,\n },\n {\n headerName: \"Product\",\n field: \"product\",\n headerTooltip: \"product\",\n width: 270,\n enablePivot: true,\n },\n {\n headerName: \"Description\",\n field: \"description\",\n headerTooltip: \"description\",\n width: 270,\n cellRenderer: show_truncated,\n chartDataType: \"excluded\",\n },\n {\n headerName: \"Date Added\",\n field: \"date_added\",\n headerTooltip: \"date_added\",\n width: 130,\n valueFormatter: timestamp_to_string,\n chartDataType: \"time\",\n },\n {\n headerName: \"Reference\",\n field: \"cve_reference\",\n headerTooltip: \"cve_reference\",\n chartDataType: \"excluded\",\n tooltipComponent: \"customTooltip\",\n tooltipValueGetter: tooltipValueGetter,\n },\n {\n headerName: \"Honeypot\",\n field: \"honeypot\",\n headerTooltip: \"honeypot\",\n width: 150,\n valueFormatter: timestamp_to_string,\n chartDataType: \"time\",\n },\n {\n headerName: \"Intel\",\n field: \"intel\",\n headerTooltip: \"intel\",\n width: 150,\n valueFormatter: timestamp_to_string,\n chartDataType: \"time\",\n },\n {\n headerName: \"Research\",\n field: \"research\",\n headerTooltip: \"research\",\n width: 150,\n valueFormatter: timestamp_to_string,\n chartDataType: \"time\",\n },\n {\n headerName: \"CVSS V2\",\n field: \"base_metric_v2\",\n headerTooltip: \"base_metric_v2\",\n width: 129,\n },\n {\n headerName: \"CVSS V3\",\n field: \"base_metric_v3\",\n headerTooltip: \"base_metric_v3\",\n width: 129,\n },\n {\n headerName: \"id_ref\",\n field: \"id_ref\",\n headerTooltip: \"id_ref\",\n width: 129,\n },\n {\n headerName: \"Updated On\",\n field: \"updated_on\",\n headerTooltip: \"updated_on\",\n width: 129,\n valueFormatter: timestamp_to_string,\n chartDataType: \"time\",\n },\n {\n headerName: \"CWE\",\n field: \"cwe\",\n headerTooltip: \"cwe\",\n enablePivot: true,\n },\n\n {\n headerName: \"Internal Note\",\n field: \"internal_note\",\n hide: true,\n headerTooltip: \"internal_note\",\n enablePivot: false,\n },\n {\n headerName: \"Removed\",\n field: \"removed\",\n hide: true,\n headerTooltip: \"removed\",\n enablePivot: true,\n },\n {\n headerName: \"Removed Date\",\n field: \"removed_date\",\n hide: true,\n headerTooltip: \"removed_date\",\n enablePivot: true,\n },\n {\n headerName: \"Enabled\",\n field: \"enabled\",\n headerTooltip: \"enabled\",\n enablePivot: true,\n },\n {\n headerName: \"Processed\",\n field: \"processed\",\n headerTooltip: \"processed\",\n enablePivot: true,\n },\n {\n headerName: \"Vulnerability Type\",\n field: \"vulnerability_type\",\n headerTooltip: \"vulnerability_type\",\n width: 270,\n enablePivot: true,\n },\n {\n headerName: \"Notification Date\",\n field: \"notification_date\",\n headerTooltip: \"notification_date\",\n width: 166,\n valueFormatter: timestamp_to_string,\n chartDataType: \"time\",\n },\n {\n headerName: \"Notified\",\n field: \"notified\",\n },\n];\n\nconst subMenuItems = (params) => {\n const column = params.column.getId();\n const menu = params.defaultItems.slice(0);\n menu.push({\n name: \"Select column\",\n action: () => {\n gridOptions.api.addCellRange({\n rowStartPinned: \"top\",\n rowEndPinned: \"bottom\",\n columnStart: column,\n columnEnd: column,\n });\n },\n });\n return menu;\n};\n//Not the best way to change ag-grid error message, find the way how to make better\nlet errorMessage = \"\";\nconst CustomNoRowsOverlay = (props) => {\n return props.noRowsMessageFunc();\n};\n\nlet color = \"inherit\";\n\nconst gridOptions = {\n columnDefs: columnDefs,\n columnTypes: {\n nonEditableColumn: { editable: false },\n dateColumn: {\n filter: \"agDateColumnFilter\",\n suppressMenu: true,\n },\n },\n defaultColDef: {\n resizable: true,\n sortable: true,\n width: 150,\n enableRowGroup: true,\n enablePivot: true,\n enableValue: true,\n },\n getMainMenuItems: subMenuItems,\n // toolPanels: [\n // {\n // id: \"filters\",\n // labelDefault: \"Filters\",\n // labelKey: \"filters\",\n // iconKey: \"filter\",\n // toolPanel: \"agFiltersToolPanel\",\n // toolPanelParams: {\n // suppressExpandAll: true,\n // suppressFilterSearch: true,\n // },\n // },\n // ],\n getRowStyle: () => {\n return {\n color: color,\n };\n },\n // defaultToolPanel: \"filters\",\n enableRangeSelection: true,\n sideBar: {\n toolPanels: [\"columns\"],\n },\n enableCharts: true,\n rowGroupPanelShow: \"always\",\n pivotPanelShow: \"always\",\n statusBar: {\n statusPanels: [\n { statusPanel: \"agTotalAndFilteredRowCountComponent\", align: \"left\" },\n { statusPanel: \"agFilteredRowCountComponent\" },\n { statusPanel: \"agSelectedRowCountComponent\" },\n { statusPanel: \"agAggregationComponent\" },\n ],\n },\n frameworkComponents: {\n customNoRowsOverlay: CustomNoRowsOverlay,\n customTooltip: CustomTooltip,\n },\n noRowsOverlayComponent: \"customNoRowsOverlay\",\n noRowsOverlayComponentParams: {\n noRowsMessageFunc: () => {\n return errorMessage;\n },\n },\n overlayLoadingTemplate: `Please wait, loading data…`,\n tooltip: { class: 'my-tooltip' },\n};\n\nconst handleKeyDown = (event) => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n }\n};\n\nconst CewlList = (props) => {\n const [searchBar, setSearchBar] = useState(\"\");\n const [rowData, setRowData] = useState([]);\n const [showData, setShowData] = useState(false);\n const [notifications, setNotifications] = useState([]);\n const [gridTheme, setGridTheme] = useState(\"ag-theme-alpine\");\n const [error, setError] = useState(false);\n const [userRole, setUserRole] = useState();\n const [processedCounter, setProcessedCounter] = useState(1);\n const [timeFilter, setTimeFilter] = useState(\"\");\n const [timeSearch, setTimeSearch] = useState(\"\");\n const [time, setTime] = useState(\"all\");\n\n const [preferences] = usePreferences(\"theme\");\n const { permissions } = usePermissions();\n const history = useHistory();\n const dataProvider = useDataProvider();\n const localUserTimezone = jstz.determine().name();\n const classes = useStyles();\n\n // for redirect and notification on login error\n const notify = useNotify();\n const redirect = useRedirect();\n\n // this is code for checking if we have mounted\n // TODO put this in it's own function\n const useIsMount = () => {\n const isMountRef = useRef(true);\n useEffect(() => {\n isMountRef.current = false;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n return isMountRef.current;\n };\n\n const isMount = useIsMount();\n\n useEffect(() => {\n timeSearch && setTime(\"none\");\n }, [timeSearch]);\n\n useEffect(() => {\n // We only want to use the time filter after we have already loaded\n // this is due to the URL can be used to cut and paste and search\n // otherwise we have two search competing on the first render and race condition of who wins\n if (isMount) {\n } else {\n doSomethingWith(`${searchBar}${timeFilter}`);\n }\n }, [timeFilter]);\n\n //Not the best way to change ag-grid error message, find the way how to make better\n useEffect(() => {\n if (!showData && !error && gridOptions.api) {\n gridOptions.api.hideOverlay();\n }\n if (error && gridOptions.api) {\n errorMessage = error.detail;\n gridOptions.api.showNoRowsOverlay();\n }\n }, [error, showData]);\n\n useEffect(() => {\n permissions && permissions.rls && setUserRole(permissions.rls);\n }, [permissions]);\n\n const doSomethingWith = (q_value) => {\n color = \"inherit\";\n setProcessedCounter(1);\n \n // Sub filter code(Find filter)\n // If timeSearch is selected and some text is there in search bar \n if (timeSearch && !q_value.includes('earliest'))\n q_value = q_value + `**|tz=${localUserTimezone}|earliest=-${timeSearch}|**`;\n // If timeSearch is selected and q_value already contains earliest so done to make querry consistent\n else if (timeSearch && q_value.includes('earliest'))\n q_value = searchBar + `**|tz=${localUserTimezone}|earliest=-${timeSearch}|**`;\n \n //Main filter code(Toggle button filters)\n // If timeFilter is selected and some text is there in search bar\n // TODO test this change so time is consistent\n if(timeFilter!==q_value && !q_value.includes(timeFilter) )\n {\n q_value=q_value+timeFilter;\n }\n // If same timeFilter is selected \n else if(timeFilter===q_value)\n { \n q_value=timeFilter;\n }\n \n const access_token = localStorage.getItem(\"access_token\");\n const myHeaders = new Headers({ Authorization: \"Bearer \" + access_token });\n try {\n fetch(myEndpoints().REACT_APP_CRUD_CEWL_ENDPOINT + q_value, {\n method: \"GET\",\n headers: myHeaders,\n mode: \"cors\",\n })\n .then((response) => response.json())\n .then((data) => {\n if (\n (data.status && data.status !== 200) ||\n (data.status_code && data.status_code !== 200)\n ) {\n if (data.status_code && data.status_code === 401) {\n // we need to log back in\n notify(\"Logged in token no longer valid\", \"Error\");\n redirect(\"/login\");\n }\n setError(data);\n setRowData([]);\n } else {\n setError(false);\n setRowData(data[\"data\"]);\n setShowData(true);\n }\n })\n .catch((error) => {\n console.log(error);\n });\n } catch {\n console.log(\"Caught the err\");\n }\n };\n\n useEffect(() => {\n if (window.location.href.indexOf(\"q=\") >= 0) {\n const urlSearch = decodeURIComponent(\n window.location.href.slice(window.location.href.indexOf(\"q=\") + 2)\n );\n setRowData([]);\n if(urlSearch !== \"\"){\n setSearchBar(urlSearch);\n doSomethingWith(urlSearch);\n } else {\n setSearchBar(\"\");\n }\n } else {\n setSearchBar(\"\");\n }\n }, []);\n\n useEffect(() => {\n preferences === \"light\"\n ? setGridTheme(\"ag-theme-alpine\")\n : setGridTheme(\"ag-theme-alpine-dark\");\n }, [preferences]);\n\n const onNotificationBarChange = (event, values) => {\n if (values !== undefined && values !== null) {\n if (values.hasOwnProperty(\"filter\")) {\n if (values.filter !== undefined && values.filter !== null) {\n setSearchBar(values.filter);\n doSomethingWith(values.filter);\n history.push(`${props.basePath}?q=${values.filter}`);\n }\n }\n }\n };\n\n const handleTimeChange = (event, newTime) => {\n setTime(newTime);\n };\n\n const getRowStyle = () => {\n const rows = [];\n gridOptions.api.forEachNode((node) => {\n if (node.data.processed) {\n rows.push(node);\n color = \"#d6d6d6\";\n }\n });\n gridOptions.api.redrawRows({ rowNodes: rows });\n };\n\n const updateProcessed = () => {\n const selectedRow = gridOptions.api.getSelectedNodes();\n if (selectedRow.length) {\n dataProvider\n .create(\"processed\", {\n data: { cve_id: selectedRow[0].data.id },\n })\n .then(() => doSomethingWith(searchBar))\n .catch((error) => console.log(error));\n }\n };\n\n const toggleProcessed = () => {\n gridOptions.api.setFilterModel(null);\n switch (processedCounter) {\n case 1: {\n gridOptions.api.setFilterModel(null);\n getRowStyle();\n setProcessedCounter((prev) => prev + 1);\n break;\n }\n case 2: {\n const filter = {\n processed: {\n type: \"set\",\n values: [\"false\"],\n },\n };\n gridOptions.api.setFilterModel(filter);\n color = \"inherit\";\n setProcessedCounter((prev) => prev + 1);\n break;\n }\n case 3: {\n const filter = {\n processed: {\n type: \"set\",\n values: [\"true\", \"false\"],\n },\n };\n gridOptions.api.setFilterModel(filter);\n color = \"inherit\";\n setProcessedCounter(1);\n break;\n }\n default:\n break;\n }\n };\n\n\n function sleep(delay = 0) {\n return new Promise((resolve) => {\n setTimeout(resolve, delay);\n });\n }\n\n const AsyncAutocomplete = () => {\n const [open, setOpen] = React.useState(false);\n const loading = open && notifications.length === 0;\n\n useEffect(() => {\n let active = true;\n\n if (!loading) {\n return undefined;\n }\n\n (async () => {\n const access_token = localStorage.getItem(\"access_token\");\n const myHeaders = new Headers({ Authorization: \"Bearer \" + access_token });\n await fetch(myEndpoints().REACT_APP_CRUD_ADMIN_ENDPOINT + \"/notification_filter\", {\n method: \"GET\",\n headers: myHeaders,\n mode: \"cors\",\n })\n .then((result) => result.json())\n .then(({ data }) => {\n if (\n (data.status && data.status !== 200) ||\n (data.status_code && data.status_code !== 200)\n ) {\n const filters = [{\n title: \"Something went wrong\",\n id: 401,\n filter: null,\n }];\n setNotifications(filters);\n notify(\"Notification Filter: \"+ data.detail,\"error\");\n } else if (data.length === 0 && active) {\n const filters = [{\n title: \"No data found\",\n id: 402,\n filter: null,\n }];\n setNotifications(filters);\n notify(\"Notification Filter: No data found\",\"error\");\n } else if (data && active) {\n const filters = data.map((item) => ({\n title: item.filter_name,\n id: item.id,\n filter: item.filter,\n }));\n setNotifications(filters);\n }\n });\n })();\n\n return () => {\n active = false;\n };\n }, [loading]);\n\n return (\n {\n setOpen(true);\n }}\n onClose={() => {\n setOpen(false);\n }}\n getOptionDisabled={(option) =>\n {\n if(option.id === 401 || option.id === 402){\n return true\n } \n } \n }\n onChange={onNotificationBarChange}\n getOptionLabel={(option) => option.title}\n options={notifications}\n loading={loading}\n renderInput={(params) => (\n \n {loading ? : null}\n {params.InputProps.endAdornment}\n \n ),\n }}\n />\n )}\n />\n );\n }\n\n return (\n <>\n
\n } />\n {userRole !== \"web\" && ( AsyncAutocomplete() )}\n <br />\n <Grid container justifyContent=\"space-between\" wrap=\"wrap\">\n <Grid item xs={12} lg={6}>\n <SearchBar\n placeholder={\"Type in search, hit enter for full CEWL List\"}\n onChange={(newValue) => setSearchBar(newValue)}\n onRequestSearch={() => {\n setSearchBar(searchBar);\n doSomethingWith(searchBar);\n history.push(`${props.basePath}?q=${searchBar}`);\n }}\n onCancelSearch={() => {\n doSomethingWith(timeFilter);\n setSearchBar(\"\");\n history.push(props.basePath);\n }}\n value={searchBar}\n autoFocus\n multiline\n onKeyDown={handleKeyDown}\n style={{\n margin: 0,\n maxWidth: 800,\n height: \"auto\",\n fontFamily: \"Arial\",\n fontSize: \"16px\",\n border: error && \"2px solid red\",\n }}\n />\n </Grid>\n <Grid item>\n <Box\n display={\"flex\"}\n alignItems={\"center\"}\n justifyContent={\"center\"}\n >\n {userRole !== \"web\" && (\n <>\n <Tooltip title=\"Add Notification Filter\">\n <label htmlFor=\"icon-add-notification-filter\">\n <IconButton\n component={Link}\n to={{\n pathname: `/notification_filter/create/`,\n search:`?notFilter=${searchBar}`,\n }}\n color=\"primary\"\n aria-label=\"add_notification_filter\"\n >\n <AddAlertIcon />\n </IconButton>\n </label>\n </Tooltip>\n <Tooltip title=\"Processed\">\n <label htmlFor=\"icon-processed\">\n <IconButton\n onClick={() => updateProcessed()}\n color=\"primary\"\n aria-label=\"add_notification_filter\"\n >\n <CheckBoxIcon />\n </IconButton>\n </label>\n </Tooltip>\n </>\n )}\n <form\n style={{\n position: \"relative\",\n display: \"inline-flex\",\n marginRight: \"10px\",\n marginLeft: userRole === \"web\" ? \"10px\" : 0,\n }}\n >\n <TextField\n label=\"Find\"\n variant=\"outlined\"\n className={classes.search_input}\n onChange={(e) => setTimeSearch(e.target.value)}\n />\n <Button\n onClick={() =>\n doSomethingWith(\n `${searchBar}**|tz=${localUserTimezone}|earliest=-${timeSearch}|**`\n )\n }\n variant=\"outlined\"\n className={classes.search_button}\n >\n Ago\n </Button>\n </form>\n <ToggleButtonGroup\n size=\"small\"\n value={time}\n exclusive\n onChange={handleTimeChange}\n >\n <ToggleButton\n style={{ textTransform: \"none\" }}\n value=\"all\"\n onClick={() =>\n setTimeFilter(`**|tz=${localUserTimezone}|earliest=all|**`)\n }\n >\n All\n </ToggleButton>\n <ToggleButton\n style={{ textTransform: \"none\" }}\n value=\"twentyfour\"\n onClick={() =>\n setTimeFilter(`**|tz=${localUserTimezone}|earliest=-24h|**`)\n }\n >\n 1d\n </ToggleButton>\n <ToggleButton\n style={{ textTransform: \"none\" }}\n value=\"twodays\"\n onClick={() =>\n setTimeFilter(`**|tz=${localUserTimezone}|earliest=-2d|**`)\n }\n >\n 2d\n </ToggleButton>\n <ToggleButton\n style={{ textTransform: \"none\" }}\n value=\"week\"\n onClick={() =>\n setTimeFilter(`**|tz=${localUserTimezone}|earliest=-1w|**`)\n }\n >\n 1w\n </ToggleButton>\n <ToggleButton\n style={{ textTransform: \"none\" }}\n value=\"month\"\n onClick={() =>\n setTimeFilter(`**|tz=${localUserTimezone}|earliest=-1m|**`)\n }\n >\n 1m\n </ToggleButton>\n </ToggleButtonGroup>\n {userRole !== \"web\" && (\n <Tooltip title=\"Show/Hide/Gray Processed\">\n <label htmlFor=\"icon-show-processed\">\n <IconButton\n color=\"primary\"\n aria-label=\"show_processed\"\n component=\"span\"\n onClick={() => toggleProcessed()}\n >\n {processedCounter === 2 && <FormatPaintIcon />}\n {processedCounter === 3 && <VisibilityOffIcon />}\n {processedCounter === 1 && <VisibilityIcon />}\n </IconButton>\n </label>\n </Tooltip>\n )}\n <Tooltip title=\"Copy Full URL to Clipboard\">\n <label htmlFor=\"icon-show-clipboard\">\n <IconButton\n color=\"primary\"\n aria-label=\"copy_to_clipboard\"\n component=\"span\"\n onClick={() => {\n console.log(\"copied to clipboard\");\n copy(window.location.origin + \"/#/cewl?q=\" + searchBar);\n }}\n >\n <FileCopyIcon fontSize=\"small\" />\n </IconButton>\n </label>\n </Tooltip>\n {userRole === \"super_admin\" ? (\n <>\n <Tooltip title=\"Cewl edit\">\n <label htmlFor=\"cewl-edit\">\n <IconButton\n color=\"primary\"\n aria-label=\"edit\"\n component=\"span\"\n onClick={() => {\n redirectEdit(history);\n }}\n >\n <EditIcon fontSize=\"small\" />\n </IconButton>\n </label>\n </Tooltip>\n <Tooltip title=\"Create\">\n <label htmlFor=\"cewl-create\">\n <IconButton\n color=\"primary\"\n aria-label=\"cewl_create\"\n component=\"span\"\n onClick={() => {\n history.push(`${props.basePath}/create`);\n }}\n >\n <ListAdd />\n </IconButton>\n </label>\n </Tooltip>{\" \"}\n </>\n )\n : <Tooltip title=\"Cewl show\">\n <label htmlFor=\"cewl-show\">\n <IconButton\n color=\"primary\"\n aria-label=\"show\"\n component=\"span\"\n onClick={() => {\n redirectShow(history);\n }}\n >\n <FindInPageIcon fontSize=\"small\" />\n </IconButton>\n </label>\n </Tooltip>\n }\n </Box>\n </Grid>\n </Grid>\n <br />\n </div>\n <div\n className={gridTheme}\n style={{\n flex: \"1 1 0px\",\n overflow: \"hidden !important\",\n display: \"grid\",\n }}\n >\n <AgGridReact\n gridOptions={gridOptions}\n rowData={rowData}\n checkboxSelection\n rowGroup\n >\n {columnDefs.map((column) => (\n <AgGridColumn {...column} key={column.headerName} sortable filter />\n ))}\n </AgGridReact>\n </div>\n </>\n );\n};\n\nexport default CewlList;\n","import CewlCreate from \"./CewlCreate\";\nimport CewlEdit from \"./CewlEdit\";\nimport CewlList from \"./CewlList\";\n\n\nconst Cewl = {\n create: CewlCreate,\n edit: CewlEdit,\n list: CewlList,\n};\n\nexport default Cewl;\n","import React from \"react\";\n\nconst LegitLazy = React.lazy(() => import('./Legit'));\n\n\nconst Ioc = {\n list: LegitLazy,\n};\n\nexport default Ioc;\n","import React from \"react\";\n\nconst DealRegistrationListLazy = React.lazy(() => import('./DealRegistrationList'));\nconst DealRegistrationCreateLazy = React.lazy(() => import('./DealRegistrationCreate'));\nconst DealRegistrationEditLazy = React.lazy(() => import('./DealRegistrationEdit'));\nconst DealRegistrationShowLazy = React.lazy(() => import('./DealRegistrationShow'));\n\n\nconst DealRegistration = {\n list: DealRegistrationListLazy,\n create: DealRegistrationCreateLazy,\n edit: DealRegistrationEditLazy,\n show: DealRegistrationShowLazy,\n};\n\nexport default DealRegistration;\n","import React from \"react\";\n\nconst ProcessedListLazy = React.lazy(() => import('./ProcessedList'));\nconst ProcessedCreateLazy = React.lazy(() => import('./ProcessedCreate'));\nconst ProcessedEditLazy = React.lazy(() => import('./ProcessedEdit'));\nconst ProcessedShowLazy = React.lazy(() => import('./ProcessedShow'));\n\n\nconst Processed = {\n list: ProcessedListLazy,\n create: ProcessedCreateLazy,\n edit: ProcessedEditLazy,\n show: ProcessedShowLazy,\n};\n\nexport default Processed;\n","import React from \"react\";\n\nconst NotificationListLazy = React.lazy(() => import('./NotificationList'));\nconst NotificationCreateLazy = React.lazy(() => import('./NotificationCreate'));\nconst NotificationEditLazy = React.lazy(() => import('./NotificationEdit'));\nconst NotificationShowLazy = React.lazy(() => import('./NotificationShow'));\n\n\nconst Notification = {\n list: NotificationListLazy,\n create: NotificationCreateLazy,\n edit: NotificationEditLazy,\n show: NotificationShowLazy,\n};\n\nexport default Notification;\n","import React, { useState, useEffect } from \"react\";\nimport { usePermissions } from \"react-admin\";\nimport {\n Card,\n CardContent,\n CardHeader,\n makeStyles,\n Link,\n List,\n ListItem,\n} from \"@material-ui/core\";\nimport { WidthProvider, Responsive } from \"react-grid-layout\";\nimport \"react-grid-layout/css/styles.css\";\nimport \"react-resizable/css/styles.css\";\n\n// Grab the configuration endpoints\nimport myEndpoints from \"../config\";\nimport { useNotify, useRedirect } from \"ra-core\";\nconst ReactGridLayout = WidthProvider(Responsive);\n\nconst useStyles = makeStyles({\n mainTitle: {\n fontFamily: \"Barlow\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n header: {\n fontFamily: \"Barlow\",\n },\n link: {\n display: \"block\",\n fontWeight: \"bold\",\n marginBottom: \"15px\",\n },\n list: {\n marginBottom: \"15px\",\n },\n list_item: {\n paddingTop: 0,\n paddingBottom: \"10px\",\n },\n hidden_block: {\n display: \"none\",\n },\n});\n\nconst base_documentation = myEndpoints().REACT_APP_DOCUMENTATION_URL;\n\nconst Dashboard = () => {\n const [userRole, setUserRole] = useState();\n const { permissions } = usePermissions();\n const classes = useStyles();\n const notify = useNotify();\n const redirect = useRedirect();\n\n // To check whether token expired or not\n const validateToken = () => {\n const access_token = localStorage.getItem(\"access_token\");\n const myHeaders = new Headers({ Authorization: \"Bearer \" + access_token });\n\n try {\n // TODO DETERMINE WHY WE HAVE 48 HERE??\n // THIS COULD BE THE BUG THAT SOMETIMES IT RETURNS AN INVALID LOGIN REQUEST THEN NEED TO LOGIN AGAIN.\n fetch(myEndpoints().REACT_APP_CRUD_ADMIN_ENDPOINT + \"/company/\" + \"48\", {\n method: \"GET\",\n headers: myHeaders,\n mode: \"cors\",\n })\n .then((response) => response.json())\n .then((data) => {\n if (\n (data.status && data.status === 401) ||\n (data.status_code && data.status_code === 401)\n ) {\n // we need to log back in\n notify(\"Logged in token no longer valid\", \"Error\");\n redirect(\"/login\");\n }\n })\n .catch((error) => {\n console.log(error);\n });\n } catch {\n console.log(\"Caught the err\");\n }\n }\n\n useEffect(() => {\n validateToken();\n }, []);\n\n useEffect(() => {\n permissions && permissions.rls && setUserRole(permissions.rls);\n }, [permissions]);\n\n return (\n <ReactGridLayout\n breakpoints={{ lg: 1200, md: 996, sm: 768, xs: 480, xxs: 0 }}\n cols={{ lg: 4, md: 3, sm: 2, xs: 1, xxs: 1 }}\n rowHeight={100}\n width={1200}\n isResizable={false}\n verticalCompact\n >\n <Card key=\"a\" data-grid={{ x: 0, y: 0, w: 4, h: 1, static: true }} >\n <CardHeader\n classes={{ title: classes.title }}\n align=\"center\"\n title=\"CTCI Documentation\"\n />\n </Card>\n <div key=\"b\" data-grid={{ x: 0, y: 1, w: 1, h: 4.35 }}>\n <Card>\n <CardHeader\n classes={{ title: classes.title }}\n title=\"CEWL Documentation\"\n />\n <CardContent>\n <Link\n href={\"https://ctci.atlassian.net/wiki/spaces/CTCIDOC/pages/194248845/Getting+started\"}\n target=\"_blank\"\n rel=\"noreferrer\"\n className={classes.link}\n >\n Getting Started Guide\n </Link>\n <Link\n href={\"https://ctci.atlassian.net/wiki/spaces/CTCIDOC/pages/323452932/CEWL+User+Guide\"}\n target=\"_blank\"\n rel=\"noreferrer\"\n className={classes.link}\n >\n CEWL User Guide\n </Link>\n <List className={classes.list}>\n <Link\n href={\"https://ctci.atlassian.net/wiki/spaces/CTCIDOC/pages/325517390/Notification+Filters\"}\n target=\"_blank\"\n rel=\"noreferrer\"\n className={classes.link}\n >\n Filters\n </Link>\n </List>\n <List className={classes.list}>\n <Link\n href={\"https://ctci.atlassian.net/wiki/spaces/CTCIDOC/pages/325353473/Notification+Groups\"}\n target=\"_blank\"\n rel=\"noreferrer\"\n className={classes.link}\n >\n Notification Groups\n </Link>\n </List>\n <List className={classes.list}>\n <Link\n href={\"https://ctci.atlassian.net/wiki/spaces/CTCIDOC/pages/325484563/Notification+Delivery\"}\n target=\"_blank\"\n rel=\"noreferrer\"\n className={classes.link}\n >\n Notification Delivery\n </Link>\n </List>\n <List className={classes.list}>\n <Link\n href={\"https://ctci.atlassian.net/wiki/spaces/CTCIDOC/pages/329416770/Processed\"}\n target=\"_blank\"\n rel=\"noreferrer\"\n className={classes.link}\n >\n Processing\n </Link>\n </List>\n </CardContent>\n <CardContent>Keeping it CEWL!</CardContent>\n </Card>\n </div>\n <div key=\"c\" data-grid={{ x: 1, y: 1, w: 1, h: 3.6 }}>\n <Card>\n <CardHeader\n classes={{ title: classes.header }}\n title=\"Legit Documentation\"\n />\n <CardContent>\n <Link\n href={\"https://ctci.atlassian.net/wiki/spaces/CTCIDOC/pages/362807297/LEGIT+User+Guide\"}\n target=\"_blank\"\n rel=\"noreferrer\"\n className={classes.link}\n >\n Legit User Guide\n </Link>\n </CardContent>\n <CardContent>IOCs for free - now that is Legit!</CardContent>\n </Card>\n </div>\n <div key=\"d\" data-grid={{ x: 2, y: 1, w: 1, h: 3.5 }}>\n <Card>\n <CardHeader\n classes={{ title: classes.header }}\n title=\"API Documentation\"\n />\n <CardContent>\n <Link\n href={\"https://ctci.atlassian.net/wiki/spaces/CTCIDOC/pages/399376385/API+Developers+Guide\"}\n target=\"_blank\"\n rel=\"noreferrer\"\n className={classes.link}\n >\n API Documentation\n </Link>\n\n </CardContent>\n <CardContent>Hit up the API!</CardContent>\n </Card>\n </div>\n <div key=\"e\" data-grid={{ x: 3, y: 1, w: 1, h: 8 }}>\n <Card>\n <CardHeader\n classes={{ title: classes.header }}\n title=\"Portal Documentation\"\n />\n <CardContent>\n <Link\n href={\"https://ctci.atlassian.net/wiki/spaces/CTCIDOC/pages/340525116/CTCI+Portal\"}\n target=\"_blank\"\n rel=\"noreferrer\"\n className={classes.link}\n >\n Introduction to Portal\n </Link>\n <List className={classes.list}>\n <Link\n href={\"https://ctci.atlassian.net/wiki/spaces/CTCIDOC/pages/329417156/Users\"}\n target=\"_blank\"\n rel=\"noreferrer\"\n className={classes.link}\n >\n Users\n </Link>\n <ListItem className={classes.list_item}>\n <Link\n href={\"https://ctci.atlassian.net/wiki/spaces/CTCIDOC/pages/329417156/Users\"}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Adding Users\n </Link>\n </ListItem>\n <ListItem className={classes.list_item}>\n <Link\n href={\"https://ctci.atlassian.net/wiki/spaces/CTCIDOC/pages/329417156/Users#Delete-a-User\"}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Deleting Users\n </Link>\n </ListItem>\n <ListItem className={classes.list_item}>\n <Link\n href={\"https://ctci.atlassian.net/wiki/spaces/CTCIDOC/pages/329417156/Users#How-to-Edit-a-User\"}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Updating Users\n </Link>\n </ListItem>\n </List>\n\n {/* will need different menu items for different roles */}\n <List className={classes.list}>\n <Link\n href={\"https://ctci.atlassian.net/wiki/spaces/CTCIDOC/pages/329285785/Company\"}\n target=\"_blank\"\n rel=\"noreferrer\"\n className={classes.link}\n >\n Company\n </Link>\n <ListItem className={classes.list_item}>\n <Link\n href={\"https://ctci.atlassian.net/wiki/spaces/CTCIDOC/pages/329285785/Company#Companies-within-the-CTCI-Portal\"}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Adding Companies\n </Link>\n </ListItem>\n <ListItem className={classes.list_item}>\n <Link\n href={\"https://ctci.atlassian.net/wiki/spaces/CTCIDOC/pages/329285785/Company#Delete-a-Company\"}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Deleting Companies\n </Link>\n </ListItem>\n <ListItem className={classes.list_item}>\n <Link\n href={\"https://ctci.atlassian.net/wiki/spaces/CTCIDOC/pages/329285785/Company#How-to-Edit-a-Company\"}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Updating Companies\n </Link>\n </ListItem>\n <ListItem className={classes.list_item}>\n <Link\n href={\"https://ctci.atlassian.net/wiki/spaces/CTCIDOC/pages/329416709/Email+Domains\"}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Managing Email Domains\n </Link>\n </ListItem>\n </List>\n <List className={classes.list}>\n <Link\n href={\"https://ctci.atlassian.net/wiki/spaces/CTCIDOC/pages/329416854/Tokens\"}\n target=\"_blank\"\n rel=\"noreferrer\"\n className={classes.link}\n >\n API Tokens\n </Link>\n <ListItem className={classes.list_item}>\n <Link\n href={\"https://swagger.cewl.ctci.ai/\"}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Swagger API Documentation\n </Link>\n </ListItem>\n <ListItem className={classes.list_item}>\n <Link\n href={\"https://ctci.atlassian.net/wiki/spaces/CTCIDOC/pages/329416854/Tokens#Tokens-within-the-CTCI-Portal\"}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Adding API Tokens\n </Link>\n </ListItem>\n <ListItem className={classes.list_item}>\n <Link\n href={\"https://ctci.atlassian.net/wiki/spaces/CTCIDOC/pages/329416854/Tokens#Delete-an-API-Token-entry\"}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Deleting Tokens\n </Link>\n </ListItem>\n <ListItem className={classes.list_item}>\n <Link\n href={\"https://ctci.atlassian.net/wiki/spaces/CTCIDOC/pages/329416854/Tokens#How-to-Edit-an-API-Token-Entry\"}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Updating Tokens\n </Link>\n </ListItem>\n <ListItem className={classes.list_item}>\n <Link\n href={base_documentation}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n How to call it in Python, Javascript\n </Link>\n </ListItem>\n </List>\n <List>\n <Link\n href={base_documentation}\n target=\"_blank\"\n rel=\"noreferrer\"\n className={classes.link}\n >\n Introduction to Notifications\n </Link>\n <ListItem className={classes.list_item}>\n <Link\n href={base_documentation}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Introduction to Notifications\n </Link>\n </ListItem>\n <ListItem className={classes.list_item}>\n <Link\n href={base_documentation}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Creating Notifications\n </Link>\n </ListItem>\n <ListItem className={classes.list_item}>\n <Link\n href={base_documentation}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Creating Notification Delivery\n </Link>\n </ListItem>\n </List>\n </CardContent>\n <CardContent>Making things better</CardContent>\n </Card>\n </div>\n <div key=\"j\" data-grid={{ x: 1, y: 1, w: 1, h: 3.6 }}>\n <Card>\n <CardHeader\n classes={{ title: classes.header }}\n title=\"Release Notes\"\n />\n <CardContent>\n <Link\n href={\"https://ctci.atlassian.net/wiki/spaces/CTCIDOC/pages/457113836/Release+Notes\"}\n target=\"_blank\"\n rel=\"noreferrer\"\n className={classes.link}\n >\n Release Notes\n </Link>\n\n </CardContent>\n <CardContent>Check the latest release notes!</CardContent>\n </Card>\n </div>\n {/* only for Distributors, super-admin, OEM and resellers */}\n\n <div key=\"f\" data-grid={{ x: 0, y: 2, w: 1, h: 3.5 }}>\n {userRole === \"distributor_admin\" ||\n userRole === \"super_admin\" ||\n userRole === \"oem_admin\" ||\n userRole === \"reseller_admin\" ? (\n <Card>\n <CardHeader\n classes={{ title: classes.header }}\n title=\"Deal Registration\"\n />\n <CardContent>\n <Link\n href={base_documentation}\n target=\"_blank\"\n rel=\"noreferrer\"\n className={classes.link}\n >\n Deal Registration\n </Link>\n <List>\n <Link\n href={base_documentation}\n target=\"_blank\"\n rel=\"noreferrer\"\n className={classes.link}\n >\n Creating a Deal\n </Link>\n <ListItem className={classes.list_item}>\n <Link\n href={base_documentation}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Removing a Deal\n </Link>\n </ListItem>\n <ListItem className={classes.list_item}>\n <Link\n href={base_documentation}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Managing a Deal\n </Link>\n </ListItem>\n <ListItem className={classes.list_item}>\n <Link\n href={base_documentation}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Start Customer Trial\n </Link>\n </ListItem>\n <ListItem className={classes.list_item}>\n <Link\n href={base_documentation}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Notification of Approval\n </Link>\n </ListItem>\n <ListItem className={classes.list_item}>\n <Link\n href={base_documentation}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Length of Deal\n </Link>\n </ListItem>\n </List>\n </CardContent>\n <CardContent>Deal it up!</CardContent>\n </Card>\n ) : null}\n </div>\n\n {/* only for OEMS/ MSSPs */}\n <div key=\"g\" data-grid={{ x: 1, y: 2, w: 1, h: 2.7 }}>\n {userRole === \"oem_admin\" && (\n <Card>\n <CardHeader\n classes={{ title: classes.header }}\n title=\"OEM/MSSP Management\"\n />\n <CardContent>\n <Link\n href={base_documentation}\n target=\"_blank\"\n rel=\"noreferrer\"\n className={classes.link}\n >\n OEM Management\n </Link>\n <List>\n <Link\n href={base_documentation}\n target=\"_blank\"\n rel=\"noreferrer\"\n className={classes.link}\n >\n Trialing Companies\n </Link>\n <ListItem className={classes.list_item}>\n <Link\n href={base_documentation}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Managing Companies\n </Link>\n </ListItem>\n <ListItem className={classes.list_item}>\n <Link\n href={base_documentation}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Expiry Handling\n </Link>\n </ListItem>\n </List>\n </CardContent>\n <CardContent>Deal it up!</CardContent>\n </Card>\n )}\n </div>\n\n {/* Partners */}\n <div key=\"h\" data-grid={{ x: 2, y: 2, w: 1, h: 2.7 }}>\n {userRole === \"partner_admin\" && (\n <Card>\n <CardHeader\n classes={{ title: classes.header }}\n title=\"Partner Management\"\n />\n <CardContent>\n <Link\n href={base_documentation}\n target=\"_blank\"\n rel=\"noreferrer\"\n className={classes.link}\n >\n Partner Management\n </Link>\n <List>\n <Link\n href={base_documentation}\n target=\"_blank\"\n rel=\"noreferrer\"\n className={classes.link}\n >\n Adding Partners\n </Link>\n <ListItem className={classes.list_item}>\n <Link\n href={base_documentation}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Managing Partners\n </Link>\n </ListItem>\n <ListItem className={classes.list_item}>\n <Link\n href={base_documentation}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Expiry Handling\n </Link>\n </ListItem>\n </List>\n </CardContent>\n <CardContent>Keep the world safer!</CardContent>\n </Card>\n )}\n </div>\n <div key=\"i\" data-grid={{ x: 0, y: 4, w: 4, h: 1 }}>\n <Card>\n <CardHeader\n classes={{ title: classes.header }}\n title=\"Documentation\"\n />\n <CardContent>\n Our documentation is stored in the cloud version of Atlassian\n Confluence\n </CardContent>\n </Card>\n </div>\n </ReactGridLayout>\n );\n};\n\nexport default Dashboard;\n","import Dashboard from \"./Dashboard\";\n\nexport default Dashboard;\n","export default __webpack_public_path__ + \"static/media/ctci_icon_only.422df250.svg\";","export default __webpack_public_path__ + \"static/media/warp_speed.3c2a05eb.jpg\";","import React, { useState, useEffect, useCallback } from \"react\";\nimport { useLocation } from \"react-router-dom\";\nimport PropTypes from \"prop-types\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport Snackbar, { SnackbarProps } from \"@material-ui/core/Snackbar\";\nimport Button from \"@material-ui/core/Button\";\nimport { makeStyles, Theme } from \"@material-ui/core/styles\";\nimport classnames from \"classnames\";\nimport { useNotify } from \"react-admin\";\n\nimport {\n hideNotification,\n getNotification,\n undo,\n complete,\n undoableEventEmitter,\n useTranslate,\n} from \"ra-core\";\n\ninterface Props {\n type?: string;\n}\n\nconst useStyles = makeStyles(\n (theme: Theme) => ({\n error: {\n backgroundColor: theme.palette.error.light,\n color: theme.palette.error.contrastText,\n },\n warning: {\n backgroundColor: theme.palette.error.light,\n color: theme.palette.error.contrastText,\n },\n undo: {\n color: theme.palette.primary.light,\n },\n }),\n { name: \"RaNotification\" }\n);\n\nconst Notification: React.FunctionComponent<\n Props & Omit<SnackbarProps, \"open\">\n> = (props) => {\n const {\n classes: classesOverride,\n type,\n className,\n autoHideDuration,\n ...rest\n } = props;\n const [open, setOpen] = useState(false);\n const [errorMessage, setErrorMessage] = useState();\n const notification = useSelector(getNotification);\n const dispatch = useDispatch();\n const translate = useTranslate();\n const notify = useNotify();\n const location = useLocation();\n const styles = useStyles(props);\n\n useEffect(() => {\n setOpen(!!notification);\n }, [notification]);\n\n useEffect(() => {\n if (\n notification &&\n notification.message &&\n notification.message.includes(\"item_doesnt_exist\")\n ) {\n if (window.location.href.includes(\"user\")) {\n // @ts-ignore\n setErrorMessage(\"Invalid user id\");\n } else {\n // @ts-ignore\n setErrorMessage(\"Bad request, value incorrect format\");\n }\n }\n if (\n notification &&\n notification.message &&\n notification.message.includes(\"deleted\")\n ) {\n // @ts-ignore\n setErrorMessage(\"Deleted\");\n } else {\n notification &&\n notification.message &&\n setErrorMessage(notification.message);\n }\n }, [notification]);\n console.log(notification);\n\n const handleRequestClose = useCallback(() => {\n setOpen(false);\n }, [setOpen]);\n\n const handleExited = useCallback(() => {\n if (notification && notification.undoable) {\n dispatch(complete());\n undoableEventEmitter.emit(\"end\", { isUndo: false });\n }\n dispatch(hideNotification());\n }, [dispatch, notification]);\n\n const handleUndo = useCallback(() => {\n dispatch(undo());\n undoableEventEmitter.emit(\"end\", { isUndo: true });\n }, [dispatch]);\n\n return (\n <Snackbar\n open={open}\n message={\n notification &&\n notification.message &&\n translate(notification.message, notification.messageArgs)\n }\n autoHideDuration={\n (notification && notification.autoHideDuration) || autoHideDuration\n }\n disableWindowBlurListener={notification && notification.undoable}\n onExited={handleExited}\n onClose={handleRequestClose}\n ContentProps={{\n className: classnames(\n styles[(notification && notification.type) || type],\n className\n ),\n }}\n action={\n notification && notification.undoable ? (\n <Button\n color=\"primary\"\n className={styles.undo}\n size=\"small\"\n onClick={handleUndo}\n >\n {translate(\"ra.action.undo\")}\n </Button>\n ) : null\n }\n {...rest}\n />\n );\n};\n\nNotification.propTypes = {\n type: PropTypes.string,\n};\n\nNotification.defaultProps = {\n type: \"info\",\n autoHideDuration: 4000,\n};\n\nexport default Notification;\n","import React, { useEffect, useState } from \"react\";\nimport Button from \"@material-ui/core/Button\";\nimport CssBaseline from \"@material-ui/core/CssBaseline\";\nimport TextField from \"@material-ui/core/TextField\";\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\nimport Checkbox from \"@material-ui/core/Checkbox\";\nimport Link from \"@material-ui/core/Link\";\nimport Grid from \"@material-ui/core/Grid\";\nimport Box from \"@material-ui/core/Box\";\n\n// to be used if account comes back with Locked out\n// import LockOutlinedIcon from \"@material-ui/icons/LockOutlined\";\n\nimport Typography from \"@material-ui/core/Typography\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Container from \"@material-ui/core/Container\";\nimport { useLogin, useNotify } from \"react-admin\";\nimport Paper from \"@material-ui/core/Paper\";\n\nimport { Icon } from \"@material-ui/core\";\nimport YourLogo from \"./images/ctci_icon_only.svg\";\nimport Image from \"./images/warp_speed.jpg\";\nimport Notification from \"../layout/Notification\";\n\nfunction Copyright() {\n return (\n <Typography variant=\"body2\" color=\"textSecondary\" align=\"center\">\n {\"Copyright © \"}\n <Link color=\"inherit\" href=\"https://ctci.ai\">\n CTCI\n </Link>{\" \"}\n {`${new Date().getFullYear()} .`}\n </Typography>\n );\n}\n\nconst divStyle = {\n backgroundPosition: \"center\",\n backgroundSize: \"cover\",\n backgroundRepeat: \"no-repeat\",\n width: \"100vw\",\n height: \"100vh\",\n backgroundImage: `url(${Image})`,\n\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n};\n\nconst useStyles = makeStyles((theme) => ({\n paper: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n backgroundColor: \"rgba(255, 255, 255, 1.0)\",\n },\n form: {\n width: \"100%\", // Fix IE 11 issue.\n marginTop: theme.spacing(1),\n },\n submit: {\n backgroundColor: \"#3f51b5\",\n margin: theme.spacing(3, 0, 2),\n \"&:hover\": {\n backgroundColor: \"#303f9f\",\n },\n },\n input: {\n \"& input:-webkit-autofill\": {\n boxShadow: \"0 0 0 500px white inset\",\n },\n },\n text: {\n color: \"#3f51b5\",\n display: \"block\",\n width: \"max-content\",\n \"& > span > span\": {\n color: \"#3f51b5\",\n },\n },\n}));\n\nconst MyCoolLoginPage = () => {\n const classes = useStyles();\n const [username, setUsername] = useState(\"\");\n const [password, setPassword] = useState(\"\");\n const [remember, setRemember] = useState(false);\n const login = useLogin();\n const notify = useNotify();\n\n localStorage.setItem(\"front_end_host_url\", window.location.origin);\n\n const submit = (e) => {\n e.preventDefault();\n if (remember && username) {\n localStorage.setItem(\"username\", username);\n localStorage.setItem(\"remember\", remember);\n } else {\n localStorage.removeItem(\"username\");\n localStorage.removeItem(\"remember\");\n }\n login({ username, password }).catch((error) => {\n notify(error.message, \"error\");\n });\n };\n\n useEffect(() => {\n const loggedInUser = localStorage.getItem(\"username\");\n const isChecked = localStorage.getItem(\"remember\");\n if (isChecked) {\n setRemember(isChecked);\n if (loggedInUser) {\n setUsername(loggedInUser);\n }\n }\n }, []);\n\n return (\n <div style={divStyle}>\n <Container component=\"main\" maxWidth=\"xs\">\n <CssBaseline />\n <Paper className={classes.paper}>\n <Box m={1} pt={2} pb={1}>\n <div align={\"center\"}>\n <Icon>\n <img src={YourLogo} height={25} width={25} alt=\"logo\" />\n </Icon>\n </div>\n </Box>\n <Box m={-2} pt={-3}>\n <Typography component=\"h1\" variant=\"h5\" align={\"center\"}>\n This is the way\n </Typography>\n </Box>\n <Box m={2} pt={-1}>\n <form className={classes.form} onSubmit={submit}>\n <TextField\n variant=\"outlined\"\n margin=\"normal\"\n required\n fullWidth\n id=\"username\"\n label=\"Email Address\"\n name=\"email\"\n autoComplete=\"username\"\n autoFocus\n value={username && username}\n onChange={(e) => setUsername(e.target.value)}\n className={classes.input}\n />\n <TextField\n variant=\"outlined\"\n margin=\"normal\"\n required\n fullWidth\n name=\"password\"\n label=\"Password\"\n type=\"password\"\n id=\"password\"\n autoComplete=\"current-password\"\n onChange={(e) => setPassword(e.target.value)}\n className={classes.input}\n />\n <FormControlLabel\n control={<Checkbox value=\"remember\" color=\"primary\" />}\n onChange={(e) => setRemember(e.target.checked)}\n label=\"Remember me\"\n checked={!!remember}\n className={classes.text}\n />\n <Button\n type=\"submit\"\n fullWidth\n variant=\"contained\"\n color=\"primary\"\n className={classes.submit}\n >\n Sign In\n </Button>\n <Grid container>\n <Grid item xs>\n <Link\n href=\"#/forgot_password\"\n variant=\"body2\"\n className={classes.text}\n >\n Forgot password?\n </Link>\n </Grid>\n <Grid item>\n <Link\n href=\"/#/register\"\n variant=\"body2\"\n className={classes.text}\n >\n {\"Don't have an account? Sign Up\"}\n </Link>\n </Grid>\n </Grid>\n </form>\n </Box>\n <Box mt={4}>\n <Copyright />\n </Box>\n </Paper>\n </Container>\n <Notification />\n </div>\n );\n};\n\nexport default MyCoolLoginPage;\n","import React, { useEffect } from \"react\";\nimport { useRedirect } from \"react-admin\";\n\n\n// Users the user's profile edit for the user\nconst EditProfileForm = (props) => {\n\n // for redirect to user edit page\n const redirect = useRedirect();\n\n useEffect(() => {\n redirect(\"/user/\" + localStorage.getItem(\"user_id\", \"0\"));\n });\n\n return <div></div>;\n};\n\nexport default EditProfileForm;\n","import React from \"react\";\nimport { FaCheck } from \"react-icons/fa\";\n\nconst smallerText = {\n fontSize: \"90%\",\n};\n\nconst Requirement = ({ htmlFor, isvalid, validMessage, invalidMessage }) => (\n <label\n htmlFor={htmlFor}\n className={!isvalid ? `invalid` : `valid`}\n style={smallerText}\n >\n <FaCheck />\n <span>{!isvalid ? invalidMessage : validMessage}</span>\n </label>\n);\n\nexport default Requirement;\n","import React from \"react\";\nimport Requirement from \"./Requirement\";\n\nconst Requirements = ({ long, number, mixed, special }) => (\n <section className=\"strength-meter\">\n <h4>Password Requirements</h4>\n <Requirement\n htmlFor=\"new_password\"\n isvalid={long}\n invalidMessage=\"We like long passwords, at least 8 characters if you could\"\n validMessage=\"Sweet, that's long enough for us!\"\n />\n <Requirement\n htmlFor=\"new_password\"\n isvalid={number}\n invalidMessage=\"Make it tricky to guess, adding a number makes it more secure\"\n validMessage=\"Nice, now you're safer than the average Joe\"\n />\n <Requirement\n htmlFor=\"new_password\"\n isvalid={mixed}\n invalidMessage=\"We like passwords that have mixed capitals \"\n validMessage=\"You are mixing upper and lower case like a DJ\"\n />\n <Requirement\n htmlFor=\"new_password\"\n isvalid={special}\n invalidMessage=\"Make it real hard to guess with some special characters\"\n validMessage=\"Nice, you must be a Legit cybersecurity expert!\"\n />\n </section>\n);\n\nexport default Requirements;\n","import React, { useState, useEffect } from \"react\";\nimport { Formik } from \"formik\";\n\nimport Requirements from \"./Requirements\";\nimport { usePreferences } from \"@react-admin/ra-preferences\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Container from \"@material-ui/core/Container\";\nimport Box from \"@material-ui/core/Box\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Grid from \"@material-ui/core/Grid\";\n\nimport Snackbar from \"@material-ui/core/Snackbar\";\nimport MuiAlert from \"@material-ui/lab/Alert\";\n\n// our fonts\nimport { createTheme , ThemeProvider } from \"@material-ui/core/styles\";\nimport CssBaseline from \"@material-ui/core/CssBaseline\";\n\nimport myEndpoints from \"../config\";\n\n// put in a font theme\nconst theme = createTheme ({\n typography: {\n fontFamily: [\"Arial, Data70\"].join(\",\"),\n },\n});\n\nconst divStyle = {\n backgroundPosition: \"center\",\n backgroundSize: \"cover\",\n backgroundRepeat: \"no-repeat\",\n width: \"100%\",\n height: \"100%\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n};\n\n// for the dropdown\nconst useStyles = makeStyles((theme) => ({\n root: {\n \"& > *\": {\n margin: theme.spacing(1),\n width: \"25ch\",\n fontSize: \"100%\",\n },\n },\n field: {\n padding: \"16px\",\n border: \"1px solid #ccc\",\n marginTop: \"16px\",\n width: \"100%\",\n },\n}));\n\n// For the snackbox alert\nconst snackBoxStyles = makeStyles((theme) => ({\n root: {\n width: \"100%\",\n \"& > * + *\": {\n marginTop: theme.spacing(2),\n },\n },\n}));\n\nconst FancyChangePassword = (props) => {\n const classes = useStyles();\n const snackBox = snackBoxStyles();\n const [long, longEnough] = useState(false);\n const [number, hasNumber] = useState(false);\n const [mixed, hasMixed] = useState(false);\n const [special, hasSpecial] = useState(false);\n\n // for showing error message from server, keeping it consistent\n const [openSnackbar, setOpenSnackbar] = useState(true);\n const [preferences, setPreferences] = usePreferences(\"theme\");\n\n useEffect(() => {\n const theme = preferences;\n window.location.href.includes(\"login\") && setPreferences(\"light\");\n return () => setPreferences(theme);\n }, [preferences,setPreferences]);\n\n const handleClose = (event, reason) => {\n if (reason === \"clickaway\") {\n return;\n }\n setOpenSnackbar(false);\n };\n\n const Alert = React.forwardRef(function Alert(props, ref) {\n return <MuiAlert elevation={6} ref={ref} variant=\"filled\" {...props} />;\n });\n\n /**\n * from: https://github.com/github/fetch/issues/203\n * Parses the JSON returned by a network request\n *\n * @param {object} response A response from a network request\n *\n * @return {object} The parsed JSON, status from the response\n */\n function parseJSON(response) {\n return new Promise((resolve) =>\n response.json().then((json) =>\n resolve({\n status: response.status,\n ok: response.ok,\n json,\n })\n )\n );\n }\n\n /**\n * from: https://github.com/github/fetch/issues/203\n * Requests a URL, returning a promise\n *\n * @param {string} url The URL we want to request\n * @param {object} [options] The options we want to pass to \"fetch\"\n *\n * @return {Promise} The request promise\n */\n function request(url, options) {\n return new Promise((resolve, reject) => {\n fetch(url, options)\n .then(parseJSON)\n .then((response) => {\n if (response.ok) {\n return resolve(response.json);\n }\n // extract the error from the server's json\n return reject(response.json);\n })\n .catch((error) =>\n reject({\n status: 503,\n title: \"Network Error\",\n detail: error.message,\n })\n );\n });\n }\n\n // TODO fix this so we don't need state for variables as we are using Formik\n // TODO get the timezone and then work out the country and country region\n\n return (\n <div style={divStyle}>\n <Container\n component={\"main\"}\n maxWidth=\"xs\"\n style={{ background: preferences === \"light\" ? \"#fff\" : \"#424242\" }}\n >\n <Formik\n initialValues={{\n new_password: \"\",\n old_password: \"\",\n backendError: \"\",\n }}\n validate={(values) => {\n values.new_password.length < 8\n ? longEnough(false)\n : longEnough(true);\n !/\\d/.test(values.new_password)\n ? hasNumber(false)\n : hasNumber(true);\n !/(?=.*[a-z])(?=.*[A-Z])/.test(values.new_password)\n ? hasMixed(false)\n : hasMixed(true);\n !/[!@#$%^&*]/.test(values.new_password)\n ? hasSpecial(false)\n : hasSpecial(true);\n }}\n onSubmit={(\n values,\n { resetForm, setErrors, setStatus, setSubmitting }\n ) => {\n let errors = {};\n\n // make popup error allowed again\n setOpenSnackbar(true);\n\n if (!long || !number || !mixed || !special)\n errors.new_password =\n \"Your password needs min 8 characters, a special character, upper and lower case and at least one number \";\n\n // If the errors object is empty then we've successfully met all the requirements\n if (\n Object.entries(errors).length === 0 &&\n errors.constructor === Object\n ) {\n // here we go!\n\n // options.headers = new Headers({ Accept: 'application/json' });\n\n const token = localStorage.getItem(\"access_token\");\n //options.headers.set('Authorization', `Bearer ${token}`);\n\n // create the post\n console.log(values);\n const requestOptions = {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${token}`,\n },\n body: JSON.stringify(values),\n };\n\n const endPoint = localStorage.getItem(\"change_password\");\n // no need to send JWT as it doesn't require anything there\n // https://jasonwatmore.com/post/2020/11/02/react-fetch-http-put-request-examples\n\n window.location.href.includes(\"login\")\n ? request(endPoint, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(values),\n })\n .then((result) => {\n localStorage.removeItem(\"change_password\");\n window.location = \"/#/login\";\n })\n .catch((error_json, err) => {\n var the_result = error_json.title !== undefined;\n var the_common_error = error_json.message !== undefined;\n console.log(the_result);\n console.log(the_common_error);\n if (the_common_error) {\n console.log(\"Common error\");\n console.log(error_json.message);\n setStatus(error_json.message);\n } else if (the_result) {\n console.log(\"A formatted error response from backend\");\n console.log(error_json);\n console.log(error_json.title);\n setStatus(error_json.title);\n } else {\n setStatus(\"An error has occurred.\");\n }\n })\n : request(\n myEndpoints().REACT_APP_CRUD_ADMIN_CHANGE_PASSWORD_ENDPOINT,\n requestOptions\n )\n .then((result) => {\n console.log(\"success\");\n console.log(result);\n window.location = \"/#\";\n })\n .catch((error_json, err) => {\n var the_result = error_json.title !== undefined;\n var the_common_error = error_json.message !== undefined;\n console.log(the_result);\n console.log(the_common_error);\n if (the_common_error) {\n console.log(\"Common error\");\n console.log(error_json.message);\n setStatus(error_json.message);\n } else if (the_result) {\n console.log(\"A formatted error response from backend\");\n console.log(error_json);\n console.log(error_json.title);\n setStatus(error_json.title);\n } else {\n setStatus(\"An error has occurred.\");\n }\n });\n // alert(`Great, we've created an account for ${values.username}`);\n // resetForm(); // Reset form for the example\n } else {\n // not sure what this else is for now!\n setStatus(\"Make sure you meet the password complexity\"); // setStatus(errors);\n }\n\n setSubmitting(false);\n }}\n >\n {({\n errors,\n values,\n status,\n handleChange,\n handleSubmit,\n isSubmitting,\n }) => (\n <div>\n <ThemeProvider theme={theme}>\n <CssBaseline />\n <Box m={0} pt={1}>\n <Typography\n component=\"h4\"\n variant=\"h5\"\n align={\"center\"}\n fontFamily={\"Data70\"}\n >\n Change Password\n </Typography>\n </Box>\n </ThemeProvider>\n <div className={\"reg\"}>\n <Box ml={1} m={5} pt={0}>\n <form onSubmit={handleSubmit}>\n <label htmlFor=\"old_password\">\n What is your old password\n </label>\n <input\n className={classes.field}\n id=\"old_password\"\n type=\"password\"\n name=\"old_password\"\n onChange={handleChange}\n required\n value={values.oldPassword}\n />\n <label htmlFor=\"new_password\">\n What do you want your password to be?\n </label>\n <input\n className={classes.field}\n id=\"new_password\"\n type=\"password\"\n name=\"new_password\"\n autoComplete=\"new-password\"\n onChange={handleChange}\n required\n value={values.new_password}\n />\n {errors.new_password && (\n <label className=\"error\" htmlFor=\"new_password\">\n Sorry! {errors.new_password}\n </label>\n )}\n <div>\n <Requirements\n long={long}\n number={number}\n mixed={mixed}\n special={special}\n />\n </div>\n <Box m={-3} p={0} pb={2}>\n <Grid container justify=\"center\">\n <button\n type=\"submit\"\n value=\"Create account\"\n disabled={isSubmitting}\n >\n Change Password\n </button>\n </Grid>\n </Box>\n {status && (\n <Box m={0} p={-2}>\n <div style={{ color: \"black\" }}>\n <Typography\n align=\"center\"\n fontSize=\"10\"\n color=\"primary\"\n >\n Sorry! {status}\n </Typography>\n </div>\n </Box>\n )}\n {status && (\n <div className={snackBox.root}>\n <Snackbar\n open={openSnackbar}\n autoHideDuration={6000}\n onClose={handleClose}\n >\n <Alert onClose={handleClose} severity=\"error\">\n Sorry! {status}\n </Alert>\n </Snackbar>\n </div>\n )}\n </form>\n </Box>\n </div>\n </div>\n )}\n </Formik>\n </Container>\n </div>\n );\n};\n\nexport default FancyChangePassword;\n","import React from \"react\";\nimport \"normalize.css\";\nimport \"../registration/css/styles.css\";\n\nimport FancyChangePassword from \"./FancyChangePassword\";\nimport StyledWrapper from \"../registration/css/Styles\";\n\nexport default function ChangePassword() {\n return (\n <StyledWrapper>\n <FancyChangePassword />\n </StyledWrapper>\n );\n}\n","import React, { useState } from \"react\";\nimport { Formik } from \"formik\";\n\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport Container from \"@material-ui/core/Container\";\nimport Box from \"@material-ui/core/Box\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Grid from \"@material-ui/core/Grid\";\n\nimport Snackbar from \"@material-ui/core/Snackbar\";\nimport MuiAlert from \"@material-ui/lab/Alert\";\n\n// our fonts\nimport { createTheme , ThemeProvider } from \"@material-ui/core/styles\";\nimport CssBaseline from \"@material-ui/core/CssBaseline\";\n\nimport myEndpoints from \"../config\";\n\n// put in a font theme\nconst theme = createTheme ({\n typography: {\n fontFamily: [\"Arial, Data70\"].join(\",\"),\n },\n});\n\nconst divStyle = {\n backgroundPosition: \"center\",\n backgroundSize: \"cover\",\n backgroundRepeat: \"no-repeat\",\n width: \"100%\",\n height: \"100%\",\n\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n};\n\n// for the dropdown\nconst useStyles = makeStyles((theme) => ({\n paper: {\n marginTop: 10,\n marginBottom: 10,\n paddingRight: 15,\n display: \"inline-block\",\n flexDirection: \"column\",\n alignItems: \"center\",\n backgroundColor: \"rgba(255, 255, 255, 1.0)\",\n },\n root: {\n \"& > *\": {\n margin: theme.spacing(1),\n width: \"25ch\",\n fontSize: \"100%\",\n },\n },\n field: {\n padding: \"16px\",\n border: \"1px solid #ccc\",\n marginTop: \"16px\",\n width: \"100%\",\n },\n}));\n\n// For the snackbox alert\nconst snackBoxStyles = makeStyles((theme) => ({\n root: {\n width: \"100%\",\n \"& > * + *\": {\n marginTop: theme.spacing(2),\n },\n },\n}));\n\nconst FancyForgotPasswordForm = () => {\n const classes = useStyles();\n const snackBox = snackBoxStyles();\n\n // for showing error message from server, keeping it consistent\n const [openSnackbar, setOpenSnackbar] = useState(true);\n\n const handleClose = (event, reason) => {\n if (reason === \"clickaway\") {\n return;\n }\n setOpenSnackbar(false);\n };\n\n function Alert(props) {\n return <MuiAlert elevation={6} variant=\"filled\" {...props} />;\n }\n\n /**\n * from: https://github.com/github/fetch/issues/203\n * Parses the JSON returned by a network request\n *\n * @param {object} response A response from a network request\n *\n * @return {object} The parsed JSON, status from the response\n */\n function parseJSON(response) {\n return new Promise((resolve) =>\n response.json().then((json) =>\n resolve({\n status: response.status,\n ok: response.ok,\n json,\n })\n )\n );\n }\n\n /**\n * from: https://github.com/github/fetch/issues/203\n * Requests a URL, returning a promise\n *\n * @param {string} url The URL we want to request\n * @param {object} [options] The options we want to pass to \"fetch\"\n *\n * @return {Promise} The request promise\n */\n function request(url, options) {\n return new Promise((resolve, reject) => {\n fetch(url, options)\n .then(parseJSON)\n .then((response) => {\n if (response.ok) {\n return resolve(response.json);\n }\n return reject(response.json);\n })\n .catch((error) =>\n reject({\n status: 503,\n title: \"Network Error\",\n detail: error.message,\n })\n );\n });\n }\n\n return (\n <div style={divStyle}>\n <Container component={\"main\"} maxWidth=\"xs\">\n <Formik\n initialValues={{ username: \"\", backendError: \"\" }}\n validate={() => {}}\n onSubmit={(values, { setStatus, setSubmitting }) => {\n let errors = {};\n\n // make popup error allowed again\n setOpenSnackbar(true);\n\n // If the errors object is empty then we've successfully met all the requirements\n if (\n Object.entries(errors).length === 0 &&\n errors.constructor === Object\n ) {\n // here we go!\n\n // options.headers = new Headers({ Accept: 'application/json' });\n\n // const token = localStorage.getItem('access_token');\n localStorage.removeItem(\"access_token\");\n //options.headers.set('Authorization', `Bearer ${token}`);\n\n // create the post\n console.log(values);\n const requestOptions = {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(values),\n };\n\n // no need to send JWT as it doesn't require anything there\n // https://jasonwatmore.com/post/2020/11/02/react-fetch-http-put-request-examples\n request(\n myEndpoints().REACT_APP_CRUD_ADMIN_FORGOT_PASSWORD_ENDPOINT,\n requestOptions\n )\n .then((result) => {\n console.log(\"success\");\n console.log(result);\n setStatus(\n \"Please check your email for a new temporary password\"\n );\n setTimeout(function () {\n setSubmitting(true);\n window.location = \"/#/login\";\n setSubmitting(false);\n }, 3000);\n })\n .catch((error_json) => {\n var the_result = error_json.title !== undefined;\n var the_common_error = error_json.message !== undefined;\n console.log(the_result);\n console.log(the_common_error);\n if (the_common_error) {\n console.log(\"Common error\");\n console.log(error_json.message);\n setStatus(error_json.message);\n } else if (the_result) {\n console.log(\"A formatted error response from backend\");\n console.log(error_json);\n console.log(error_json.title);\n setStatus(error_json.title);\n } else {\n setStatus(\"An error has occurred.\");\n }\n });\n // alert(`Great, we've created an account for ${values.username}`);\n // resetForm(); // Reset form for the example\n } else {\n // not sure what this else is for now!\n setStatus(\"An error has occurred\"); // setStatus(errors);\n }\n setStatus(\"Please check your email for a new temporary password\");\n setTimeout(function () {\n setSubmitting(true);\n window.location = \"/#/login\";\n setSubmitting(false);\n }, 6000);\n }}\n >\n {({\n errors,\n values,\n status,\n handleChange,\n handleSubmit,\n isSubmitting,\n }) => (\n <div>\n <ThemeProvider theme={theme}>\n <CssBaseline />\n <Box m={0} pt={1}>\n <Typography\n component=\"h4\"\n variant=\"h5\"\n align={\"center\"}\n fontFamily={\"Data70\"}\n >\n Forgot Password\n </Typography>\n </Box>\n </ThemeProvider>\n <div className={\"reg\"}>\n <Box m={5} pt={0}>\n <form onSubmit={handleSubmit}>\n <label htmlFor=\"email\">\n Where do you live on the Internet?\n </label>\n <input\n className={classes.field}\n id=\"username\"\n type=\"email\"\n name=\"username\"\n onChange={handleChange}\n required\n value={values.email}\n />\n {errors.username && (\n <label className=\"error\" htmlFor=\"new_password\">\n {errors.username}\n </label>\n )}\n\n <Box m={0} p={0} pb={3}>\n <Grid container justifyContent =\"center\">\n <button\n type=\"submit\"\n value=\"Create account\"\n disabled={isSubmitting}\n >\n Forgot Password\n </button>\n </Grid>\n </Box>\n {status && (\n <Box m={0} p={-2}>\n <div style={{ color: \"black\" }}>\n <Typography\n align=\"center\"\n fontSize=\"10\"\n color=\"primary\"\n >\n {status}\n </Typography>\n </div>\n </Box>\n )}\n\n {status && (\n <div className={snackBox.root}>\n <Snackbar\n open={openSnackbar}\n autoHideDuration={3000}\n onClose={handleClose}\n >\n <Alert onClose={handleClose} severity=\"success\">\n {status}\n </Alert>\n </Snackbar>\n </div>\n )}\n </form>\n </Box>\n </div>\n </div>\n )}\n </Formik>\n </Container>\n </div>\n );\n};\n\nexport default FancyForgotPasswordForm;\n","// in src/customRoutes.js\nimport React from \"react\";\nimport { Route } from \"react-router-dom\";\nimport EditProfile from \"./user/EditProfile\";\nimport ChangePassword from \"./auth/ChangePassword\";\nimport ForgotPassword from \"./auth/ForgotPassword\";\nconst RegisterLazy = React.lazy(() => import('./registration/Register'));\n\n\nconst customRoutes = [\n <Route exact path=\"/edit_profile\" component={EditProfile} />,\n <Route exact path=\"/change_password\" component={ChangePassword} />,\n <Route exact path=\"/register\" component={RegisterLazy} noLayout />,\n <Route exact path=\"/forgot_password\" component={ForgotPassword} noLayout />,\n <Route\n exact\n path=\"/login/change_password\"\n component={ChangePassword}\n noLayout\n />,\n];\n\nexport default customRoutes;\n","import React from \"react\";\nimport EditProfileForm from \"./EditProfileForm\";\nimport Paper from \"@material-ui/core/Paper\";\n\nexport default function Register() {\n return (\n <Paper>\n <EditProfileForm />\n </Paper>\n );\n}\n","import React from \"react\";\nimport \"normalize.css\";\nimport \"../registration/css/styles.css\";\n\nimport StyledWrapper from \"../registration/css/Styles\";\n\nimport FancyForgotPasswordForm from \"./FancyForgotPasswordForm\";\n\nexport default function ForgotPassword() {\n return (\n <StyledWrapper>\n <FancyForgotPasswordForm />\n </StyledWrapper>\n );\n}\n","import React from 'react';\nimport { LinearProgress } from \"@material-ui/core\";\n\n\nconst style = {\n width: \"30%\",\n margin: \"auto auto\",\n};\n\nconst ProgressBar = () => {\n return (\n <div style = {style} >\n <LinearProgress />\n </div >\n );\n};\n\nexport default ProgressBar;\n","import React, { useState, useEffect } from \"react\";\nimport { Redirect } from \"react-router\";\nimport {\n Admin,\n Layout,\n Resource,\n fetchUtils,\n defaultTheme,\n usePermissions,\n} from \"react-admin\";\nimport merge from \"lodash/merge\";\nimport authProvider from \"./provider/authProvider\";\nimport DataProvider from \"./provider/dataProvider\";\nimport MyAppBar from \"./MyAppBar\";\n\nimport User from \"./user\";\nimport matchyCewl from \"./matchymatchy/index\"\nimport Company from \"./company\";\nimport EmailDomain from \"./email_domain\";\nimport NotificationGroup from \"./notification_group\";\nimport NotificationDelivery from \"./notification_delivery\";\nimport NotificationFilters from \"./notification_filter\";\nimport Token from \"./token\";\nimport Cewl from \"./cewl\";\nimport Ioc from \"./ioc\";\nimport DealRegistration from \"./deal_registration\";\nimport Processed from \"./processed\";\nimport Notification from \"./notification\";\nimport Dashboard from \"./dashboard\";\n// import Error from \"./layout/Notification\";\n\nimport blue from \"@material-ui/core/colors/blue\";\n\nimport AccountBoxIcon from \"@material-ui/icons/AccountBox\";\nimport MenuBookRoundedIcon from \"@material-ui/icons/MenuBookRounded\";\nimport CheckBoxIcon from \"@material-ui/icons/CheckBox\";\nimport ArrowRightAltIcon from \"@material-ui/icons/ArrowRightAlt\";\n\nimport MyCoolLoginPage from \"./auth/MyCoolLoginPage\";\nimport { PreferencesBasedThemeProvider } from \"@react-admin/ra-preferences\";\nimport { LicenseManager } from \"ag-grid-enterprise\";\nimport { agGridLicenseKey } from \"./agGridLicenseKey\";\n\n// For multi-level menu\nimport {\n AppLocationContext,\n MenuItem,\n MultiLevelMenu,\n} from \"@react-admin/ra-navigation\";\nimport customRoutes from \"./customRoutes\";\nimport BusinessIcon from \"@material-ui/icons/Business\";\nimport UserIcon from \"@material-ui/icons/Group\";\nimport EmailIcon from \"@material-ui/icons/Email\";\nimport NotificationsIcon from \"@material-ui/icons/Notifications\";\nimport NotificationsActiveIcon from \"@material-ui/icons/NotificationsActive\";\nimport AddAlertIcon from \"@material-ui/icons/AddAlert\";\nimport HttpsIcon from \"@material-ui/icons/Https\";\nimport TimelineIcon from \"@material-ui/icons/Timeline\";\nimport ViewListIcon from \"@material-ui/icons/ViewList\";\n\nimport ReceiptIcon from \"@material-ui/icons/Receipt\";\n\n// turn off translations: https://stackoverflow.com/questions/51444875/turn-off-translations-for-react-admin\nimport polyglotI18nProvider from \"ra-i18n-polyglot\"; // install the package\nimport englishMessages from \"ra-language-english\"; // install the package\n\n// Grab the configuration endpoints\nimport myEndpoints from \"./config\";\nimport ProgressBar from \"./components/ProgressBar\";\n\n\nLicenseManager.setLicenseKey(agGridLicenseKey);\n\nconst httpClient = (url, options = {}) => {\n if (!options.headers) {\n options.headers = new Headers({Accept: \"application/json\"});\n }\n const token = localStorage.getItem(\"access_token\");\n options.headers.set(\"Authorization\", `Bearer ${token}`);\n return fetchUtils.fetchJson(url, options).catch((error) => {\n throw error;\n });\n};\n\nconst themeFromType = (type) =>\n type === \"light\"\n ? merge({}, defaultTheme, {\n palette: {\n type: \"light\", // Switching the dark mode on is a single property value change.\n primary: blue,\n secondary: {\n light: \"#6ec6ff\",\n main: \"#FFFFFF\",\n dark: \"#0069c0\",\n contrastText: \"#000\",\n },\n },\n overrides: {\n RaMenuItem: {\n gutters: {\n padding: \"4px 16px\",\n },\n },\n MuiFilledInput: {\n root: {\n borderRadius: \"4px\",\n position: \"relative\",\n },\n },\n },\n components: {\n MuiToolbar: {\n styleOverrides: {\n root: {\n justifyContent: \"flex-start\",\n },\n },\n },\n },\n })\n : merge({}, defaultTheme, {\n palette: {\n type: \"dark\", // Switching the dark mode on is a single property value change.\n primary: blue,\n secondary: {\n light: \"#6ec6ff\",\n main: \"#7F7F7F\",\n dark: \"#0069c0\",\n contrastText: \"#000\",\n },\n },\n overrides: {\n RaMenuItem: {\n root: {\n color: 'white',\n },\n gutters: {\n padding: \"4px 16px\",\n },\n link: {\n '&:hover': {\n color: 'white',\n backgroundColor:\"#424242\",\n },\n },\n }\n },\n });\n\nconst MyMenu = () => {\n const [userRole, setUserRole] = useState();\n const {permissions} = usePermissions();\n\n useEffect(() => {\n permissions && permissions.rls && setUserRole(permissions.rls);\n return ()=> {\n setUserRole(\" \");\n }\n }, [permissions]);\n return (\n <MultiLevelMenu>\n <MenuItem\n name=\"Documentation\"\n to=\"/\"\n exact\n label=\"Documentation\"\n icon={<MenuBookRoundedIcon fontSize=\"small\" />}\n />\n {userRole !== \"web\" && (\n <><MenuItem\n name=\"cewl\"\n to=\"/cewl\"\n label=\"CEWL\"\n icon={<ViewListIcon fontSize=\"small\" />} />\n <MenuItem\n name=\"CewlMatchy\"\n to=\"/CewlMatchy\"\n label=\"Matchy Matchy\"\n icon={<ReceiptIcon fontSize=\"small\" />} /></> \n )}\n \n <MenuItem\n name=\"ip\"\n to=\"/ip\"\n label=\"Legit\"\n icon={<TimelineIcon fontSize=\"small\" />}\n />\n {userRole !== \"web\" && (\n <MenuItem\n name=\"admin\"\n to={\".\"}\n label=\"Admin\"\n icon={<AccountBoxIcon fontSize=\"small\" />}\n >\n <MenuItem\n name=\"admin.users\"\n to={\"/user\"}\n label=\"Users\"\n icon={<UserIcon fontSize=\"small\" />}\n />\n <MenuItem\n name=\"admin.company\"\n to={\"/company\"}\n label=\"Company\"\n icon={<BusinessIcon fontSize=\"small\" />}\n />\n <MenuItem\n name=\"admin.email_domain\"\n to={\"/email_domain\"}\n label=\"Email Domain\"\n icon={<EmailIcon fontSize=\"small\" />}\n />\n <MenuItem\n name=\"admin.notification_group\"\n to={\"/notification_group\"}\n label=\"Notification Groups\"\n icon={<NotificationsIcon fontSize=\"small\" />}\n />\n <MenuItem\n name=\"admin.notification_delivery\"\n to={\"/notification_delivery\"}\n label=\"Delivery\"\n icon={<NotificationsActiveIcon fontSize=\"small\" />}\n />\n <MenuItem\n name=\"admin.notification_filters\"\n to={\"/notification_filter\"}\n label=\"Notification Filters\"\n icon={<AddAlertIcon fontSize=\"small\" />}\n />\n <MenuItem\n name=\"admin.processed\"\n to={\"/processed\"}\n label=\"Processed\"\n icon={<CheckBoxIcon fontSize=\"small\" />}\n />\n <MenuItem\n name=\"admin.notification\"\n to={\"/notification\"}\n label=\"Notification id_ref\"\n icon={<ArrowRightAltIcon fontSize=\"small\" />}\n />\n\n <MenuItem\n name = \"admin.tokens\"\n to = {\"/token\"}\n label = \"Tokens\"\n icon = {<HttpsIcon fontSize = \"small\" />}\n />\n\n {userRole === \"distributor_admin\" ||\n userRole === \"super_admin\" ||\n userRole === \"oem_admin\" ||\n userRole === \"reseller_admin\" ? (\n <MenuItem\n name = \"admin.deal_registration\"\n to = {\"/deal_registration\"}\n label = \"Deals\"\n icon = {<ReceiptIcon fontSize = \"small\" />}\n />\n ) : null}\n </MenuItem >\n )}\n </MultiLevelMenu >\n );\n};\n\nconst MyLayout = (props) => {\n return (\n <AppLocationContext >\n <Layout {...props} appBar = {MyAppBar} menu = {MyMenu}>\n <React.Suspense fallback = {<ProgressBar />} >\n {props.children}\n </React.Suspense>\n </Layout>\n {/* <Error /> */}\n </AppLocationContext >\n );\n};\n\nconst App = () => {\n useEffect(() => {\n document.title = \"CTCI Portal\";\n }, []);\n // a combination of two articles: https://github.com/marmelab/react-admin/issues/5727 and one mentioned earlier\n const i18nProvider = polyglotI18nProvider(() => englishMessages, \"en\", {\n allowMissing: true,\n onMissingKey: (key, _, __) => key,\n });\n\n return (\n <PreferencesBasedThemeProvider themeFromType={themeFromType}>\n <Admin\n title=\"\"\n catchAll={() => <Redirect to=\"/\" />}\n customRoutes={customRoutes}\n dashboard={Dashboard}\n loginPage={MyCoolLoginPage}\n layout={MyLayout}\n disableTelemetry\n authProvider={authProvider}\n dataProvider={DataProvider(\n myEndpoints().REACT_APP_CRUD_ADMIN_ENDPOINT,\n httpClient\n )}\n i18nProvider={i18nProvider}\n >\n <Resource name=\"cewlMatchy\" {...matchyCewl} options={{ label: \"CewlMatchy\" }} />\n <Resource name=\"cewl\" {...Cewl} options={{ label: \"CEWL\" }} />\n <Resource name=\"ip\" {...Ioc} options={{ label: \"Legit\" }} />\n <Resource name=\"user\" {...User} options={{ label: \"Users\" }} />\n <Resource\n name=\"company\"\n {...Company}\n options={{ label: \"Companies\" }}\n />\n <Resource\n name=\"email_domain\"\n {...EmailDomain}\n options={{ label: \"Company Email Domains\" }}\n />\n <Resource\n name=\"notification_group\"\n {...NotificationGroup}\n options={{ label: \"Notification Groups\" }}\n />\n <Resource\n name=\"notification_delivery\"\n {...NotificationDelivery}\n options={{ label: \"Notification Deliveries\" }}\n />\n <Resource\n name=\"notification_filter\"\n {...NotificationFilters}\n options={{ label: \"Notification Filters\" }}\n />\n <Resource name=\"token\" {...Token} options={{ label: \"Tokens\" }} />\n <Resource\n name=\"deal_registration\"\n {...DealRegistration}\n options={{ label: \"Deals\" }}\n />\n <Resource\n name=\"processed\"\n {...Processed}\n options={{ label: \"Processed\" }}\n />\n <Resource\n name=\"notification\"\n {...Notification}\n options={{ label: \"Notification id_ref\" }}\n />\n </Admin>\n </PreferencesBasedThemeProvider>\n );\n};\n\nexport default App;\n","export const agGridLicenseKey = \"CompanyName=CTCI, INC,LicensedApplication=portal.ctci.ai,LicenseType=SingleApplication,LicensedConcurrentDeveloperCount=1,LicensedProductionInstancesCount=1,AssetReference=AG-035801,SupportServicesEnd=12_February_2024_[v2]_MTcwNzY5NjAwMDAwMA==b2b0f407f017bc2b87df384e2ef6dfdf\"","const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport \"./index.css\";\nimport App from \"./App\";\nimport reportWebVitals from \"./reportWebVitals\";\nimport { BrowserRouter as Router, Route, Switch } from \"react-router-dom\";\nimport ProgressBar from \"./components/ProgressBar\";\n\nReactDOM.render(\n <Router>\n <Switch>\n <Route path=\"/\">\n <React.Suspense fallback = {<ProgressBar />} >\n <App />\n </React.Suspense>\n </Route>\n </Switch>\n </Router>,\n document.getElementById(\"root\")\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}