Files
finger_print_app/lib/LOGIN_SETUP.md
Mohammed Al-Samarraie fa4bee4771 1111
2026-01-13 13:07:31 +03:00

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 تلقائياً عند انتهاء الصلاحية