Skip to main content
#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 با زمان پاسخ و وضعیت موفقیت.

ورودی‌ها (Request Fields)

نام فیلد نوع داده الزامی توضیح
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).

عملکرد و Performance

  • تابع سبک و سریع است زیرا فقط از دو جدول 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 می‌باشد.