كيفية التعامل مع أذونات المستخدم في PHP

تمت الكتابة بواسطة: عبد الحكيم

تارخ آخر تحديث: 09 سبتمبر 2024

محتوى المقال

كيفية التعامل مع أذونات المستخدم في PHP

تعتبر أذونات المستخدم جزءًا حيويًا من أمان أي تطبيق ويب. فهي تسمح لك بالتحكم في من يمكنه الوصول إلى الموارد المختلفة داخل التطبيق، وتحديد ما يمكن للمستخدمين فعله وما لا يمكنهم فعله. في PHP، يمكنك إدارة أذونات المستخدم بطرق مختلفة، سواء كانت عبر التحكم في الوصول المباشر، أو من خلال استخدام إطار عمل يوفر أدوات مدمجة لهذا الغرض. في هذا المقال، سنتعرف على كيفية التعامل مع أذونات المستخدم في PHP، مع أمثلة عملية ونصائح لتحسين أمان تطبيقاتك.

مقدمة إلى أذونات المستخدم

أذونات المستخدم هي آلية تتيح لك التحكم في الوصول إلى موارد معينة داخل التطبيق. على سبيل المثال، يمكنك أن تسمح لبعض المستخدمين بقراءة محتوى معين، بينما تمنع آخرين من الوصول إليه. تعتمد هذه الأذونات غالبًا على دور المستخدم داخل النظام (مثل المسؤول، المحرر، الزائر)، أو على مستوى الأمان المطلوب.

إدارة أذونات المستخدمين باستخدام جلسات العمل (Sessions)

في PHP، يمكنك استخدام جلسات العمل لتخزين معلومات حول أذونات المستخدم والتحقق منها في كل طلب. يتم ذلك عادةً بعد مصادقة المستخدم وتحديد دوره أو مستوى وصوله.

مثال على استخدام جلسات العمل للتحقق من الأذونات

في هذا المثال، سنفترض أن لديك نظامًا بسيطًا يحتوي على نوعين من المستخدمين: "مسؤول" و"مستخدم عادي". سنستخدم جلسات العمل للتحقق مما إذا كان المستخدم لديه إذن للوصول إلى صفحة الإدارة.

<?php
session_start();

// فرضية: تم تخزين دور المستخدم في الجلسة عند تسجيل الدخول
$user_role = $_SESSION['user_role'];

// التحقق من الأذونات
if ($user_role !== 'admin') {
    header('Location: unauthorized.php');
    exit();
}

// باقي كود الصفحة المخصصة للمسؤولين
echo 'مرحبا بك في لوحة التحكم';
?>

في هذا المثال، يتم تخزين دور المستخدم في الجلسة عند تسجيل الدخول. بعد ذلك، يتم التحقق من دور المستخدم في كل مرة يحاول فيها الوصول إلى صفحة معينة. إذا لم يكن المستخدم لديه الأذونات الكافية، يتم توجيهه إلى صفحة "غير مصرح له" (unauthorized.php).

إدارة الأذونات باستخدام قواعد البيانات

إذا كان لديك تطبيق كبير يحتوي على العديد من الأدوار والمستخدمين، فمن الأفضل تخزين الأذونات في قاعدة بيانات. يتيح لك هذا النظام المرونة في إدارة الأذونات وإجراء التعديلات دون الحاجة إلى تعديل الكود.

تصميم جدول الأذونات في قاعدة البيانات

يمكنك تصميم جداول خاصة بالأذونات في قاعدة البيانات لتخزين معلومات حول المستخدمين وأدوارهم. على سبيل المثال:

  • users: يحتوي على معلومات المستخدمين الأساسية (ID، الاسم، البريد الإلكتروني، إلخ).
  • roles: يحتوي على تعريفات الأدوار المختلفة (ID، اسم الدور، وصف الدور).
  • user_roles: يحتوي على العلاقات بين المستخدمين والأدوار (user_id، role_id).

إليك كيفية إنشاء هذه الجداول باستخدام SQL:

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(100)
);

CREATE TABLE roles (
    id INT AUTO_INCREMENT PRIMARY KEY,
    role_name VARCHAR(50),
    description TEXT
);

CREATE TABLE user_roles (
    user_id INT,
    role_id INT,
    FOREIGN KEY (user_id) REFERENCES users(id),
    FOREIGN KEY (role_id) REFERENCES roles(id)
);

بهذا التصميم، يمكنك بسهولة إدارة الأدوار والأذونات من خلال واجهة إدارة أو عن طريق كتابة استعلامات SQL لتحديد الأدوار الجديدة أو تعديل الأدوار الحالية.

استخدام أطر العمل (Frameworks) لإدارة الأذونات

إذا كنت تعمل على مشروع معقد، فإن استخدام أطر العمل مثل Laravel أو Symfony يمكن أن يوفر لك أدوات مدمجة لإدارة الأذونات بسهولة وفعالية. توفر هذه الأطر نظام أدوار وصلاحيات متقدمًا يمكن تخصيصه وفقًا لاحتياجاتك.

نظام الأذونات في Laravel

في Laravel، يمكنك استخدام حزمة spatie/laravel-permission لإدارة الأدوار والصلاحيات بشكل متقدم. توفر هذه الحزمة طرقًا سهلة لتحديد الأدوار، وتعيين الصلاحيات، والتحقق منها.

إضافة الحزمة وتكوينها

لتثبيت الحزمة، استخدم Composer:

composer require spatie/laravel-permission

بعد تثبيت الحزمة، يمكنك نشر ملفات التكوين والمخططات باستخدام:

php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"
php artisan migrate

يمكنك الآن إنشاء أدوار وصلاحيات واستخدامها في تطبيقك:

$role = \Spatie\Permission\Models\Role::create(['name' => 'writer']);
$permission = \Spatie\Permission\Models\Permission::create(['name' => 'edit articles']);
$role->givePermissionTo($permission);
$user = auth()->user();
$user->assignRole('writer');

الخلاصة

إدارة أذونات المستخدم في PHP هي عملية أساسية لحماية تطبيقاتك وضمان الوصول المناسب إلى الموارد. سواء كنت تستخدم جلسات العمل، قواعد البيانات، أو أطر العمل المتقدمة، يتيح لك التحكم الدقيق في الأذونات تحسين أمان تطبيقاتك ومنع الوصول غير المصرح به. من خلال تطبيق الأساليب المناسبة واستخدام الأدوات المتاحة، يمكنك بناء نظام أذونات قوي ومرن يلبي احتياجات تطبيقاتك الحالية والمستقبلية.

طور مهاراتك: مقالات يجب قراءتها في البرمجة