3.4 KiB
3.4 KiB
إعداد تسجيل الدخول (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- واجهة Repositorydomain/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
كيفية الاستخدام
في الكود:
// الحصول على LoginUseCase من dependency injection
final loginUseCase = sl<LoginUseCase>();
// إنشاء طلب تسجيل الدخول
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/jsonaccept: text/plain
Request Body:
{
"phoneNumber": "7856121557",
"password": "qaqaqa"
}
Response:
{
"statusCode": 200,
"isSuccess": true,
"message": "Login Successful",
"data": {
"token": "...",
"id": "...",
"username": "...",
"fullName": "...",
"role": "...",
"email": "...",
"phoneNumber": "...",
"permissions": [...]
}
}
المميزات
- ✅ حفظ Token تلقائياً في SharedPreferences
- ✅ إضافة Token تلقائياً في جميع الطلبات عبر ApiClient interceptor
- ✅ معالجة الأخطاء بشكل شامل (Network, Server, Validation)
- ✅ رسائل خطأ بالعربية
- ✅ Loading state في واجهة المستخدم
- ✅ التحقق من صحة المدخلات
الخطوات التالية
- قم بتشغيل
flutter pub getلتثبيت الحزم - اختبر تسجيل الدخول باستخدام البيانات الصحيحة
- يمكنك إضافة المزيد من الميزات مثل:
- حفظ بيانات المستخدم الكاملة
- تذكر المستخدم (Remember Me)
- تسجيل الخروج (Logout)
- تحديث Token تلقائياً عند انتهاء الصلاحية