source: jobvista-frontend/src/auth/RoutesConfig.js@ befb988

main
Last change on this file since befb988 was befb988, checked in by 223021 <daniel.ilievski.2@…>, 2 weeks ago

Added an edit profile page for both job seekers and recruiters, where they can upload profile pictures/company logos and edit their profile data. Added profile page specifically for recruiters. Refactored existing code.

  • Property mode set to 100644
File size: 6.2 KB
Line 
1import {Navigate, Route, Router, Routes} from 'react-router-dom'
2import {Dashboard} from "../views/dashboard/Dashboard";
3import {SignInForm} from "../views/auth/SignInForm";
4import {SignUpRecruiterForm} from "../views/auth/SignUpRecruiterForm";
5import {SignUpJobSeekerForm} from "../views/auth/SignUpJobSeekerForm";
6import {Workspace} from "../views/job_advertisements/RecruiterWorkspace";
7import {JobAdDetails} from "../views/job_advertisements/JobAdDetails";
8import {ApplicationsByJobAd} from "../views/applications/ApplicationsByJobAd";
9import {ApplicationsByJobSeeker} from "../views/applications/ApplicationsByJobSeeker";
10
11import {AdminPanel} from "../views/admin_panel/AdminPanel";
12import {RecruiterProfile} from "../views/recruiters/RecruiterProfile";
13import {AboutUs} from "../views/static/AboutUs";
14import {JobSeekerEditProfile} from "../views/edit_profile/JobSeekerEditProfile";
15import {RecruiterEditProfile} from "../views/edit_profile/RecruiterEditProfile";
16import Roles from "../enumerations/Roles";
17import {useSelector} from "react-redux";
18import {useEffect, useState} from "react";
19import {ErrorPage} from "../views/static/ErrorPage";
20
21export 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
79export 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
164const AllRoutes = [...PrivateRoutes, ...PublicRoutes];
165
166const filterRoutes = (roleParam) => {
167 return AllRoutes.filter(route => {
168 return route.permission.includes(roleParam);
169 });
170};
171const 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
212export default RoutesConfig
Note: See TracBrowser for help on using the repository browser.