"use client";
import { useCurrentUser } from "@/src/hooks/useCurrentUser";
export default function ProfilePage() {
const { user, loading, error } = useCurrentUser();
if (loading) {
return (
);
}
if (error || !user) {
return (
{error ?? "تعذر عرض بيانات الحساب."}
);
}
const fields: { label: string; value: string }[] = [
{ label: "الاسم", value: user.name },
{ label: "اسم المستخدم", value: user.userName ?? "—" },
{ label: "البريد الإلكتروني", value: user.email ?? "—" },
{ label: "رقم الهاتف", value: user.phone },
{ label: "تاريخ الإنشاء", value: new Date(user.createdAt).toLocaleDateString("ar-SA") },
{ label: "آخر تحديث", value: new Date(user.updatedAt).toLocaleDateString("ar-SA") },
];
const permissionsByModule = (user.role?.permissions ?? []).reduce>(
(acc, entry) => {
const mod = entry.permission.module || "أخرى";
if (!acc[mod]) acc[mod] = [];
acc[mod].push(entry.permission.name);
return acc;
},
{},
);
const modules = Object.keys(permissionsByModule);
const totalPermissions = Object.values(permissionsByModule).reduce((n, arr) => n + arr.length, 0);
return (
{/* top bar: user info */}
{user.name?.trim().charAt(0) ?? "?"}
{user.name}
{user.email ?? user.phone}
{user.role?.name && (
{user.role.name}
)}
{user.isActive ? "نشط" : "غير نشط"}
{/* main content, full width */}
{/* account details */}
بيانات الحساب
{fields.map((f) => (
- {f.label}
- {f.value}
))}
{/* role and permissions */}
الدور والصلاحيات
{user.role?.description && (
{user.role.description}
)}
{modules.length > 0 && (
{totalPermissions} صلاحية
)}
{modules.length === 0 ? (
لا توجد صلاحيات مسجّلة لهذا الدور.
) : (
{modules.map((mod) => (
{mod}
{permissionsByModule[mod].length}
{permissionsByModule[mod].map((name) => (
{name}
))}
))}
)}
);
}