Deploy: 2026-05-21 01:26:06
This commit is contained in:
@@ -224,11 +224,31 @@ server {
|
||||
|
||||
---
|
||||
|
||||
## أسئلة للنقاش والمراجعة البرمجية
|
||||
## المرحلة الرابعة: نظام التوثيق والمصادقة (Authentication Phase)
|
||||
|
||||
> [!NOTE]
|
||||
> 1. **عنوان خادم الـ SSH والمسار**: هل تود ملء بيانات السيرفر الخاصة بك (اسم المستخدم، عنوان IP، المسار) مباشرة داخل ملف `deploy.sh` لتسهيل الاستخدام الفوري، أم نضعها كمتغيرات في ملف `.env` على أن يقرأها السكريبت؟
|
||||
> 2. **النطاق الفرعي (Subdomain)**: ما هو الاسم المقترح للنطاق الفرعي لـ Backend؟ (مثال: `api.nabeh.sa` أو `core.nabeh.sa`)؟
|
||||
> 3. **إصدار PHP على السيرفر**: ما هو إصدار PHP المفعل على خادم Nginx الحالي لديك للتأكد من تطابق التهيئة ودعم الـ Socket الصحيح؟
|
||||
بناءً على النواة الأمنية التي تم تجهيزها (JWT, AES-256-GCM, Bcrypt, HMAC Blind Index)، سنقوم ببناء نظام المصادقة ليكون جاهزاً لإدارة جلسات المستخدمين.
|
||||
|
||||
### Proposed Changes
|
||||
|
||||
#### [NEW] `backend/app/Models/User.php`
|
||||
- كلاس يمتد من `BaseModel` لإدارة جدول `users`.
|
||||
- يحتوي على دالة `findByEmail` التي تقوم بتوليد (Blind Index HMAC) للبريد الإلكتروني للبحث السريع في قاعدة البيانات دون فك التشفير.
|
||||
- دالة `createSecure` لإنشاء مستخدم جديد مع تشفير بريده الإلكتروني وكلمة مروره.
|
||||
|
||||
#### [NEW] `backend/app/Controllers/AuthController.php`
|
||||
- دالة `login`: تستقبل البريد الإلكتروني وكلمة المرور، تتحقق منها عبر الموديل، وتولد JWT Token.
|
||||
- دالة `register` (اختيارية كأداة تطوير مبدئية أو للأدمن): إنشاء حساب موظف جديد.
|
||||
- دالة `me`: جلب بيانات المستخدم الحالي باستخدام الـ `AuthMiddleware` لاختبار سلامة الجلسة.
|
||||
|
||||
#### [MODIFY] `backend/public/index.php`
|
||||
- إضافة المسارات الخاصة بنظام التوثيق:
|
||||
- `POST /api/auth/login`
|
||||
- `GET /api/auth/me` (مرفق بـ `AuthMiddleware`)
|
||||
|
||||
### User Review Required
|
||||
|
||||
> [!IMPORTANT]
|
||||
> - هل ترغب بإنشاء مسار `POST /api/auth/register` مفتوح للجميع لإنشاء حسابات شركات جديدة؟ أم نكتفي حالياً بإنشاء مستخدم مدير (Admin) افتراضي يدوياً أو عبر سكربت ليكون النظام مغلقاً للشركات المعتمدة فقط؟
|
||||
> - في عملية تسجيل الدخول، هل نحتاج لإرجاع بيانات الشركة المرتبطة بالمستخدم ضمن نفس الـ Response، أم نكتفي بإرجاع التوكن (Token) وبيانات المستخدم الأساسية فقط؟
|
||||
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user