نقشها و دسترسیها
نقشها و دسترسیها
ثابتهای Capability
پرونوبت این capability ها را تعریف و بررسی میکند (در ProNobat\Admin\RoleCapabilities):
| Capability | توضیح |
|---|---|
pronobat_manage | مدیریت کامل: نوبتها، سرویسها، کارمندان، مشتریان، تقویم، اعلانها، پیامک و تنظیمات (همهی عملیات نوشتن) |
pronobat_staff_self | فقط مشاهدهی نوبتها/تقویم مرتبط با خود کارمند (دسترسی خواندنی) |
pronobat_view_reports | مشاهدهی گزارشها و داشبورد |
pronobat_view_payments | مشاهدهی فهرست تراکنشهای پرداخت (فقط خواندن) |
pronobat_manage_payments | درخواست استرداد وجه و مدیریت پرداخت |
pronobat_finance | دسترسی مالی (بهصورت پیشفرض به نقش Editor داده میشود) |
دسترسیها در پرونوبت درشتدانه هستند. عملیات نوشتن روی نوبتها، سرویسها، کارمندان، مشتریان و تنظیمات همگی با همان pronobat_manage کنترل میشوند. بنابراین نمیتوان به کسی اجازهی «ویرایش نوبتها اما نه تنظیمات» را داد؛ هر دو زیر pronobat_manage قرار دارند.
نقشهای پیشفرض
افزونه هنگام فعالسازی دو نقش اختصاصی میسازد و به نقشهای administrator و editor نیز دسترسی میدهد:
| نقش وردپرس | Capability های پرونوبت |
|---|---|
administrator (مدیر اصلی) | همه |
pronobat_manager (مدیر پرو نوبت) | pronobat_manage + pronobat_view_reports + pronobat_view_payments — همهچیز بهجز استرداد وجه |
pronobat_staff (کارمند) | pronobat_staff_self — فقط مشاهدهی نوبتهای خود |
editor (ویرایشگر) | pronobat_finance + pronobat_view_reports + pronobat_view_payments — دسترسی مالی فقطخواندنی |
اعطای دسترسی به نقش سفارشی
برای دادن دسترسی پرونوبت به یک نقش دلخواه:
add_action( 'init', function() {
$role = get_role( 'editor' ); // نام نقش خود را اینجا وارد کنید
if ( ! $role ) return;
// دسترسی فقطخواندنی به گزارشها و پرداختها
$role->add_cap( 'pronobat_view_reports' );
$role->add_cap( 'pronobat_view_payments' );
} );این کد را فقط یک بار اجرا کنید (مثلاً در functions.php تم یا یک افزونه). capability ها در پایگاه داده ذخیره میشوند، پس هر بار اجرا بیاثر است اما نیاز به تکرار ندارد.
سلب دسترسی
$role = get_role( 'author' );
if ( $role ) {
$role->remove_cap( 'pronobat_view_reports' );
}بررسی دسترسی در کد سفارشی
if ( current_user_can( 'pronobat_manage' ) ) {
// نمایش دکمه مدیریت
}امنیت REST API
هر route مدیریتی پرونوبت دارای permission_callback است. برای مثال، نوشتن روی نوبتها:
'permission_callback' => function() {
return current_user_can( 'pronobat_manage' );
},مسیرهای خواندنی (مانند فهرست نوبتها) pronobat_manage یا pronobat_staff_self را میپذیرند؛ استرداد وجه pronobat_manage_payments را میخواهد.
پنهان کردن دکمهها در رابط کاربری جایگزین بررسی permission سمت سرور نیست.
پرونوبت را همین الان امتحان کنید
یک نمونه کامل و زنده از افزونه با دادههای واقعی — بدون نیاز به نصب.