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

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 - واجهة 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

كيفية الاستخدام

في الكود:

// الحصول على 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:

{
  "phoneNumber": "7856121557",
  "password": "qaqaqa"
}

Response:

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