اضافه کردن مجوزهای دسترسی (capability)

نحوه ثبت مجوزها و گروه‌های مجوز سفارشی در سیستم مدیریت نقش LA24Core.


مرور کلی

LA24Core دو فیلتر برای یکپارچه‌سازی مجوزهای سفارشی در رابط مدیریت نقش‌ها فراهم می‌کند:
  • `la24_groups_permission` — یک گروه نام‌دار ثبت می‌کند (سرفصل بخش در رابط مدیریت گروه‌ها)
  • `la24_capability` — مجوزهای تکی متعلق به یک گروه را ثبت می‌کند
Capability های ثبت‌شده در صفحه **مدیریت گروه‌ها** ظاهر می‌شوند و ادمین می‌تواند آن‌ها را به نقش‌ها اختصاص دهد.

گروه‌های مجوز: la24_groups_permission

**نوع:** Filter **پارامترها:** `$group` (آرایه) **بازگشتی:** آرایه
php
add_filter( 'la24_groups_permission', function ( $group ) {

    $group['my-crm-group'] = __( 'ماژول CRM من', 'my-crm-ext' );

    return $group;
} );
  • کلید آرایه (`'my-crm-group'`) همان شناسه گروه است که در `gp_id` capability ها استفاده می‌شود
  • مقدار، نام نمایشی است که به عنوان سرفصل در صفحه مدیریت گروه‌ها نشان داده می‌شود
  • همیشه گروه را **قبل** از استفاده از شناسه‌اش در `la24_capability` ثبت کنید

Capability ها: la24_capability

**نوع:** Filter **پارامترها:** `$capability` (آرایه) **بازگشتی:** آرایه
php
add_filter( 'la24_capability', function ( $capability ) {

    $capability['my_crm_view_reports'] = array(
        'name'  => __( 'مجوز مشاهده گزارش‌های CRM', 'my-crm-ext' ),
        'gp_id' => 'my-crm-group',   // باید با کلید گروه ثبت‌شده مطابقت داشته باشد
    );

    $capability['my_crm_export_data'] = array(
        'name'  => __( 'مجوز خروجی گرفتن از داده‌های CRM', 'my-crm-ext' ),
        'gp_id' => 'my-crm-group',
    );

    return $capability;
} );
**فیلدهای Capability:**
فیلدنوعتوضیح
کلید (کلید آرایه)stringslug منحصربه‌فرد capability، در فراخوانی‌های `la24_user_can()` استفاده می‌شود
`name`stringتوضیح قابل خواندن که در رابط مدیریت گروه‌ها نشان داده می‌شود
`gp_id`stringشناسه گروه از `la24_groups_permission`

بررسی دسترسی در کد

از تابع کمکی `la24_user_can()` در هر جای افزونه‌تان استفاده کنید:
php
if ( la24_user_can( get_current_user_id(), 'my_crm_view_reports' ) ) {
    // کاربر دسترسی دارد — محتوا را نمایش بده
}
php
// رد دسترسی و نمایش قالب اگر مجوز وجود ندارد
if ( ! la24_user_can( get_current_user_id(), 'my_crm_export_data' ) ) {
    la24_get_template( 'AccessDenied.php' );
    return;
}

ترتیب ثبت‌نام

چون Capability ها به شناسه‌های گروه ارجاع می‌دهند، گروه‌ها باید قبل از Capability ها ثبت شوند. از آنجایی که هر دو فیلتر به‌صورت پیش‌فرض با اولویت یکسان اجرا می‌شوند، فیلتر گروه را با عدد اولویت کمتر (اجرا زودتر) ثبت کنید:
php
// گروه‌ها با اولویت 5 ثبت می‌شوند (زودتر اجرا می‌شود)
add_filter( 'la24_groups_permission', 'my_register_groups', 5 );

// Capability ها با اولویت 10 ثبت می‌شوند (پیش‌فرض، دیرتر)
add_filter( 'la24_capability', 'my_register_caps', 10 );

نمایش گروه‌ها و Capability ها در رابط کاربری

  1. به **تنظیمات → مدیریت گروه‌ها** در پنل CRM بروید
  2. گروه شما به عنوان سرفصل یک بخش نمایش داده می‌شود
  3. Capability های شما به عنوان checkbox زیر آن بخش ظاهر می‌شوند
  4. ادمین می‌تواند Capability ها را به ازای هر نقش فعال یا غیرفعال کند