# إعداد تسجيل الدخول (Login Setup) تم ربط عملية تسجيل الدخول مع السيرفر بنجاح. ## الملفات المُنشأة ### 1. Data Layer - `data/dto/login_dto.dart` - DTO لإرسال بيانات تسجيل الدخول - `data/dto/login_response_dto.dart` - DTO لاستقبال استجابة تسجيل الدخول - `data/datasources/auth_remote_data_source.dart` - مصدر البيانات البعيدة لتسجيل الدخول ### 2. Domain Layer - `domain/models/login_request.dart` - نموذج طلب تسجيل الدخول - `domain/models/login_response_model.dart` - نموذج استجابة تسجيل الدخول - `domain/repositories/auth_repository.dart` - واجهة Repository - `domain/usecases/login_usecase.dart` - Use Case لتسجيل الدخول ### 3. Data Implementation - `data/repositories/auth_repository_impl.dart` - تطبيق Repository ### 4. Core Updates - `core/network/api_client.dart` - تم تحديثه لإضافة token تلقائياً في الطلبات - `core/di/injection_container.dart` - تم تسجيل جميع التبعيات ### 5. UI Updates - `widgets/auth_form.dart` - تم تحديثه لاستخدام LoginUseCase ## كيفية الاستخدام ### في الكود: ```dart // الحصول على LoginUseCase من dependency injection final loginUseCase = sl(); // إنشاء طلب تسجيل الدخول final request = LoginRequest( phoneNumber: '7856121557', password: 'qaqaqa', ); // استدعاء UseCase final result = await loginUseCase(request); // التعامل مع النتيجة result.fold( (failure) { // معالجة الخطأ print('خطأ: ${failure.message}'); }, (response) { // معالجة النجاح if (response.isSuccess) { print('تم تسجيل الدخول بنجاح'); print('Token: ${response.data?.token}'); print('اسم المستخدم: ${response.data?.fullName}'); } }, ); ``` ## API Endpoint - **URL**: `https://hrm.go.iq/api/Auth/login` - **Method**: POST - **Headers**: - `Content-Type: application/json` - `accept: text/plain` ### Request Body: ```json { "phoneNumber": "7856121557", "password": "qaqaqa" } ``` ### Response: ```json { "statusCode": 200, "isSuccess": true, "message": "Login Successful", "data": { "token": "...", "id": "...", "username": "...", "fullName": "...", "role": "...", "email": "...", "phoneNumber": "...", "permissions": [...] } } ``` ## المميزات 1. ✅ حفظ Token تلقائياً في SharedPreferences 2. ✅ إضافة Token تلقائياً في جميع الطلبات عبر ApiClient interceptor 3. ✅ معالجة الأخطاء بشكل شامل (Network, Server, Validation) 4. ✅ رسائل خطأ بالعربية 5. ✅ Loading state في واجهة المستخدم 6. ✅ التحقق من صحة المدخلات ## الخطوات التالية 1. قم بتشغيل `flutter pub get` لتثبيت الحزم 2. اختبر تسجيل الدخول باستخدام البيانات الصحيحة 3. يمكنك إضافة المزيد من الميزات مثل: - حفظ بيانات المستخدم الكاملة - تذكر المستخدم (Remember Me) - تسجيل الخروج (Logout) - تحديث Token تلقائياً عند انتهاء الصلاحية