diff --git a/src/app/[lang]/dashboard/agents/[id]/page.tsx b/src/app/[lang]/dashboard/agents/[id]/page.tsx
index a28232da..ee1a7cf0 100644
--- a/src/app/[lang]/dashboard/agents/[id]/page.tsx
+++ b/src/app/[lang]/dashboard/agents/[id]/page.tsx
@@ -1,7 +1,19 @@
import ProfileLayout from "@/components/Dashboard/Profile/ProfileLayout";
+import { getServerUserRole } from "@/hooks/api/getUserRole";
import { RouteParams } from "@/types";
+import { UserRole } from "need4deed-sdk";
+import { cookies } from "next/headers";
+import { redirect } from "next/navigation";
export default async function DashboardAgentPage({ params }: RouteParams) {
const { id } = await params;
+
+ const cookieStore = await cookies();
+ const cookieHeader = cookieStore.toString();
+ const userRole = await getServerUserRole(cookieHeader);
+
+ if (!userRole || (userRole !== UserRole.COORDINATOR && userRole !== UserRole.ADMIN)) {
+ redirect(`/dashboard/agents`);
+ }
return ;
}
diff --git a/src/hooks/api/getUserRole.ts b/src/hooks/api/getUserRole.ts
new file mode 100644
index 00000000..512d8b04
--- /dev/null
+++ b/src/hooks/api/getUserRole.ts
@@ -0,0 +1,27 @@
+import { fetchFn } from "@/hooks/api/utils";
+import { UserRole } from "need4deed-sdk";
+import { apiPathMe } from "@/config/constants";
+
+export interface ApiResponse {
+ message: string;
+ data: T;
+ count: number;
+}
+
+export const getServerUserRole = async (cookieHeader: string): Promise => {
+ try {
+ const urlPath = apiPathMe.replace("/api/", "");
+ const response = await fetchFn>({
+ url: `${process.env.URL_API}/${urlPath}`,
+ options: {
+ method: "GET",
+ headers: { Cookie: cookieHeader },
+ cache: "no-store",
+ },
+ });
+ return response.data.role;
+ } catch (error) {
+ console.error("Failed to fetch server user role:", error);
+ return null;
+ }
+};