Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 

272 строки
9.6 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. // ==============================|| AUTH ROUTING ||============================== //
  31. const SettingRoutes = () => {
  32. const ability = useContext(AbilityContext);
  33. return {
  34. path: '/',
  35. element: <MainLayout />,
  36. children: [
  37. {
  38. path: 'category',
  39. element: (
  40. handleRouteAbility(
  41. ability.can('MAINTAIN', 'CATEGORY'),
  42. <CategoryPage />,
  43. <Navigate to="/" />
  44. )
  45. ),
  46. },
  47. {
  48. path: 'tag',
  49. element:(
  50. handleRouteAbility(
  51. ability.can('MAINTAIN', 'TAG'),
  52. <TagPage />,
  53. <Navigate to="/" />
  54. )
  55. ),
  56. },
  57. {
  58. path: 'promotionChannel',
  59. element: (
  60. handleRouteAbility(
  61. ability.can('MAINTAIN', 'PROMOTION_CHANNEL'),
  62. <PromotionChannelPage />,
  63. <Navigate to="/" />
  64. )
  65. ),
  66. },
  67. {
  68. path: 'clientDepartment',
  69. element: (
  70. handleRouteAbility(
  71. ability.can('MAINTAIN', 'CLIENT_DEPARTMENT'),
  72. <ClientDepartmentPage />,
  73. <Navigate to="/" />
  74. )
  75. ),
  76. },
  77. {
  78. path: 'division',
  79. element: (
  80. handleRouteAbility(
  81. ability.can('MAINTAIN', 'DIVISION'),
  82. <DivisionSearchPage />,
  83. <Navigate to="/" />
  84. )
  85. ),
  86. },
  87. {
  88. path: 'division/:id',
  89. element:(
  90. handleRouteAbility(
  91. ability.can('MAINTAIN', 'DIVISION'),
  92. <DivisionEditPage />,
  93. <Navigate to="/" />
  94. )
  95. ),
  96. },
  97. {
  98. path: 'usergroupSearchview',
  99. element: (
  100. <Require2FA>
  101. {handleRouteAbility(
  102. ability.can('MAINTAIN', 'USER_GROUP'),
  103. <UserGroupSearchPage />,
  104. <Navigate to="/" />
  105. )}
  106. </Require2FA>
  107. ),
  108. },
  109. {
  110. path: 'userGroup/:id',
  111. element:(
  112. <Require2FA>
  113. {handleRouteAbility(
  114. ability.can('MAINTAIN', 'USER_GROUP'),
  115. <UserGroupDetailPage />,
  116. <Navigate to="/" />
  117. )}
  118. </Require2FA>
  119. ),
  120. },
  121. {
  122. path: 'user/:id',
  123. element: (
  124. <Require2FA>
  125. {handleRouteAbility(
  126. ability.can('VIEW', 'USER'),
  127. <UserMaintainPage />,
  128. <Navigate to="/" />
  129. )}
  130. </Require2FA>
  131. ),
  132. },
  133. {
  134. path: 'userSearchview',
  135. element:(
  136. <Require2FA>
  137. {handleRouteAbility(
  138. ability.can('VIEW', 'USER'),
  139. <UserSearchPage />,
  140. <Navigate to="/" />
  141. )}
  142. </Require2FA>
  143. ),
  144. },
  145. {
  146. path: 'consultant',
  147. element: (
  148. <Require2FA>
  149. {handleRouteAbility(
  150. ability.can('VIEW', 'USER'),
  151. <ConsultantSearchPage />,
  152. <Navigate to="/" />
  153. )}
  154. </Require2FA>
  155. ),
  156. },
  157. {
  158. path: 'consultant/:id',
  159. element: (
  160. <Require2FA>
  161. {handleRouteAbility(
  162. ability.can('VIEW', 'USER'),
  163. <ConsultantMaintainPage />,
  164. <Navigate to="/" />
  165. )}
  166. </Require2FA>
  167. ),
  168. },
  169. {
  170. path: 'setting',
  171. element: (
  172. <Require2FA>
  173. {handleRouteAbility(
  174. ability.can('MANAGE', 'SYSTEM_CONFIGURATION'),
  175. <SettingPage />,
  176. <Navigate to="/" />
  177. )}
  178. </Require2FA>
  179. ),
  180. },
  181. {
  182. path: 'auditLog',
  183. element:(
  184. <Require2FA>
  185. {handleRouteAbility(
  186. ability.can('VIEW', 'AUDIT_LOG'),
  187. <AuditLogPage />,
  188. <Navigate to="/" />
  189. )}
  190. </Require2FA>
  191. ),
  192. },
  193. {
  194. path: 'userActionLog',
  195. element: (
  196. <Require2FA>
  197. {handleRouteAbility(
  198. ability.can('VIEW', 'USER'),
  199. <UserActionLogPage />,
  200. <Navigate to="/" />
  201. )}
  202. </Require2FA>
  203. ),
  204. },
  205. {
  206. path: 'loginLog',
  207. element: (
  208. <Require2FA>
  209. {handleRouteAbility(
  210. ability.can('VIEW', 'LOGIN_LOG'),
  211. <LoginLogPage />,
  212. <Navigate to="/" />
  213. )}
  214. </Require2FA>
  215. ),
  216. },
  217. {
  218. path: 'passwordpolicy',
  219. element: (
  220. handleRouteAbility(
  221. ability.can('MANAGE', 'SYSTEM_CONFIGURATION'),
  222. <PasswordPolicyPage />,
  223. <Navigate to="/" />
  224. )
  225. ),
  226. },
  227. {
  228. path: 'profile',
  229. element: (
  230. handleRouteAbility(
  231. true, // Or use a specific ability like ability.can('VIEW', 'PROFILE')
  232. <ProfilePage />,
  233. <Navigate to="/" />
  234. )
  235. ),
  236. },
  237. {
  238. path: 'emailConfig',
  239. element: (
  240. handleRouteAbility(
  241. ability.can('MANAGE', 'SYSTEM_CONFIGURATION'),
  242. <EmailConfigPage />,
  243. <Navigate to="/" />
  244. )
  245. ),
  246. },
  247. {
  248. path: 'generateReminder',
  249. element: (
  250. handleRouteAbility(
  251. ability.can('MANAGE', 'SYSTEM_CONFIGURATION'),
  252. <GenerateReminderPage />,
  253. <Navigate to="/" />
  254. )
  255. ),
  256. },
  257. {
  258. path: 'logout',
  259. element: <LogoutPage />
  260. }
  261. ]
  262. }
  263. };
  264. export default SettingRoutes;