1 | import {Navigate, Route, Router, Routes} from 'react-router-dom'
|
---|
2 | import {Dashboard} from "../views/dashboard/Dashboard";
|
---|
3 | import {SignInForm} from "../views/auth/SignInForm";
|
---|
4 | import {SignUpRecruiterForm} from "../views/auth/SignUpRecruiterForm";
|
---|
5 | import {SignUpJobSeekerForm} from "../views/auth/SignUpJobSeekerForm";
|
---|
6 | import {Workspace} from "../views/job_advertisements/RecruiterWorkspace";
|
---|
7 | import {JobAdDetails} from "../views/job_advertisements/JobAdDetails";
|
---|
8 | import {ApplicationsByJobAd} from "../views/applications/ApplicationsByJobAd";
|
---|
9 | import {ApplicationsByJobSeeker} from "../views/applications/ApplicationsByJobSeeker";
|
---|
10 |
|
---|
11 | import {AdminPanel} from "../views/admin_panel/AdminPanel";
|
---|
12 | import {RecruiterProfile} from "../views/recruiters/RecruiterProfile";
|
---|
13 | import {AboutUs} from "../views/static/AboutUs";
|
---|
14 | import {JobSeekerEditProfile} from "../views/edit_profile/JobSeekerEditProfile";
|
---|
15 | import {RecruiterEditProfile} from "../views/edit_profile/RecruiterEditProfile";
|
---|
16 | import Roles from "../enumerations/Roles";
|
---|
17 | import {useSelector} from "react-redux";
|
---|
18 | import {useEffect, useState} from "react";
|
---|
19 | import {ErrorPage} from "../views/static/ErrorPage";
|
---|
20 |
|
---|
21 | export const PrivateRoutes = [
|
---|
22 | {
|
---|
23 | component: AdminPanel,
|
---|
24 | path: '/admin-panel',
|
---|
25 | title: 'Admin Panel',
|
---|
26 | exact: true,
|
---|
27 | permission: [
|
---|
28 | Roles.ADMIN
|
---|
29 | ]
|
---|
30 | },
|
---|
31 | {
|
---|
32 | component: Workspace,
|
---|
33 | path: '/job-management-hub',
|
---|
34 | title: 'Job Management Hub',
|
---|
35 | exact: true,
|
---|
36 | permission: [
|
---|
37 | Roles.RECRUITER,
|
---|
38 | ]
|
---|
39 | },
|
---|
40 | {
|
---|
41 | component: ApplicationsByJobAd,
|
---|
42 | path: '/job-management-hub/applications/:advertisement_id',
|
---|
43 | title: 'Applications by Job Ad',
|
---|
44 | exact: true,
|
---|
45 | permission: [
|
---|
46 | Roles.RECRUITER
|
---|
47 | ]
|
---|
48 | },
|
---|
49 | {
|
---|
50 | component: ApplicationsByJobSeeker,
|
---|
51 | path: '/my-applications',
|
---|
52 | title: 'My Applications',
|
---|
53 | exact: true,
|
---|
54 | permission: [
|
---|
55 | Roles.JOBSEEKER
|
---|
56 | ]
|
---|
57 | },
|
---|
58 |
|
---|
59 | {
|
---|
60 | component: JobSeekerEditProfile,
|
---|
61 | path: '/job-seeker/edit-profile',
|
---|
62 | title: 'Edit Job Seeker Profile',
|
---|
63 | exact: true,
|
---|
64 | permission: [
|
---|
65 | Roles.JOBSEEKER
|
---|
66 | ]
|
---|
67 | },
|
---|
68 | {
|
---|
69 | component: RecruiterEditProfile,
|
---|
70 | path: '/recruiter/edit-profile',
|
---|
71 | title: 'Edit Recruiter Profile',
|
---|
72 | exact: true,
|
---|
73 | permission: [
|
---|
74 | Roles.RECRUITER
|
---|
75 | ]
|
---|
76 | },
|
---|
77 | ]
|
---|
78 |
|
---|
79 | export const PublicRoutes = [
|
---|
80 | {
|
---|
81 | component: Dashboard,
|
---|
82 | path: "/",
|
---|
83 | exact: true,
|
---|
84 | permission: [
|
---|
85 | Roles.RECRUITER,
|
---|
86 | Roles.JOBSEEKER,
|
---|
87 | Roles.ADMIN,
|
---|
88 | Roles.GUEST
|
---|
89 | ]
|
---|
90 | },
|
---|
91 | {
|
---|
92 | component: SignInForm,
|
---|
93 | path: '/signin',
|
---|
94 | title: 'Sign In',
|
---|
95 | exact: true,
|
---|
96 | permission: [
|
---|
97 | Roles.GUEST,
|
---|
98 | Roles.RECRUITER,
|
---|
99 | Roles.JOBSEEKER,
|
---|
100 | Roles.ADMIN
|
---|
101 | ]
|
---|
102 | },
|
---|
103 |
|
---|
104 | {
|
---|
105 | component: SignUpRecruiterForm,
|
---|
106 | path: '/signup/recruiter',
|
---|
107 | title: 'Sign Up as Recruiter',
|
---|
108 | permission: [
|
---|
109 | Roles.GUEST,
|
---|
110 | Roles.RECRUITER,
|
---|
111 | Roles.JOBSEEKER,
|
---|
112 | Roles.ADMIN
|
---|
113 | ]
|
---|
114 | },
|
---|
115 | {
|
---|
116 | component: SignUpJobSeekerForm,
|
---|
117 | path: '/signup/job-seeker',
|
---|
118 | title: 'Sign Up as Job Seeker',
|
---|
119 | permission: [
|
---|
120 | Roles.GUEST,
|
---|
121 | Roles.RECRUITER,
|
---|
122 | Roles.JOBSEEKER,
|
---|
123 | Roles.ADMIN
|
---|
124 | ]
|
---|
125 | },
|
---|
126 | {
|
---|
127 | component: JobAdDetails,
|
---|
128 | path: '/job-advertisements/:id',
|
---|
129 | title: 'Job Advertisement Details',
|
---|
130 | exact: true,
|
---|
131 | permission: [
|
---|
132 | Roles.RECRUITER,
|
---|
133 | Roles.JOBSEEKER,
|
---|
134 | Roles.ADMIN,
|
---|
135 | Roles.GUEST
|
---|
136 | ]
|
---|
137 | },
|
---|
138 | {
|
---|
139 | component: RecruiterProfile,
|
---|
140 | path: '/recruiters/:id',
|
---|
141 | title: 'Recruiter Profile',
|
---|
142 | exact: true,
|
---|
143 | permission: [
|
---|
144 | Roles.RECRUITER,
|
---|
145 | Roles.JOBSEEKER,
|
---|
146 | Roles.ADMIN,
|
---|
147 | Roles.GUEST
|
---|
148 | ]
|
---|
149 | },
|
---|
150 | {
|
---|
151 | component: AboutUs,
|
---|
152 | path: '/about',
|
---|
153 | title: 'About Us',
|
---|
154 | exact: true,
|
---|
155 | permission: [
|
---|
156 | Roles.GUEST,
|
---|
157 | Roles.RECRUITER,
|
---|
158 | Roles.JOBSEEKER,
|
---|
159 | Roles.ADMIN
|
---|
160 | ]
|
---|
161 | },
|
---|
162 | ]
|
---|
163 |
|
---|
164 | const AllRoutes = [...PrivateRoutes, ...PublicRoutes];
|
---|
165 |
|
---|
166 | const filterRoutes = (roleParam) => {
|
---|
167 | return AllRoutes.filter(route => {
|
---|
168 | return route.permission.includes(roleParam);
|
---|
169 | });
|
---|
170 | };
|
---|
171 | const RoutesConfig = () => {
|
---|
172 | const currentUser = useSelector(state => state.auth.currentUser);
|
---|
173 | const [role, setRole] = useState(Roles.GUEST);
|
---|
174 |
|
---|
175 | useEffect(() => {
|
---|
176 | if (currentUser) {
|
---|
177 | setRole(currentUser.role);
|
---|
178 | }
|
---|
179 | }, [currentUser]);
|
---|
180 |
|
---|
181 | return (
|
---|
182 | <Routes>
|
---|
183 | {filterRoutes(role).map(route => (
|
---|
184 | <Route
|
---|
185 | key={route.path}
|
---|
186 | path={route.path}
|
---|
187 | element={<route.component/>}
|
---|
188 | exact={route.exact}
|
---|
189 | />
|
---|
190 | ))}
|
---|
191 | <Route path="*" element={<ErrorPage to="/"/>}/>
|
---|
192 | </Routes>
|
---|
193 |
|
---|
194 | // <Routes>
|
---|
195 | // <Route path="/" element={<Dashboard/>}></Route>
|
---|
196 | // <Route path="/signin" element={<SignInForm/>}></Route>
|
---|
197 | // <Route path="/signup/recruiter" element={<SignUpRecruiterForm/>}></Route>
|
---|
198 | // <Route path="/signup/job-seeker" element={<SignUpJobSeekerForm/>}></Route>
|
---|
199 | // <Route path="/job-management-hub" element={<Workspace/>}></Route>
|
---|
200 | // <Route path="/my-applications" element={<ApplicationsByJobSeeker/>}></Route>
|
---|
201 | // <Route path="/job-advertisements/:id" element={<JobAdDetails/>}></Route>
|
---|
202 | // <Route path="/recruiters/:id" element={<RecruiterProfile/>}></Route>
|
---|
203 | // <Route path="/job-management-hub/applications/:advertisement_id" element={<ApplicationsByJobAd/>}></Route>
|
---|
204 | // <Route path="/admin-panel" element={<AdminPanel/>}></Route>
|
---|
205 | // <Route path="/about" element={<AboutUs/>}></Route>
|
---|
206 | // <Route path="/job-seeker/edit-profile" element={<JobSeekerEditProfile/>}></Route>
|
---|
207 | // <Route path="/recruiter/edit-profile" element={<RecruiterEditProfile/>}></Route>
|
---|
208 | // </Routes>
|
---|
209 | )
|
---|
210 | }
|
---|
211 |
|
---|
212 | export default RoutesConfig |
---|