import {Navigate, Route, Router, Routes} from 'react-router-dom' import {Dashboard} from "../views/dashboard/Dashboard"; import {SignInForm} from "../views/auth/SignInForm"; import {SignUpRecruiterForm} from "../views/auth/SignUpRecruiterForm"; import {SignUpJobSeekerForm} from "../views/auth/SignUpJobSeekerForm"; import {Workspace} from "../views/job_advertisements/RecruiterWorkspace"; import {JobAdDetails} from "../views/job_advertisements/JobAdDetails"; import {ApplicationsByJobAd} from "../views/applications/ApplicationsByJobAd"; import {ApplicationsByJobSeeker} from "../views/applications/ApplicationsByJobSeeker"; import {AdminPanel} from "../views/admin_panel/AdminPanel"; import {RecruiterProfile} from "../views/recruiters/RecruiterProfile"; import {AboutUs} from "../views/static/AboutUs"; import {JobSeekerEditProfile} from "../views/edit_profile/JobSeekerEditProfile"; import {RecruiterEditProfile} from "../views/edit_profile/RecruiterEditProfile"; import Roles from "../enumerations/Roles"; import {useSelector} from "react-redux"; import {useEffect, useState} from "react"; import {ErrorPage} from "../views/static/ErrorPage"; export const PrivateRoutes = [ { component: AdminPanel, path: '/admin-panel', title: 'Admin Panel', exact: true, permission: [ Roles.ADMIN ] }, { component: Workspace, path: '/job-management-hub', title: 'Job Management Hub', exact: true, permission: [ Roles.RECRUITER, ] }, { component: ApplicationsByJobAd, path: '/job-management-hub/applications/:advertisement_id', title: 'Applications by Job Ad', exact: true, permission: [ Roles.RECRUITER ] }, { component: ApplicationsByJobSeeker, path: '/my-applications', title: 'My Applications', exact: true, permission: [ Roles.JOBSEEKER ] }, { component: JobSeekerEditProfile, path: '/job-seeker/edit-profile', title: 'Edit Job Seeker Profile', exact: true, permission: [ Roles.JOBSEEKER ] }, { component: RecruiterEditProfile, path: '/recruiter/edit-profile', title: 'Edit Recruiter Profile', exact: true, permission: [ Roles.RECRUITER ] }, ] export const PublicRoutes = [ { component: Dashboard, path: "/", exact: true, permission: [ Roles.RECRUITER, Roles.JOBSEEKER, Roles.ADMIN, Roles.GUEST ] }, { component: SignInForm, path: '/signin', title: 'Sign In', exact: true, permission: [ Roles.GUEST, Roles.RECRUITER, Roles.JOBSEEKER, Roles.ADMIN ] }, { component: SignUpRecruiterForm, path: '/signup/recruiter', title: 'Sign Up as Recruiter', permission: [ Roles.GUEST, Roles.RECRUITER, Roles.JOBSEEKER, Roles.ADMIN ] }, { component: SignUpJobSeekerForm, path: '/signup/job-seeker', title: 'Sign Up as Job Seeker', permission: [ Roles.GUEST, Roles.RECRUITER, Roles.JOBSEEKER, Roles.ADMIN ] }, { component: JobAdDetails, path: '/job-advertisements/:id', title: 'Job Advertisement Details', exact: true, permission: [ Roles.RECRUITER, Roles.JOBSEEKER, Roles.ADMIN, Roles.GUEST ] }, { component: RecruiterProfile, path: '/recruiters/:id', title: 'Recruiter Profile', exact: true, permission: [ Roles.RECRUITER, Roles.JOBSEEKER, Roles.ADMIN, Roles.GUEST ] }, { component: AboutUs, path: '/about', title: 'About Us', exact: true, permission: [ Roles.GUEST, Roles.RECRUITER, Roles.JOBSEEKER, Roles.ADMIN ] }, ] const AllRoutes = [...PrivateRoutes, ...PublicRoutes]; const filterRoutes = (roleParam) => { return AllRoutes.filter(route => { return route.permission.includes(roleParam); }); }; const RoutesConfig = () => { const currentUser = useSelector(state => state.auth.currentUser); const [role, setRole] = useState(Roles.GUEST); useEffect(() => { if (currentUser) { setRole(currentUser.role); } }, [currentUser]); return ( {filterRoutes(role).map(route => ( } exact={route.exact} /> ))} }/> // // }> // }> // }> // }> // }> // }> // }> // }> // }> // }> // }> // }> // }> // ) } export default RoutesConfig