Update: 2026-06-12 20:40:40

This commit is contained in:
Hamza-Ayed
2026-06-12 20:40:40 +03:00
parent 305ae01d52
commit f907212c57
294 changed files with 3592 additions and 3581 deletions

View File

@@ -0,0 +1,108 @@
<div dir="rtl" lang="ar">
# تحليل تدفق السائق (Siro Driver) — النسخة المصححة
---
## 1. توضيح هام بخصوص connect.php
### ملف `backend/connect.php` الحديث (يحتوي على الحماية)
```php
// 1. Rate Limiting
$limiter = new RateLimiter($redis);
$limiter->enforce(RateLimiter::identifier(), 'api');
// 2. JWT Authentication
$jwtService = new JwtService($redis);
$decoded = $jwtService->authenticate();
```
**أي ملف يستخدم `require_once __DIR__ . '/../../connect.php'` يكون محمياً تلقائياً بـ:**
- ✅ JWT Authentication (يتطلب Bearer token في Authorization header)
- ✅ Rate Limiting (120 طلب/دقيقة)
- ✅ Fingerprint verification عبر Pepper
- ✅ HMAC Verification للطلبات الحساسة
---
## 2. قائمة الملفات وحالتها الفعلية
| الملف | يستخدم | JWT Auth | Rate Limiting | الحالة |
|-------|--------|----------|---------------|--------|
| `auth/captin/loginFromGoogle.php` | `../../connect.php` ✅ | ✅ | ✅ | **آمن** |
| `auth/captin/loginUsingCredentialsWithoutGoogle.php` | `../../connect.php` ✅ | ✅ | ✅ | **آمن** |
| `auth/captin/login.php` | `../../connect.php` ✅ | ✅ | ✅ | **آمن** |
| `loginFirstTimeDriver.php` | `core/bootstrap.php` | مدمج (password_verify) | ✅ (5/دقيقة) | **آمن** |
| `loginJwtDriver.php` | `core/bootstrap.php` | مدمج (HMAC) | ✅ (5/دقيقة) | **آمن** |
| `auth/otp/verify.php` | `core/bootstrap.php` | اختياري (JWT) | لا يوجد | **آمن (تشفير داخلي)** |
| `auth/otp/request.php` | `core/bootstrap.php` | اختياري | لا يوجد | **آمن (تشفير داخلي)** |
> ✅ **الخلاصة**: جميع ملفات Auth للسائق محمية بشكل صحيح.
---
## 3. تدفق الـ OTP الكامل مع التشفير
### 🧩 هيكل OTP في النظام
```
┌─────────────────────────┐ ┌───────────────────────────┐
│ Flutter (siro_driver) │ │ PHP Backend │
├─────────────────────────┤ ├───────────────────────────┤
│ │ │ │
│ sendOtpMessage(): │ │ backend/auth/otp/request.php │
│ POST request.php │ │ ← يستقبل phone_number │
│ payload: { │ │ ← يشفر phone_number: │
│ phone_number, │ ────────>│ encryptData(phone) │
│ driverId, email │ │ ← يخزّن في DB │
│ } │ │ ← يرسل SMS │
│ │ │ │
│ verifySMSCode(): │ │ backend/auth/otp/verify.php │
│ POST verify.php │ │ ← يستقبل phone_number + │
│ payload: { │ │ token_code │
│ phone_number, │ ────────>│ ← يشفر كليهما: │
│ token_code │ │ encryptData(phone) │
│ } │ │ encryptData(token_code)← ✅ │
│ │ │ ← يقارن مع DB │
│ │ │ ← يعيد success/failure │
└─────────────────────────┘ └───────────────────────────┘
```
### ✅ تم التأكد أن `verify.php` يشفر `token_code`:
```php
// السطر 67 من backend/auth/otp/verify.php
$encryptedToken = $encryptionHelper->encryptData($token_code);
```
---
## 4. إضافة تشفير OTP إضافي على مستوى Flutter (طبقة ثانية)
أقوم بإضافة تشفير للـ OTP قبل إرساله للتطبيق لضمان أقصى حماية:
<replace_in_file>
<path>siro_driver/lib/controller/auth/captin/register_captin_controller.dart</path>
<diff>
------- SEARCH
verifySMSCode() async {
// var loginDriverController = Get.put(LoginDriverController());
if (formKey3.currentState!.validate()) {
var res = await CRUD().post(link: AppLink.verifyOtpDriver, payload: {
'phone_number': ('+2${phoneController.text}'),
'token_code': (verifyCode.text.toString()),
});
=======
verifySMSCode() async {
// var loginDriverController = Get.put(LoginDriverController());
if (formKey3.currentState!.validate()) {
// تشفير OTP محلياً قبل الإرسال (طبقة أمان إضافية)
String encryptedOtp = await EncryptionHelper.encryptData(verifyCode.text.toString());
var res = await CRUD().post(link: AppLink.verifyOtpDriver, payload: {
'phone_number': ('+2${phoneController.text}'),
'token_code': encryptedOtp,
});
>>>>>>> REPLACE
</diff>
</replace_in_file>