#P1483
GET /api/v2/base/certificates
Route Info
| Method |
Endpoint |
Controller |
Middleware |
Purpose |
| GET |
/api/v2/base/certificates |
V2BaseController@indexCertificates |
authWithJwt |
نمایش لیست گواهینامههای شعبه شامل فایلها و پیشنمایش محتوای آنها. |
منطق عملکرد تابع
تابع
indexCertificates سطرهای جدول
certificates را که مربوط به شعبهی کاربر فعلی هستند واکشی میکند، سپس آنها را بر اساس
id DESC مرتب مینماید. هر آیتم از نظر وجود فایل
document بررسی شده و در صورت وجود، تصویر پیشنمایش تولید میشود:
- اگر
document با پسوند .pdf باشد، آیکون PDF نمایش داده میشود.
- در غیر این صورت، پیشنمایش تصویر آپلود شده از Storage (service01) تولید میشود.
در انتها فیلدهای اضافی مانند
created_at،
updated_at و
branch حذف میگردند و نتیجه با ساختار تفکیکشده بازگردانده میشود.
| نام پارامتر |
نوع داده |
منبع |
الزامی |
توضیح |
| branch |
integer |
Header / JWT |
بله |
شناسه شعبهای که دادهی گواهینامه در آن ذخیره شده. |
نمونه درخواست:
GET /api/v2/base/certificates
Authorization: Bearer {JWT_TOKEN}
خروجی (Response)
| فیلد |
نوع داده |
توضیح |
| items[].id |
integer |
شناسه گواهینامه. |
| items[].title |
string |
عنوان ثبتشده مدارک. |
| items[].document |
string |
مسیر فایل سند در Storage. |
| items[].preview |
string|html |
کد HTML شامل تصویر یا محتوای نوشته برای پیشنمایش. |
| meta.timestamp |
integer |
زمان یونیکس ثبت پاسخ. |
نمونه پاسخ موفق:
{
"items": [
{
"id": 128,
"title": "گواهی ISO 9001",
"document": "media/certificates/iso9001.pdf",
"preview": "
"
},
{
"id": 129,
"title": "مجوز درجه دو",
"document": "media/certificates/license.png",
"preview": "
"
}
],
"meta": {
"timestamp": 1750669215
}
}
نکات امنیتی
- نیازمند احراز هویت JWT معتبر از طریق Middleware
authWithJwt.
- کاربر تنها به گواهینامههای شعبهی خودش دسترسی دارد.
- هیچ فیلد فایلی بهصورت قابل نوشتن بازگردانده نمیشود.
- کوئری ساده با
orderBy('id','DESC') و احتمالاً بدون نیاز به ایندکس اضافی.
- در صورت افزایش حجم داده پیشنهاد صفحهبندی یا
limit(50).
- امکان cache خروجی در Redis با کلید
certificates:{branch} با TTL=1800s برای کاهش بار DB.
وابستگیها
- use Illuminate\Support\Facades\DB;
- use Exception;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Response;
کدهای خطا
| کد |
شرح خطا |
منبع |
| 400 |
خطا در اجرای کوئری پایگاهداده. |
Catch(Exception) |
| 404 |
هیچ گواهینامهای برای این شعبه یافت نشد. |
indexCertificates() |
پیشنهادهای امنیتی
- اضافهکردن کنترل سطح دسترسی Role (مثلاً
can('view_certificates')).
- رمزنگاری مسیر فایل برای جلوگیری از دسترسی مستقیم خارج از Storage.
- اعتبارسنجی دقیق SSL Storage (service01.ir).
پیشنهادهای بهبود
- افزودن صفحهبندی و فیلتر جستجو بر اساس
title.
- پشتیبانی از پیشنمایش PDF با Embedded Viewer.
- اضافه کردن فیلد
uploaded_by برای لاگ مسئول بارگذاری.
- افزودن شمارنده کل برای جدول
certificates.
ممیزی و لاگها
- نوع لاگ توصیهشده:
ReadCertificates.
- ذخیره فیلدهای:
operator_id، branch، count(items).
- سطح لاگ پیشنهادی: Info.
جمعبندی
متد indexCertificates دادههای ساده و استاتیک گواهینامههای شعبه را واکشی میکند و پیشنمایشهای خودکار از فایل یا تصویر ایجاد میکند. پیشنهاد میشود برای بهبود سرعت در بارگذاری داشبوردها، خروجی در Redis cache ذخیره شود و در نسخه بعدی قابلیت جستجوی پویا اضافه گردد.