api laravel postman تسجيل-الدخول laravel-passport توثيق-oauth2 تسجيل-المستخدم api-authentication إنشاء-api laravel-9
بناء API متقدم باستخدام Laravel Passport للتوثيق
في هذا الدرس، سنقوم بإنشاء واجهة برمجة تطبيقات (API) متقدمة باستخدام Laravel، وسنستخدم Laravel Passport لإضافة التوثيق (authentication) القائم على الـ OAuth2. هذا النوع من التوثيق يوفر أمانًا أعلى ويسمح بتصديق المستخدمين عبر رموز الوصول (access tokens).
متطلبات الدرس:
- بيئة Laravel مثبتة (Laravel 9 أو أحدث)
- Composer
- MySQL أو SQLite
- Postman لاختبار الـ API
1. إعداد مشروع Laravel
أولاً، قم بإنشاء مشروع Laravel جديد:
composer create-project --prefer-dist laravel/laravel laravel-passport-api
ثم توجه إلى مجلد المشروع:
cd laravel-passport-api
2. إعداد قاعدة البيانات
افتح ملف .env
وعدل إعدادات قاعدة البيانات لتتناسب مع بيئتك:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=passport_api
DB_USERNAME=root
DB_PASSWORD=
ثم قم بإنشاء قاعدة البيانات:
php artisan migrate
3. تثبيت Laravel Passport
Laravel Passport هو مكتبة رسمية توفر أداة كاملة للتوثيق عبر OAuth2. لتثبيته، استخدم هذا الأمر:
composer require laravel/passport
ثم قم بترحيل البيانات الخاصة بـ Passport:
php artisan migrate
بعد ذلك، قم بتثبيت مفاتيح التشفير التي يستخدمها Passport:
php artisan passport:install
4. إعداد Passport في التطبيق
افتح ملف app/Providers/AuthServiceProvider.php
وأضف Passport إلى إعدادات الحماية:
use Laravel\Passport\Passport;
public function boot()
{
$this->registerPolicies();
Passport::routes();
}
ثم تأكد من تحديث config/auth.php
لضبط محرك التوثيق الخاص بـ Passport:
'guards' => [
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
],
5. إنشاء واجهة API للتسجيل وتسجيل الدخول
الآن، لنقم بإنشاء بعض النقاط النهائية (endpoints) لواجهة الـ API، بما في ذلك التسجيل وتسجيل الدخول.
أولاً، أنشئ وحدة تحكم (Controller) لإدارة التوثيق:
php artisan make:controller AuthController
ثم أضف الطرق التالية إلى ملف AuthController.php
:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
class AuthController extends Controller
{
// تسجيل مستخدم جديد
public function register(Request $request)
{
$request->validate([
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:6|confirmed',
]);
$user = User::create([
'name' => $request->name,
'email' => $request->email,
'password' => Hash::make($request->password),
]);
$token = $user->createToken('LaravelPassportAPI')->accessToken;
return response()->json(['token' => $token], 201);
}
// تسجيل الدخول
public function login(Request $request)
{
$credentials = $request->only('email', 'password');
if (Auth::attempt($credentials)) {
$user = Auth::user();
$token = $user->createToken('LaravelPassportAPI')->accessToken;
return response()->json(['token' => $token], 200);
} else {
return response()->json(['error' => 'Unauthenticated'], 401);
}
}
// الحصول على بيانات المستخدم
public function user()
{
return response()->json(Auth::user(), 200);
}
}
6. إضافة المسارات (Routes)
افتح ملف routes/api.php
وأضف المسارات الخاصة بالتسجيل وتسجيل الدخول:
use App\Http\Controllers\AuthController;
Route::post('register', [AuthController::class, 'register']);
Route::post('login', [AuthController::class, 'login']);
// مسار للحصول على بيانات المستخدم المسجل
Route::middleware('auth:api')->get('/user', [AuthController::class, 'user']);
7. اختبار واجهة الـ API باستخدام Postman
الآن يمكنك اختبار واجهة الـ API باستخدام Postman.
- التسجيل:
- الطريقة:
POST
- العنوان (URL):
http://localhost:8000/api/register
- الجسم (Body):
{
"name": "اسم المستخدم",
"email": "email@example.com",
"password": "كلمة المرور",
"password_confirmation": "تأكيد كلمة المرور"
}
- تسجيل الدخول:
- الطريقة:
POST
- العنوان (URL):
http://localhost:8000/api/login
- الجسم (Body):
{
"email": "email@example.com",
"password": "كلمة المرور"
}
- الحصول على بيانات المستخدم:
- الطريقة:
GET
- العنوان (URL):
http://localhost:8000/api/user
- الرأس (Header):
Authorization
:Bearer <token>
8. الخاتمة
بهذا نكون قد أنشأنا واجهة API متقدمة باستخدام Laravel Passport للتوثيق. يمكنك الآن استخدام هذا الأساس لبناء واجهة برمجة تطبيقات أكثر تعقيدًا تشمل مزيدًا من العمليات مثل إدارة الملفات الشخصية، التحديثات، وحذف المستخدمين.
مواضيع متقدمة للتطوير:
- إضافة الأدوار والصلاحيات (Roles and Permissions)
- حماية النقاط النهائية باستخدام مختلف أساليب التوثيق
- إدارة تجديد رموز الوصول (refresh tokens)
إذا كنت ترغب في التوسع، يمكنك كتابة دروس إضافية حول كيفية تحسين هذه الواجهة، مثل تحسين إدارة المستخدمين والأدوار، أو كيفية إنشاء نظام إشعارات متكامل.
Comments
Please log in to leave a comment.