114 lines
3.4 KiB
Markdown
114 lines
3.4 KiB
Markdown
# إعداد تسجيل الدخول (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<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/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 تلقائياً عند انتهاء الصلاحية
|