#P1468
POST /api/v2/notif/simple/list
Route Info
| Method |
Endpoint |
Controller |
Middleware |
Purpose |
| POST |
/api/v2/notif/simple/list |
V2BaseController@notifySimpleList |
authWithJwt |
واچش اعلانهای ساده (Simple Notification) کاربر برای نمایش فوری در داشبورد یا موبایل |
منطق عملکرد تابع
تابع
notifySimpleList با دریافت شناسهٔ شعبه یا اپراتور کاربر، لیست اعلانهای فعال را از جدول
notifications واکشی میکند و آنرا به ترتیب نزولی تاریخ مرتب مینماید. روند اجرایی اصلی:
- دریافت پارامتر
branch از JWT یا درخواست.
- فیلتر اعلانهایی که
status = 1 و نوعشان simple است.
- مرتبسازی با
orderBy('id','DESC') برای آخرین اعلانها.
- بازگرداندان خروجی در قالب JSON شامل متادیتا (timestamp).
| نام فیلد |
نوع داده |
الزامی |
توضیح |
| branch |
integer |
بله |
شناسه شعبهٔ کاربر برای فیلتر اعلانها |
| limit |
integer |
خیر |
تعداد رکوردهای قابل نمایش در پاسخ (پیشفرض ۱۰) |
| search |
string |
خیر |
عبارت جستجوی جزئی در عنوان یا متن اعلان |
خروجی (Response)
| فیلد |
نوع داده |
توضیح |
| status |
boolean |
وضعیت نهایی پاسخ |
| meta.timestamp |
integer |
زمان واکنش سرور (Unix) |
| data[] |
array |
آرایهای از اعلانها |
| data[].title |
string |
عنوان اعلان |
| data[].content |
string |
متن کامل اعلان |
| data[].created_at |
datetime |
تاریخ ایجاد اعلان |
نمونه پاسخ:
{
"status": true,
"meta": {"timestamp": 1732289310},
"data": [
{"title": "بهروزرسانی سامانه", "content": "نسخه جدید سیستم مدیریت کاربران فعال شد.", "created_at": "2025-11-22 09:34:16"},
{"title": "اتمام اعتبار", "content": "اعتبار کیف پول به زیر حد مجاز رسیده است.", "created_at": "2025-11-21 19:48:00"}
]
}
امنیت و کنترل دسترسی
- فقط کاربران معتبر JWT میتوانند اعلانهای شعبهٔ خود را ببینند.
- عدم وجود محدودسازی بر اساس role؛ کافیست توکن معتبر باشد.
- جستجوی رشتهای بدون escaping میتواند زمینهٔ تزریق در LIKE را فراهم کند.
- عدم استفاده از Redis باعث واکشی مستقیم از DB در هر بار درخواست میشود.
- پیشنهاد افزودن Cache کوتاه مدت (TTL 60s) برای کاهش Queryهای تکراری.
- در صورت زیاد بودن اعلانها، از pagination یا LIMIT استفاده شود.
وابستگیها
- use Illuminate\Support\Facades\DB;
- use Illuminate\Http\Request;
- use App\Models\Notification;
- use App\Helpers\Functions;
کدهای خطا و خروجیهای Exception
| کد خطا |
شرح |
منبع |
| 400 |
Database یا Query Exception |
notifySimpleList |
| 1006 |
JWT نامعتبر یا منقضی شده |
authWithJwt |
| 404 |
عدم یافتن اعلان برای branch |
Query Result |
پیشنهادهای امنیتی
- افزودن escaping برای پارامتر
search.
- اعمال محدودیت max-limit برای جلوگیری از overload.
- جداسازی نقشها برای اعلانهای اختصاصی شعبه و مدیر کل.
پیشنهادهای بهبود
- افزودن سیستم دستهبندی اعلانها بر اساس نوع (سیستمی، مالی، پشتیبانی).
- امکان مارک خواندهشدن توسط کاربر (read/unread flag).
- فعالسازی لاگ برای ثبت آخرین مشاهدهٔ اعلان توسط هر اپراتور.
ممیزی و لاگها
- در حال حاضر هیچ لاگی برای دسترسی به اعلانها ثبت نمیشود.
- پیشنهاد ثبت با
SystemLog::dispatch("notifListAccess") برای رصد خطاها.
جمعبندی
Endpoint POST /notif/simple/list یکی از مسیرهای کلیدی مدیریتی برای رساندن اعلانهای سریع به کاربران است. ساختار ساده و بدون Cache باعث افزایش بار در تکرار درخواستها شده و نبود Audit باعث فقدان ردپای ثبتشدهٔ امنیتی است. توصیه میشود Redis و صفحهبندی برحسب زمان آخرین مشاهده در نسخهٔ بعدی اضافه گردد.