1111
This commit is contained in:
113
lib/LOGIN_SETUP.md
Normal file
113
lib/LOGIN_SETUP.md
Normal file
@@ -0,0 +1,113 @@
|
||||
# إعداد تسجيل الدخول (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 تلقائياً عند انتهاء الصلاحية
|
||||
Reference in New Issue
Block a user