#P1467
POST /api/v2/titles/list
Route Info
| Method |
Endpoint |
Controller |
Middleware |
Purpose |
| POST |
/api/v2/titles/list |
V2BaseController@baseAutomationData |
authWithJwt |
دریافت لیست عنوانهای ثابت یا دادههای ساختاری جدولهای پایه مانند room_type، room_rate و room_view |
منطق عملکرد تابع
تابع
baseAutomationData بر اساس
table و
action پارامتر دریافتشده از درخواست، دادههای عنوانی مورد نیاز را واکشی و پردازش میکند:
- اگر
table برابر با hotel_title باشد، بر اساس مقدار action یکی از سه حالت room_type، room_rate یا room_view اجرا میشود.
- دریافت محتوا از جدول
hotel_titles با انتخاب فیلد data و دیکد آن به JSON.
- ساخت آرایه نهایی
fixedTitles با فیلدهای title_fa، title_en، property، status، و selected.
- ارسال خروجی استاندارد به صورت JSON به همراه زمان UNIX در فیلد
time.
نمونه درخواست:
POST /api/v2/titles/list
Authorization: Bearer {JWT_TOKEN}
Content-Type: application/json
{
"table": "hotel_title",
"action": "room_type"
}
خروجی (Response)
| فیلد |
نوع داده |
توضیح |
| status |
boolean |
وضعیت کلی درخواست |
| time |
integer |
زمان واکنش سرور |
| data.titles[] |
array |
لیست عنوانهای ثابت با فیلدهای زبان، وضعیت و ویژگیها |
نمونه پاسخ:
{
"status": true,
"time": 1732289234,
"data": {
"titles": [
{"title_fa": "سوئیت دونفره", "title_en": "Double Suite", "property": "2 beds", "status": true, "selected": false},
{"title_fa": "اتاق رو به دریا", "title_en": "Sea View Room", "status": true, "selected": true}
]
}
}
امنیت و کنترل دسترسی
- تابع دارای لایهٔ امنیتی
AuthWithJWT برای تأیید هویت کاربر است.
- عدم وجود محدودسازی Role-Based بر اساس نوع دادهها؛ صرفاً مجوز عمومی کاربر معتبر بررسی میشود.
- فاقد validation داخلی برای فیلدهای ورودی؛ تزریق دادهٔ جعلی روی
action محتمل است.
- داده مستقیماً از جدول `hotel_titles` واکشی میشود؛ بدون cache یا pagination.
- هر بار دیکد JSON کامل در سمت سرور انجام میشود؛ در صورت حجم زیاد منجر به افزایش load CPU خواهد شد.
- نیاز به ایندکس مجزا برای فیلد `title` در جدول
hotel_titles جهت بهینهشدن Queryها.
وابستگیها
- use Illuminate\Support\Facades\DB;
- use App\Models\HotelTitle;
- use Illuminate\Http\Request;
- use App\Helpers\Functions;
کدهای خطا و خروجیهای Exception
| کد خطا |
شرح |
منبع |
| 400 |
Database Exception → Trace بازگردانده میشود. |
baseAutomationData |
| 1006 |
JWT token منقضی یا نامعتبر. |
AuthWithJWT |
پیشنهادهای امنیتی
- اعمال
Request Validation برای ورودیهای table و action.
- پنهانسازی Trace کامل در خروجی خطا.
- محدودسازی دسترسی فقط برای کاربران نوع operator.
پیشنهادهای بهبود
- افزودن مکانیزم caching با TTL جهت پاسخ سریعتر در تکرار درخواست.
- جداسازی منطق دریافت داده به کلاس Service مستقل (مثلاً TitleService).
- افزودن فیلد زبان به عنوان پارامتر اختیاری جهت انتخاب زبان خروجی.
ممیزی دسترسی و لاگها
- هیچ لاگ سروری برای ثبت تعداد فراخوانیها وجود ندارد.
- پیشنهاد ثبت رویداد با event
SystemLog::dispatch() جهت ردیابی درخواستهای غیرمجاز.
جمعبندی
این Endpoint مسیر اصلی دریافت عنوانهای پارامتری در سیستم اتوماسیون است. ساختار ساده و خروجی یکسان باعث سهولت مصرف در فرانتاند میشود، اما عدم وجود validation و cache منجر به ضعف امنیت و Performance در حجم بالا خواهد شد. توصیه میشود Refactor در لایهٔ Service و اعمال TTL روی دادههای ثابت انجام گیرد.