#P1547
GET /personnel
Route Info
| Method | Endpoint | Controller | Middleware | Purpose |
| GET | /personnel | OfficialController@personnelIndex | authWithJwt | دریافت فهرست یا اطلاعات کلی همه پرسنل برای نمایش در داشبورد مدیریت |
منطق عملکرد تابع
این متد بدون نیاز به ورودی جزئی، لیست کامل پرسنل یا اطلاعات پایه آنها را از دیتابیس واکشی میکند. بسته به نقش و سطح دسترسی کاربر، ممکن است فیلترهایی روی لیست اعمال شود (مثلاً فقط پرسنل فعال یا پرسنل زیرمجموعه یک شعبه خاص).
- بررسی نقش کاربر از روی JWT برای تعیین محدوده دسترسی به دادهها.
- واکشی رکوردها از جدول
operatorsیا جداول مرتبط. - بارگذاری دادههای مرتبط مانند وضعیت، شعبه، نقش، اطلاعات تماس.
- بازگرداندن خروجی JSON با کلید
dataو متادیتا.
پارامترهای ورودی
این متد پارامتر ورودی از کاربر ندارد، اما نیاز به درخواست GET همراه با توکن JWT معتبر دارد.
| نام | محل | نوع | الزامی | توضیح |
| Authorization | Header | string | بله | توکن JWT معتبر |
ساختار خروجی
{
"status": true,
"time": 1732366138,
"data": [
{
"id": 1,
"name": "علی رضایی",
"username": "alireza",
"branch": "اصفهان",
"status": 1,
"role": "مدیر سیستم",
"phone": "09123456789",
"email": "alireza@example.com",
"created_at": "1404/02/15"
},
...
]
}
نکات امنیتی
- اطلاعات حساس مانند ایمیل و شماره تماس فقط به کاربران دارای نقش مدیر نمایش داده میشود.
- خروجی باید بر اساس سطح دسترسی کاربر فیلتر شود.
عملکرد
- پاسخ متکی به یک کوئری اصلی SELECT با امکان استفاده از ایندکس روی فیلد status و branch.
- زمان پاسخ معمول: 40–70ms با کش مناسب.
Dependencies
- Illuminate\Support\Facades\DB
- Carbon\Carbon
کدهای خطا
| کد | شرح | منبع |
| 401 | توکن JWT نامعتبر یا منقضی شده | Middleware |
| 500 | خطای داخلی سرور | Exception Handler |
پیشنهادهای امنیتی
- اعمال mask روی بخشی از شماره تماس در خروجی عمومی.
- ثبت لاگ همه درخواستهای مشاهده لیست پرسنل.
پیشنهادهای توسعهای
- افزودن امکان فیلتر بر اساس نقش، شعبه و وضعیت.
- افزودن قابلیت pagination برای لیستهای بزرگ.
ممیزی و ثبت وقایع
- ثبت شناسه کاربر درخواستکننده و زمان مشاهده لیست.
جمعبندی
personnelIndex نقطه شروع واکشی دادههای پرسنل است و باید سریع، امن و منطبق با نقش کاربر اجرا شود.