#P1472
POST /api/v2/management/office
Route Info
| Method |
Endpoint |
Controller |
Middleware |
Purpose |
| POST |
/api/v2/management/office |
V2BaseController@office |
authWithJwt |
واکشی مشخصات دفتر و سرویسهای مرتبط با شعبهٔ فعلی برای نمایش در پنل مدیریت |
منطق عملکرد تابع
تابع
office برای تجمیع اطلاعات اولیهٔ دفتر در داشبورد مدیریتی طراحی شده است:
- واکشی اطلاعات از جدول
offices با استفاده از branch id در درخواست JWT.
- دریافت تنظیمات API از جدول
application_interface مخصوص سرویسهای فعال شعبه.
- تجمیع دادهها و بازگشت در قالب JSON با زمان پاسخ و وضعیت موفقیت.
| نام فیلد |
نوع داده |
الزامی |
توضیح |
| branch |
integer |
بله |
شناسه شعبه جهت دریافت اطلاعات دفتر |
نمونه درخواست:
POST /api/v2/management/office
Authorization: Bearer {JWT_TOKEN}
Content-Type: application/json
{
"branch": 7
}
خروجی (Response)
| فیلد |
نوع داده |
توضیح |
| status |
boolean |
وضعیت کلی درخواست |
| time |
integer |
زمان Unix پاسخ سرور |
| data.office |
array |
اطلاعات دقیق دفتر از جدول offices |
| data.api |
array |
لیست سرویسهای فعال در جدول application_interface شامل URL و نوع سرویس |
نمونه پاسخ:
{
"status": true,
"time": 1732290287,
"data": {
"office": [
{
"id": 7,
"en_title": "Isfahan Branch",
"fa_title": "دفتر مرکزی اصفهان",
"country": "IR",
"credit_limit": 20000000,
"base_online": 12000000
}
],
"api": [
{
"type": "sms",
"url": "https://soap.melipayamak.com",
"username": "isf-admin",
"status": 1
},
{
"type": "accounting",
"url": "https://hub.airplus.app/v2/accounting",
"status": 1
}
]
}
}
نکات امنیتی و احراز هویت
- احراز هویت حتماً باید توسط middleware
authWithJwt انجام شود.
- در نسخه فعلی هیچ کنترل سطح دسترسی برای مشاهده دفاتر دیگر وجود ندارد.
- پیشنهاد: اعمال Role-based restriction (مانند ADMIN, FINANCE, SUPPORT).
- تابع سبک و سریع است زیرا فقط از دو جدول DB خوانش دارد.
- در بارهای سنگین یا محیطهای multi-branch، پیشنهاد میشود cache 5 دقیقهای برای دادههای دفتر فعال شود.
- در پاسخ فعلی دادهها بدون pagination بازگردانده میشوند.
وابستگیها
- use Illuminate\Support\Facades\DB;
- use Illuminate\Http\Request;
- use Carbon\Carbon;
- use Exception;
کدهای خطا
| کد |
شرح خطا |
منبع |
| 1006 |
توکن JWT نامعتبر یا منقضی |
authWithJwt |
| 400 |
branch ارسال نشده |
Input Validation |
| 500 |
خطای داخلی DB یا Exception ناشناخته |
office() |
پیشنهادهای امنیتی
- اعمال تعیین سطح دسترسی مشاهده به نقشهای مدیریتی.
- پنهانسازی فیلدهای حساس مانند شناسه کاربری و رمزهای اتصال API.
- رمزنگاری سمت سرور برای آیتمهای
api.username و api.data.
پیشنهادهای بهبود
- افزودن فیلد
storage_usage برای مدیریت فضا و فایلهای شعبه.
- عدم نیاز به فراخوانی مستقیم DB در هر درخواست (استفاده از Redis cache).
- افزودن قابلیت سرچ و فیلتر بر اساس نوع سرویس در بخش api.
ممیزی و لاگها
- هیچ لاگی برای مشاهده اطلاعات دفتر ثبت نمیشود.
- پیشنهاد: ثبت رویداد
BranchViewed در جدول system_logs همراه با IP و User-Agent.
جمعبندی
مسیر /management/office بستری برای بررسی سریع وضعیت شعبه و سرویسهای فعال است. منطق عملکرد ساده اما امنیت سطح پایین دارد؛ پیشنهاد قطعی اجرای **Role-based Access + Audit Logging** جهت جلوگیری از افشای دادههای دفاتر دیگر در محیط production میباشد.