فكرة المشروع
يركز هذا المشروع التجريبي على أحد أهم الأجزاء في تطبيقات Backend، وهو إدارة المستخدمين والمصادقة والصلاحيات.
يوفر النظام مجموعة من العمليات التي تسمح للمستخدم بإنشاء حساب، تسجيل الدخول، تحديث بياناته، وإدارة جلسة الوصول إلى الموارد المحمية.
فهم دورة المصادقة في تطبيقات Backend وكيفية حماية الموارد والتأكد من أن كل مستخدم يصل فقط إلى البيانات التي يملك صلاحية الوصول إليها.
أهم مميزات النظام
👤 إنشاء الحساب
تسجيل مستخدم جديد مع التحقق من البيانات.
🔐 تسجيل الدخول
التحقق من بيانات المستخدم والسماح له بالوصول إلى الموارد المحمية.
🔑 إدارة الوصول
استخدام آلية للمصادقة للوصول إلى الـ API.
🛡️ الصلاحيات
تحديد العمليات التي يستطيع كل مستخدم تنفيذها.
⚙️ الملف الشخصي
تحديث البيانات الأساسية الخاصة بالمستخدم.
🚪 تسجيل الخروج
إنهاء آلية الوصول الحالية للمستخدم عند الحاجة.
التقنيات المستخدمة
بنية المشروع
تم تصور النظام على شكل طبقات واضحة تفصل بين المستخدمين وواجهات الـ API ومنطق التطبيق وقاعدة البيانات.
authentication_api/
│
├── manage.py
│
├── config/
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
│
├── users/
│ ├── models.py
│ ├── serializers.py
│ ├── permissions.py
│ ├── views.py
│ └── urls.py
│
├── authentication/
│ ├── serializers.py
│ ├── views.py
│ └── urls.py
│
└── requirements.txt
نموذج المستخدم
يمثل المستخدم أحد أهم الكيانات داخل النظام، ويمكن أن يحتوي على البيانات الأساسية اللازمة لإدارة الحساب.
class User(AbstractUser):
email = models.EmailField(
unique=True
)
created_at = models.DateTimeField(
auto_now_add=True
)
استخدام User Model مناسب منذ بداية المشروع يساعد على بناء نظام يمكن تطويره لاحقًا حسب احتياجات التطبيق.
إنشاء الحساب
تبدأ دورة المستخدم عادةً بإنشاء حساب جديد، ويجب التحقق من البيانات قبل إنشاء الحساب.
- التأكد من صحة البريد الإلكتروني.
- التأكد من عدم تكرار البريد.
- التحقق من كلمة المرور.
- عدم تخزين كلمة المرور كنص عادي.
تسجيل الدخول
عند تسجيل الدخول يتم التحقق من بيانات المستخدم، ثم إنشاء آلية وصول تسمح له بالتعامل مع الموارد التي يملك صلاحية الوصول إليها.
POST /api/auth/login/
{
"email": "user@example.com",
"password": "********"
}
REST API
| Method | Endpoint | الوظيفة |
|---|---|---|
| POST | /api/auth/register/ | إنشاء حساب |
| POST | /api/auth/login/ | تسجيل الدخول |
| POST | /api/auth/logout/ | تسجيل الخروج |
| GET | /api/users/me/ | بيانات المستخدم الحالي |
| PATCH | /api/users/me/ | تحديث البيانات |
الصلاحيات
المصادقة وحدها لا تكفي؛ يجب أيضًا تحديد ما يستطيع المستخدم القيام به بعد تسجيل الدخول.
Anonymous
مستخدم غير مسجل دخوله إلى النظام.
User
مستخدم يستطيع الوصول إلى موارده الشخصية.
Staff
مستخدم يمتلك صلاحيات إدارية إضافية.
Admin
صلاحيات واسعة لإدارة النظام.
حماية كلمات المرور
يجب عدم تخزين كلمات المرور داخل قاعدة البيانات كنصوص واضحة.
يجب استخدام آلية hashing آمنة ومناسبة بدل تخزين كلمة المرور الأصلية.
التحقق من البيانات
يتم التحقق من البيانات في Backend قبل تنفيذ العمليات المتعلقة بالحساب.
- التحقق من صيغة البريد الإلكتروني.
- التأكد من عدم تكرار الحساب.
- التحقق من البيانات المطلوبة.
- منع المستخدم من تعديل بيانات مستخدم آخر.
الأمان
أنظمة المصادقة تحتاج إلى اهتمام خاص بالأمان لأنها تتعامل مع الحسابات وبيانات المستخدمين.
- حماية endpoints الحساسة.
- استخدام HTTPS في الإنتاج.
- عدم تخزين الأسرار داخل المستودع.
- تطبيق الصلاحيات على الموارد.
- التعامل الآمن مع بيانات المستخدمين.
الاختبارات
يمكن كتابة اختبارات تغطي دورة المصادقة والعمليات الأساسية المتعلقة بالمستخدم.
- اختبار إنشاء حساب جديد.
- اختبار البريد المكرر.
- اختبار تسجيل الدخول الصحيح.
- اختبار بيانات الدخول الخاطئة.
- اختبار الوصول إلى الموارد المحمية.
- اختبار الصلاحيات.
المفاهيم التي يوضحها المشروع
Authentication
فهم كيفية التحقق من هوية المستخدم.
Authorization
تحديد ما يستطيع المستخدم الوصول إليه أو تنفيذه.
Security
تطبيق ممارسات أساسية لحماية بيانات الحسابات.
API Design
تصميم endpoints واضحة لعمليات المستخدمين.
حالة المشروع
هذا المشروع نموذج تجريبي ضمن معرض الأعمال، ويمكن استبداله لاحقًا بمشروع حقيقي وإضافة رابط GitHub أو Demo وتفاصيل التنفيذ الفعلية.