Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.
 
 
 

283 рядки
10 KiB

  1. import {lazy, useContext} from 'react';
  2. import Require2FA from '../components/Require2FA';
  3. import Loadable from 'components/Loadable';
  4. import MainLayout from "../layout/MainLayout";
  5. import AbilityContext from "../components/AbilityProvider";
  6. import {handleRouteAbility} from "../utils/CommonFunction";
  7. import {Navigate} from "react-router";
  8. // render - login
  9. const SettingPage = Loadable(lazy(() => import('pages/lionerSettingPage')));
  10. const LogoutPage = Loadable(lazy(() => import('pages/extra-pages/LogoutPage')));
  11. const PasswordPolicyPage = Loadable(lazy(()=> import('pages/lionerPasswordPolicyPage')))
  12. const UserSearchPage = Loadable(lazy(()=>import ('pages/lionerUserSearchPage')));
  13. const ConsultantSearchPage = Loadable(lazy(()=>import ('pages/pdf/ConsultantSearchPage')));
  14. const ConsultantMaintainPage = Loadable(lazy(() => import('pages/pdf/ConsultantMaintainPage')));
  15. const CategoryPage = Loadable(lazy(()=>import ('pages/lionerCategoryPage')));
  16. const UserMaintainPage = Loadable(lazy(() => import('pages/lionerUserDetailPage')));
  17. const UserGroupSearchPage = Loadable(lazy(() => import('pages/lionerUserGroupSearchPage')));
  18. const UserGroupDetailPage = Loadable(lazy(() => import('pages/lionerUserGroupDetailPage')));
  19. const DivisionSearchPage = Loadable(lazy(() => import('pages/lionerDivisionSearch')));
  20. const DivisionEditPage = Loadable(lazy(() => import('pages/lionerDivisionEdit')));
  21. const PromotionChannelPage = Loadable(lazy(() => import('pages/lionerPromotionChannelPage')));
  22. const TagPage = Loadable(lazy(() => import('pages/lionerTagPage')));
  23. const AuditLogPage = Loadable(lazy(() => import('pages/lionerAuditTrailPage')));
  24. const LoginLogPage = Loadable(lazy(() => import('pages/lionerLoginLog')));
  25. const UserActionLogPage = Loadable(lazy(() => import('pages/lionerUserActionLog')));
  26. const EmailConfigPage = Loadable(lazy(() => import('pages/lionerEmailConfig')));
  27. const GenerateReminderPage = Loadable(lazy(() => import('pages/lionerManualButtonPage')));
  28. const ClientDepartmentPage = Loadable(lazy(() => import('pages/lionerClientDepartmentPage')));
  29. const ProfilePage = Loadable(lazy(() => import('pages/profile/profile')));
  30. const FormSigPageSearchPanel = Loadable(lazy(() => import('pages/formSigPage')));
  31. // ==============================|| AUTH ROUTING ||============================== //
  32. const SettingRoutes = () => {
  33. const ability = useContext(AbilityContext);
  34. return {
  35. path: '/',
  36. element: <MainLayout />,
  37. children: [
  38. {
  39. path: 'category',
  40. element: (
  41. handleRouteAbility(
  42. ability.can('MAINTAIN', 'CATEGORY'),
  43. <CategoryPage />,
  44. <Navigate to="/" />
  45. )
  46. ),
  47. },
  48. {
  49. path: 'tag',
  50. element:(
  51. handleRouteAbility(
  52. ability.can('MAINTAIN', 'TAG'),
  53. <TagPage />,
  54. <Navigate to="/" />
  55. )
  56. ),
  57. },
  58. {
  59. path: 'promotionChannel',
  60. element: (
  61. handleRouteAbility(
  62. ability.can('MAINTAIN', 'PROMOTION_CHANNEL'),
  63. <PromotionChannelPage />,
  64. <Navigate to="/" />
  65. )
  66. ),
  67. },
  68. {
  69. path: 'clientDepartment',
  70. element: (
  71. handleRouteAbility(
  72. ability.can('MAINTAIN', 'CLIENT_DEPARTMENT'),
  73. <ClientDepartmentPage />,
  74. <Navigate to="/" />
  75. )
  76. ),
  77. },
  78. {
  79. path: 'division',
  80. element: (
  81. handleRouteAbility(
  82. ability.can('MAINTAIN', 'DIVISION'),
  83. <DivisionSearchPage />,
  84. <Navigate to="/" />
  85. )
  86. ),
  87. },
  88. {
  89. path: 'division/:id',
  90. element:(
  91. handleRouteAbility(
  92. ability.can('MAINTAIN', 'DIVISION'),
  93. <DivisionEditPage />,
  94. <Navigate to="/" />
  95. )
  96. ),
  97. },
  98. {
  99. path: 'usergroupSearchview',
  100. element: (
  101. <Require2FA>
  102. {handleRouteAbility(
  103. ability.can('MAINTAIN', 'USER_GROUP'),
  104. <UserGroupSearchPage />,
  105. <Navigate to="/" />
  106. )}
  107. </Require2FA>
  108. ),
  109. },
  110. {
  111. path: 'userGroup/:id',
  112. element:(
  113. <Require2FA>
  114. {handleRouteAbility(
  115. ability.can('MAINTAIN', 'USER_GROUP'),
  116. <UserGroupDetailPage />,
  117. <Navigate to="/" />
  118. )}
  119. </Require2FA>
  120. ),
  121. },
  122. {
  123. path: 'user/:id',
  124. element: (
  125. <Require2FA>
  126. {handleRouteAbility(
  127. ability.can('VIEW', 'USER'),
  128. <UserMaintainPage />,
  129. <Navigate to="/" />
  130. )}
  131. </Require2FA>
  132. ),
  133. },
  134. {
  135. path: 'userSearchview',
  136. element:(
  137. <Require2FA>
  138. {handleRouteAbility(
  139. ability.can('VIEW', 'USER'),
  140. <UserSearchPage />,
  141. <Navigate to="/" />
  142. )}
  143. </Require2FA>
  144. ),
  145. },
  146. {
  147. path: 'consultant',
  148. element: (
  149. <Require2FA>
  150. {handleRouteAbility(
  151. ability.can('VIEW', 'USER'),
  152. <ConsultantSearchPage />,
  153. <Navigate to="/" />
  154. )}
  155. </Require2FA>
  156. ),
  157. },
  158. {
  159. path: 'consultant/:id',
  160. element: (
  161. <Require2FA>
  162. {handleRouteAbility(
  163. ability.can('VIEW', 'USER'),
  164. <ConsultantMaintainPage />,
  165. <Navigate to="/" />
  166. )}
  167. </Require2FA>
  168. ),
  169. },
  170. {
  171. path: 'setting',
  172. element: (
  173. <Require2FA>
  174. {handleRouteAbility(
  175. ability.can('MANAGE', 'SYSTEM_CONFIGURATION'),
  176. <SettingPage />,
  177. <Navigate to="/" />
  178. )}
  179. </Require2FA>
  180. ),
  181. },
  182. {
  183. path: 'auditLog',
  184. element:(
  185. <Require2FA>
  186. {handleRouteAbility(
  187. ability.can('VIEW', 'AUDIT_LOG'),
  188. <AuditLogPage />,
  189. <Navigate to="/" />
  190. )}
  191. </Require2FA>
  192. ),
  193. },
  194. {
  195. path: 'userActionLog',
  196. element: (
  197. <Require2FA>
  198. {handleRouteAbility(
  199. ability.can('VIEW', 'USER'),
  200. <UserActionLogPage />,
  201. <Navigate to="/" />
  202. )}
  203. </Require2FA>
  204. ),
  205. },
  206. {
  207. path: 'loginLog',
  208. element: (
  209. <Require2FA>
  210. {handleRouteAbility(
  211. ability.can('VIEW', 'LOGIN_LOG'),
  212. <LoginLogPage />,
  213. <Navigate to="/" />
  214. )}
  215. </Require2FA>
  216. ),
  217. },
  218. {
  219. path: 'passwordpolicy',
  220. element: (
  221. handleRouteAbility(
  222. ability.can('MANAGE', 'SYSTEM_CONFIGURATION'),
  223. <PasswordPolicyPage />,
  224. <Navigate to="/" />
  225. )
  226. ),
  227. },
  228. {
  229. path: 'profile',
  230. element: (
  231. handleRouteAbility(
  232. true, // Or use a specific ability like ability.can('VIEW', 'PROFILE')
  233. <ProfilePage />,
  234. <Navigate to="/" />
  235. )
  236. ),
  237. },
  238. {
  239. path: 'emailConfig',
  240. element: (
  241. handleRouteAbility(
  242. ability.can('MANAGE', 'SYSTEM_CONFIGURATION'),
  243. <EmailConfigPage />,
  244. <Navigate to="/" />
  245. )
  246. ),
  247. },
  248. {
  249. path: 'generateReminder',
  250. element: (
  251. handleRouteAbility(
  252. ability.can('MANAGE', 'SYSTEM_CONFIGURATION'),
  253. <GenerateReminderPage />,
  254. <Navigate to="/" />
  255. )
  256. ),
  257. },
  258. {
  259. path: 'formSigPage',
  260. element: (
  261. handleRouteAbility(
  262. ability.can('MANAGE', 'SYSTEM_CONFIGURATION'),
  263. <FormSigPageSearchPanel />,
  264. <Navigate to="/" />
  265. )
  266. ),
  267. },
  268. {
  269. path: 'logout',
  270. element: <LogoutPage />
  271. }
  272. ]
  273. }
  274. };
  275. export default SettingRoutes;