From 77dd052951678f56cde6ed825a84b4205641eb36 Mon Sep 17 00:00:00 2001 From: Rahaf Date: Sat, 4 Apr 2026 20:56:49 +0300 Subject: [PATCH] Added add admin and privacy in sidebar for admin --- app/ClientLayout.js | 6 +- app/admin/add-admin/page.js | 123 +++++++++++++++ app/admin/privacy/page.js | 88 +++++++++++ app/components/FloatingSidebar.js | 239 ++++++++++++++++-------------- 4 files changed, 344 insertions(+), 112 deletions(-) create mode 100644 app/admin/add-admin/page.js create mode 100644 app/admin/privacy/page.js diff --git a/app/ClientLayout.js b/app/ClientLayout.js index 1a3645c..00775ea 100644 --- a/app/ClientLayout.js +++ b/app/ClientLayout.js @@ -709,9 +709,9 @@ export default function ClientLayout({ children }) { className={`${!isAuthPage && !isProfilePage ? "pt-20" : ""} min-h-screen bg-gradient-to-b from-gray-50 to-white ${currentLanguage === "ar" ? "text-right" : "text-left"}`} > - {children} - {!isAdmin && } - + {children} + + {!isAuthPage && !isProfilePage && ( diff --git a/app/admin/add-admin/page.js b/app/admin/add-admin/page.js new file mode 100644 index 0000000..bad4889 --- /dev/null +++ b/app/admin/add-admin/page.js @@ -0,0 +1,123 @@ +'use client'; + +import { useEffect, useState } from 'react'; +import AuthService from '@/app/services/AuthService'; +import Link from 'next/link'; + +export default function AddAdminPage() { + const [isAdmin, setIsAdmin] = useState(false); + const [checked, setChecked] = useState(false); + const [formState, setFormState] = useState({ fullName: '', email: '', password: '' }); + const [saved, setSaved] = useState(false); + + useEffect(() => { + setIsAdmin(AuthService.isAuthenticated() && AuthService.isAdmin()); + setChecked(true); + }, []); + + const handleChange = (field) => (event) => { + setFormState((prev) => ({ ...prev, [field]: event.target.value })); + }; + + const handleSubmit = (event) => { + event.preventDefault(); + setSaved(true); + console.log('Add admin payload', formState); + }; + + if (!checked) { + return ( +
+
+
+ ); + } + + if (!isAdmin) { + return ( +
+
+ + العودة للرئيسية + +
+
+ ); + } + + return ( +
+
+
+
+

لوحة المدير

+

إضافة مدير جديد

+

انشئ حساب مسؤول جديد مع صلاحيات الإدارة.

+
+
+

رابط سريع

+ تعديل سياسة الخصوصية +
+
+ +
+
+

بيانات المدير

+
+ + + + + + + +
+ {saved && ( +
+ تم حفظ بيانات المدير بنجاح +
+ )} +
+ + +
+
+
+ ); +} diff --git a/app/admin/privacy/page.js b/app/admin/privacy/page.js new file mode 100644 index 0000000..963acf9 --- /dev/null +++ b/app/admin/privacy/page.js @@ -0,0 +1,88 @@ +'use client'; + +import { useEffect, useState } from 'react'; +import AuthService from '@/app/services/AuthService'; +import Link from 'next/link'; + +const initialPolicy = `1. نحترم خصوصيتك ونلتزم بحماية بياناتك الشخصية. +2. يتم استخدام المعلومات لتحسين تجربة المستخدم وتأمين الخدمة. +3. لا نشارك البيانات مع أطراف خارجية بدون موافقتك. +4. يمكنك طلب حذف بياناتك من النظام في أي وقت.`; + +export default function PrivacyPolicyAdminPage() { + const [isAdmin, setIsAdmin] = useState(false); + const [checked, setChecked] = useState(false); + const [policyText, setPolicyText] = useState(initialPolicy); + const [saved, setSaved] = useState(false); + + useEffect(() => { + setIsAdmin(AuthService.isAuthenticated() && AuthService.isAdmin()); + setChecked(true); + }, []); + + const handleSave = (event) => { + event.preventDefault(); + setSaved(true); + console.log('Privacy policy updated:', policyText); + }; + + if (!checked) { + return ( +
+
+
+ ); + } + + if (!isAdmin) { + return ( +
+
+

هذه الصفحة لتحرير سياسة الخصوصية ولا يمكن الوصول إليها إلا للمدير.

+ + العودة للرئيسية + +
+
+ ); + } + return ( +
+
+
+
+
+

لوحة المدير

+

قم بتحديث نص سياسة الخصوصية

+
+ + إضافة أدمن جديد + +
+
+ +
+
+ +