{"version":3,"sources":["config/axios.config.js","index.js","features/Auth/utils/api.js","features/Auth/Contexts/AuthProvider.js","features/Auth/utils/permission.js","hooks/useSettingAndConfig.js","features/Auth/components/Route/ProtectedRoute.js","utils/bep.js","App.js"],"names":["axios","defaults","validateStatus","status","interceptors","request","use","config","token","localStorage","getItem","headers","Authorization","concat","error","Promise","reject","response","refreshToken","setItem","data","removeItem","window","location","href","ReactDOM","render","_jsx","BrowserRouter","children","AuthProvider","App","document","getElementById","serverUrl","process","AuthAPI","login","async","post","verifyToken","getUserPermission","get","AuthContext","createContext","useAuth","useContext","_ref","userIsLoggedIn","setUserIsLoggedIn","useState","userData","setUserData","isSuperAdmin","setIsSuperAdmin","permissionRouteLIS","setPermissionRouteLIS","canAccessMainLab","canAccessLabRequest","canAccessReport","canAccessReportHistory","canAccessCheckup","canAccessHospitalNet","canAccessRiskManagement","permissionRouteQMS","setPermissionRouteQMS","canAccessRegister","canAccessKiosk","canAccessQueue","canAccessDashboard","permissionRouteSetting","setPermissionRouteSetting","canAccessSettingLIS","canAccessSettingQMS","canAccessSettingAccount","canAccessSettingScript","canAccessSettingClient","resetUserState","verifyTokenAndPermission","useCallback","returnMessage","isValidToken","message","handleInvalidToken","res1","res2","permissionList","level","jwtDecode","permission","routePermission","userPermissionList","permissionLIS","canAccessScanBarcode","canAccessMainLog","permissionQMS","permissionSetting","checkPermissionRoute","length","console","log","res","useEffect","checkTokenExpInterval","verifyTokenInterval","setInterval","Error","exp","Date","now","clearInterval","Provider","value","username","password","v1","v2","accessToken","logout","useSettingAndConfig","globalSettingMap","setGlobalSettingMap","dashboardQMS","setDashboardQMS","serverVersion","setServerVersion","fetchSettingAndConfig","res3","all","globalSetting","Map","map","item","setting_type","setting","dashboard","dashboard_display","ProtectedRoute","rest","Route","Redirect","to","bep","require","APIBE_LO","hostname","APP_KEY","USE_POPAPPROVE","USE_POPACCEPT","USE_POPREC","undefined","port","protocol","ex","Navigation","React","lazy","Footer","Home","Auth","LabRequest","MainLabV1","MainLabV2","Report","ReportHistoryV1","ReportHistoryV2","OnlineReportV1","OnlineReportV2","CheckUp","ScanBarcode","RiskManagement","MainLog","QMSregister","QMSkiosk","QMSqueue","QMSdashboardA","QMSdashboardB","QMSdashboardC","QMSdashboardD","QMSreport","SettingLIS","SettingQMS","Backup","ClientSetting","UserLevel","UserAccount","ENVfEnd","props","useLocation","isPageLoading","setIsPageLoading","Swal","fire","icon","title","text","getFirstSessionDATA","Fragment","Backdrop","open","CircularProgress","thickness","size","className","_jsxs","Suspense","fallback","Modal","show","centered","Header","Title","Body","Switch","exact","path","_Fragment","user","prefix","fname","mtno","isAuthZ","component"],"mappings":"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","file":"static/js/main.cb63772f.chunk.js","sourcesContent":["import axios from 'axios';\n\naxios.defaults.validateStatus = (status) => {\n return status < 500 && status !== 401;\n};\n\naxios.interceptors.request.use(\n (config) => {\n const token = localStorage.getItem('token');\n if (token) {\n config.headers.Authorization = `Bearer ${token}`;\n }\n return config;\n },\n (error) => {\n return Promise.reject(error);\n },\n);\n\naxios.interceptors.response.use(\n (response) => {\n const headers = response.headers;\n const refreshToken = headers['x-refresh-token'];\n if (refreshToken) {\n localStorage.setItem('token', refreshToken);\n }\n return response;\n },\n (error) => {\n if (\n error.response &&\n (error.response.status === 401 ||\n error.response.data === 'No Authorization' ||\n error.response.data === 'No Authorization (Invalid Token)')\n ) {\n localStorage.removeItem('token');\n window.location.href = '/signin';\n }\n return Promise.reject(error);\n },\n);\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport 'bootstrap/dist/css/bootstrap.min.css';\nimport 'bootstrap/dist/js/bootstrap.min.js';\nimport './assets/css/mainstyle.css';\nimport App from './App';\n//import reportWebVitals from './reportWebVitals';\nimport './config/axios.config';\nimport { BrowserRouter } from 'react-router-dom';\nimport AuthProvider from './features/Auth/Contexts/AuthProvider';\n\nReactDOM.render(\n //\n \n \n \n \n ,\n //\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\n//reportWebVitals();\n","import axios from 'axios';\n\nconst serverUrl = process.env.REACT_APP_API_URL;\n\nconst AuthAPI = {\n login: async (data) => {\n const response = await axios.post(serverUrl + '/auth/login', data);\n return response;\n },\n verifyToken: async () => {\n const response = await axios.post(serverUrl + '/verifyToken');\n return response;\n },\n getUserPermission: async () => {\n const response = await axios.get(serverUrl + '/userlevel/permission');\n return response;\n },\n};\n\nexport default AuthAPI;\n","import {\n useState,\n createContext,\n useContext,\n useEffect,\n useCallback,\n} from 'react';\nimport AuthAPI from '../utils/api';\nimport jwtDecode from 'jwt-decode';\nimport { checkPermissionRoute } from '../utils/permission';\n\nconst AuthContext = createContext();\n\nconst AuthProvider = ({ children }) => {\n const [userIsLoggedIn, setUserIsLoggedIn] = useState(false);\n const [userData, setUserData] = useState(null);\n const [isSuperAdmin, setIsSuperAdmin] = useState(false);\n\n const [permissionRouteLIS, setPermissionRouteLIS] = useState({\n canAccessMainLab: false,\n canAccessLabRequest: false,\n canAccessReport: false,\n canAccessReportHistory: false,\n canAccessCheckup: false,\n canAccessHospitalNet: false,\n canAccessRiskManagement: false,\n });\n const [permissionRouteQMS, setPermissionRouteQMS] = useState({\n canAccessRegister: false,\n canAccessKiosk: false,\n canAccessQueue: false,\n canAccessDashboard: false,\n canAccessReport: false,\n });\n const [permissionRouteSetting, setPermissionRouteSetting] = useState({\n canAccessSettingLIS: false,\n canAccessSettingQMS: false,\n canAccessSettingAccount: false,\n canAccessSettingScript: false,\n canAccessSettingClient: false,\n });\n\n const resetUserState = () => {\n setUserIsLoggedIn(false);\n setUserData(null);\n setIsSuperAdmin(false);\n };\n\n const login = async (username, password) => {\n let returnMessage = { message: '', error: null };\n\n try {\n // step 1: Authentication\n const data = { v1: username, v2: password };\n const response = await AuthAPI.login(data);\n const { message, accessToken } = response.data;\n returnMessage.message = message;\n\n if (message === 'success') {\n localStorage.setItem('token', accessToken);\n window.location.href = '/';\n }\n } catch (error) {\n console.log(error);\n returnMessage.error = error;\n } finally {\n return returnMessage;\n }\n };\n\n const logout = () => {\n localStorage.removeItem('token');\n resetUserState();\n };\n\n const verifyTokenAndPermission = useCallback(async () => {\n let returnMessage = { isValidToken: false, message: '', error: null };\n\n const handleInvalidToken = () => {\n localStorage.removeItem('token');\n resetUserState();\n returnMessage.isValidToken = false;\n };\n\n try {\n const token = localStorage.getItem('token');\n if (!token) {\n handleInvalidToken();\n } else {\n // step 1: Verify Token\n const res1 = await AuthAPI.verifyToken();\n const data = res1.data;\n if (data === 'Token is vaild!') {\n returnMessage.isValidToken = true;\n\n // step 2: Authorization\n const res2 = await AuthAPI.getUserPermission();\n const { message, permissionList, level } = res2.data;\n\n setUserIsLoggedIn(true);\n setUserData({\n ...jwtDecode(token),\n level,\n permission: permissionList || [],\n });\n setIsSuperAdmin(level === 'superadmin');\n\n if (level !== 'superadmin') {\n const routePermission = checkPermissionRoute(permissionList || []);\n setPermissionRouteLIS(routePermission.permissionLIS);\n setPermissionRouteQMS(routePermission.permissionQMS);\n setPermissionRouteSetting(routePermission.permissionSetting);\n }\n\n if (message === 'success') {\n if (permissionList.length === 0 && level !== 'superadmin') {\n returnMessage.message = \"You don't have permission to access\";\n }\n } else {\n returnMessage.message = message;\n }\n } else {\n handleInvalidToken();\n }\n }\n } catch (error) {\n console.log(error);\n returnMessage.error = error;\n } finally {\n return returnMessage;\n }\n }, []);\n\n const verifyToken = useCallback(async () => {\n let returnMessage = { isValidToken: false, message: '', error: null };\n\n const handleInvalidToken = () => {\n localStorage.removeItem('token');\n resetUserState();\n returnMessage.isValidToken = false;\n };\n\n try {\n const token = localStorage.getItem('token');\n if (!token) {\n handleInvalidToken();\n } else {\n const res = await AuthAPI.verifyToken();\n const data = res.data;\n if (data === 'Token is vaild!') {\n returnMessage.isValidToken = true;\n } else {\n handleInvalidToken();\n }\n }\n } catch (error) {\n console.log(error);\n returnMessage.error = error;\n } finally {\n return returnMessage;\n }\n }, []);\n\n useEffect(() => {\n let checkTokenExpInterval = null;\n let verifyTokenInterval = null;\n\n if (userIsLoggedIn) {\n // const token = localStorage.getItem(\"token\");\n // if (token) {\n // const decoded = jwtDecode(token);\n // setTimeout(() => {\n // localStorage.removeItem(\"token\");\n // window.location.href = \"/signin\";\n // }, decoded.exp * 1000 - Date.now());\n // }\n\n checkTokenExpInterval = setInterval(() => {\n const token = localStorage.getItem('token');\n try {\n if (token) {\n const decoded = jwtDecode(token);\n if (decoded.exp * 1000 < Date.now()) {\n throw new Error('Token has expired');\n }\n } else {\n throw new Error('Token not found');\n }\n } catch (error) {\n verifyToken();\n }\n }, 1000);\n\n verifyTokenInterval = setInterval(() => {\n verifyToken();\n }, 30000);\n }\n\n return () => {\n clearInterval(checkTokenExpInterval);\n clearInterval(verifyTokenInterval);\n };\n }, [userIsLoggedIn, verifyToken]);\n\n return (\n \n {children}\n \n );\n};\n\nexport const useAuth = () => useContext(AuthContext);\n\nexport default AuthProvider;\n","export const checkPermissionRoute = (userPermissionList) => {\n let permissionLIS = {\n canAccessMainLab: false,\n canAccessLabRequest: false,\n canAccessReport: false,\n canAccessReportHistory: false,\n canAccessCheckup: false,\n canAccessHospitalNet: false,\n canAccessRiskManagement: false,\n canAccessScanBarcode: false,\n canAccessMainLog: false,\n };\n let permissionQMS = {\n canAccessRegister: false,\n canAccessKiosk: false,\n canAccessQueue: false,\n canAccessDashboard: false,\n canAccessReport: false,\n };\n let permissionSetting = {\n canAccessSettingLIS: false,\n canAccessSettingQMS: false,\n canAccessSettingAccount: false,\n canAccessSettingScript: false,\n canAccessSettingClient: false,\n };\n\n for (let permission of userPermissionList) {\n switch (permission) {\n // LIS\n case 'p_lis_mainlab':\n permissionLIS.canAccessMainLab = true;\n break;\n case 'p_lis_labrequest':\n permissionLIS.canAccessLabRequest = true;\n break;\n case 'p_lis_report':\n permissionLIS.canAccessReport = true;\n break;\n case 'p_lis_reporthistory':\n permissionLIS.canAccessReportHistory = true;\n break;\n case 'p_lis_checkup':\n permissionLIS.canAccessCheckup = true;\n break;\n case 'p_lis_hospitalnet':\n permissionLIS.canAccessHospitalNet = true;\n break;\n case 'p_lis_riskmanagement':\n permissionLIS.canAccessRiskManagement = true;\n break;\n case 'p_lis_scanbarcode':\n permissionLIS.canAccessScanBarcode = true;\n break;\n case 'p_lis_mainlog':\n permissionLIS.canAccessMainLog = true;\n break;\n // QMS\n case 'p_qms_register':\n permissionQMS.canAccessRegister = true;\n break;\n case 'p_qms_kiosk':\n permissionQMS.canAccessKiosk = true;\n break;\n case 'p_qms_queue':\n permissionQMS.canAccessQueue = true;\n break;\n case 'p_qms_dashboard':\n permissionQMS.canAccessDashboard = true;\n break;\n case 'p_qms_report':\n permissionQMS.canAccessReport = true;\n break;\n // Setting\n case 'p_setting_lis':\n permissionSetting.canAccessSettingLIS = true;\n break;\n case 'p_setting_qms':\n permissionSetting.canAccessSettingQMS = true;\n break;\n case 'p_setting_account':\n permissionSetting.canAccessSettingAccount = true;\n break;\n case 'p_setting_script':\n permissionSetting.canAccessSettingScript = true;\n break;\n case 'p_setting_client':\n permissionSetting.canAccessSettingClient = true;\n break;\n default:\n break;\n }\n }\n\n return {\n permissionLIS,\n permissionQMS,\n permissionSetting,\n };\n};\n","import { useState, useCallback } from 'react';\nimport axios from 'axios';\n\nconst serverUrl = process.env.REACT_APP_API_URL;\n\nconst useSettingAndConfig = () => {\n const [globalSettingMap, setGlobalSettingMap] = useState(null);\n const [dashboardQMS, setDashboardQMS] = useState('A');\n const [serverVersion, setServerVersion] = useState('');\n\n const fetchSettingAndConfig = useCallback(async () => {\n try {\n const [res1, res2, res3] = await Promise.all([\n axios.get(serverUrl + '/globalsetting/allitem'),\n axios.get(serverUrl + '/qms/setting/dashboard'),\n axios.get(serverUrl + '/version'),\n ]);\n\n const { globalSetting } = res1.data;\n const globalSettingMap = new Map(\n globalSetting.map((item) => [item.setting_type, item.setting]),\n );\n setGlobalSettingMap(globalSettingMap);\n\n const { dashboard } = res2.data;\n setDashboardQMS(dashboard.dashboard_display);\n\n const serverVersion = res3.data;\n setServerVersion(serverVersion);\n } catch (error) {\n console.log(error);\n }\n }, []);\n\n return {\n globalSettingMap,\n dashboardQMS,\n serverVersion,\n fetchSettingAndConfig,\n };\n};\n\nexport default useSettingAndConfig;\n","import React from 'react';\nimport { Route, Redirect } from 'react-router-dom';\nimport { useAuth } from '../../Contexts/AuthProvider';\n\nfunction ProtectedRoute({ children, ...rest }) {\n const { userIsLoggedIn } = useAuth();\n\n return (\n (userIsLoggedIn ? children : )}\n />\n );\n}\n\nexport default ProtectedRoute;\n","var bep = require('../configbep.json');\n\ntry {\n if (bep.APIBE_LO) {\n if (bep.APIBE_LO === \"\" || bep.APIBE_LO === \" \") {\n bep.APIBE_LO = \"//api.\" + window.location.hostname;\n }\n } else {\n bep.APIBE_LO = \"//api.\" + window.location.hostname;\n }\n\n if (bep.APP_KEY) {\n if (bep.APP_KEY === '' || bep.APP_KEY === ' ') {\n bep.APP_KEY = '0';\n }\n } else {\n bep.APP_KEY = '0';\n }\n\n if (bep.USE_POPAPPROVE) {\n if (bep.USE_POPAPPROVE === '' || bep.USE_POPAPPROVE === ' ') {\n bep.USE_POPAPPROVE = '0';\n }\n } else {\n bep.USE_POPAPPROVE = '0';\n }\n\n if (bep.USE_POPACCEPT) {\n if (bep.USE_POPACCEPT === '' || bep.USE_POPACCEPT === ' ') {\n bep.USE_POPACCEPT = '0';\n }\n } else {\n bep.USE_POPACCEPT = '0';\n }\n\n if (bep.USE_POPREC) {\n if (bep.USE_POPREC === '' || bep.USE_POPREC === ' ') {\n bep.USE_POPREC = '0';\n }\n } else {\n bep.USE_POPREC = '0';\n }\n\n if (bep.port !== undefined) {\n console.log(bep.port);\n } else if (window.location.protocol === 'http:') {\n bep.port = ':8080';\n } else {\n bep.port = '';\n }\n} catch (ex) {\n bep = { APIBE_LO: \"//api.\" + window.location.hostname, APP_KEY: \"0\" };\n if (window.location.protocol === \"http:\") {\n bep.port = \":8080\";\n } else {\n bep.port = '';\n }\n console.log(\n 'ไปสร้างไฟล์ configbep.json ใน src ของ frontend หรือ ข้างๆ App.js',\n );\n}\n\nexport default bep;\n","import React, { useState, useEffect, createContext, Fragment } from 'react';\nimport { Route, Switch, Redirect, useLocation } from 'react-router-dom';\nimport { Modal } from 'react-bootstrap';\nimport { Backdrop, CircularProgress } from '@material-ui/core';\nimport useSettingAndConfig from './hooks/useSettingAndConfig.js';\nimport { useAuth } from './features/Auth/Contexts/AuthProvider.js';\nimport ProtectedRoute from './features/Auth/components/Route/ProtectedRoute.js';\nimport Swal from 'sweetalert2';\n\nimport bep from './utils/bep.js';\n\nconst Navigation = React.lazy(() => import('./components/inc/inc-header'));\nconst Footer = React.lazy(() => import('./components/inc/inc-footer.js'));\n\nconst Home = React.lazy(() => import('./components/Home'));\nconst Auth = React.lazy(() => import('./pages/Auth/Auth.SignIn.js'));\nconst Error = React.lazy(() => import('./components/Sys.Error'));\n\n/* LIS Pages */\nconst LabRequest = React.lazy(() => import('./components/Main.LabRequest'));\nconst MainLabV1 = React.lazy(() => import('./components/Main.Lab'));\nconst MainLabV2 = React.lazy(() => import('./pages/MainLab/Main.Lab'));\nconst Report = React.lazy(() => import('./components/Main.Report'));\nconst ReportHistoryV1 = React.lazy(() => import('./components/Report.History'));\nconst ReportHistoryV2 = React.lazy(\n () => import('./pages/ReportHistory/Report.History'),\n);\nconst OnlineReportV1 = React.lazy(() => import('./components/Report.report'));\nconst OnlineReportV2 = React.lazy(\n () => import('./pages/OnlineReport/Report.OnlineReport.js'),\n);\nconst CheckUp = React.lazy(() => import('./components/Main.Checkup'));\nconst ScanBarcode = React.lazy(() => import('./components/Main.ScanBarcode'));\nconst RiskManagement = React.lazy(\n () => import('./pages/RiskManagement/Main.RiskManagement'),\n);\nconst MainLog = React.lazy(() => import('./pages/MainLog/Main.Log'));\n\n/* QMS Pages */\nconst QMSregister = React.lazy(\n () => import('./components/QMS/pages/QMS.Register'),\n);\nconst QMSkiosk = React.lazy(() => import('./components/QMS/pages/QMS.Kiosk'));\nconst QMSqueue = React.lazy(() => import('./components/QMS/pages/QMS.Queue'));\nconst QMSdashboardA = React.lazy(\n () => import('./components/QMS/pages/QMS.Dashboard-A'),\n);\nconst QMSdashboardB = React.lazy(\n () => import('./components/QMS/pages/QMS.Dashboard-B'),\n);\nconst QMSdashboardC = React.lazy(\n () => import('./components/QMS/pages/QMS.Dashboard-C'),\n);\nconst QMSdashboardD = React.lazy(\n () => import('./components/QMS/pages/QMS.Dashboard-D'),\n);\nconst QMSreport = React.lazy(() => import('./components/QMS/pages/QMS.Report'));\n\n/* Setting Pages */\nconst SettingLIS = React.lazy(() => import('./components/Setting.Main'));\nconst SettingQMS = React.lazy(\n () => import('./components/QMS/pages/QMS.Setting'),\n);\nconst Backup = React.lazy(() => import('./components/Sys.Backup'));\nconst ClientSetting = React.lazy(\n () => import('./components/Manage.ClientSetting'),\n);\nconst UserLevel = React.lazy(\n () => import('./pages/UserLevel/Manage.UserLevel.js'),\n);\nconst UserAccount = React.lazy(\n () => import('./pages/UserAccount/Manage.UserAccount.js'),\n);\n\nexport const ENVfEnd = createContext(null);\n\nconst App = (props) => {\n const location = useLocation();\n\n const {\n userIsLoggedIn,\n userData,\n isSuperAdmin,\n permissionRouteLIS,\n permissionRouteQMS,\n permissionRouteSetting,\n verifyTokenAndPermission,\n } = useAuth();\n\n const {\n globalSettingMap,\n dashboardQMS,\n serverVersion,\n fetchSettingAndConfig,\n } = useSettingAndConfig();\n\n const [isPageLoading, setIsPageLoading] = useState(true);\n\n useEffect(() => {\n const getFirstSessionDATA = async () => {\n const { isValidToken, message, error } = await verifyTokenAndPermission();\n if (error) {\n Swal.fire({\n icon: 'error',\n title: 'Error',\n text: error.message,\n });\n return;\n }\n if (message) {\n Swal.fire({\n icon: 'warning',\n title: 'Warning',\n text: message,\n });\n }\n if (isValidToken) {\n await fetchSettingAndConfig();\n }\n setIsPageLoading(false);\n };\n\n getFirstSessionDATA();\n }, []);\n\n // verify token when route changes\n useEffect(() => {\n verifyTokenAndPermission();\n }, [location]);\n\n return (\n \n {isPageLoading ? (\n \n \n \n ) : (\n \n \n \n Message\n \n \n
Page Loading...
\n
\n \n }\n >\n \n <>}\n />\n \n userData && (\n \n )\n }\n />\n \n \n {/* Login Page */}\n \n !userIsLoggedIn ? : \n }\n />\n\n {/* Home Page */}\n \n \n