Skip to main content
#P1471

POST /api/v2/operator/details

Route Info

Method Endpoint Controller Middleware Purpose
POST /api/v2/operator/details V2BaseController@operatorDetails authWithJwt دریافت جزئیات اپراتور شامل اطلاعات شعبه، نقش‌ها، تنظیمات و وضعیت فعال‌سازی

منطق عملکرد تابع

تابع operatorDetails با استفاده از شناسه اپراتور از توکن JWT، اطلاعات دقیق اپراتور فعلی را از جداول اصلی استخراج می‌کند:
  • واکشی اطلاعات از جدول operators شامل نام، نام‌کاربری، ایمیل، سطح دسترسی و نقش.
  • تطبیق شناسه شعبه مربوطه از جدول offices جهت دریافت نام و موقعیت مکانی.
  • بررسی تنظیمات مرتبط با پنل از جدول settings شامل تم، رنگ پایه، لوگو و favicon.
  • درصورت تعریف APIهای خارجی برای شعبه (SMS یا API مرکزی)، افزودن اطلاعات از application_interface.
  • جمع‌بندی داده‌ها و بازگرداندن ساختار JSON نهایی.

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

نام فیلد نوع داده الزامی توضیح
branch integer بله شناسه شعبه‌ای که اپراتور در آن فعالیت می‌کند
operator_id integer خیر شناسه اپراتور (در JWT موجود است)

نمونه درخواست:

POST /api/v2/operator/details
Authorization: Bearer {JWT_TOKEN}
Content-Type: application/json

{
  "branch": 9
}

خروجی (Response)

فیلد نوع داده توضیح
status boolean وضعیت موفقیت درخواست
meta.timestamp integer زمان پاسخ سرور
data.profile object اطلاعات شخصی و کاری اپراتور
data.office object مشخصات شعبه
data.settings object تم و تنظیمات رابط کاربری
data.apis array لیست APIهای فعال برای شعبه

نمونه پاسخ:

{
  "status": true,
  "meta": { "timestamp": 1732290051 },
  "data": {
    "profile": {
      "id": 51,
      "name": "علیرضا ایرانپور",
      "role": "operator",
      "email": "a.iranpour88@gmail.com"
    },
    "office": {
      "id": 9,
      "name": "دفتر اصفهان",
      "country": "IR"
    },
    "settings": {
      "theme": "dark",
      "base_color": "#212121",
      "favicon": "/media/icons/favicon.ico"
    },
    "apis": [
      { "type": "sms", "service": "melipayamak", "status": 1 },
      { "type": "hub", "url": "https://hub.airplus.app/api/v2" }
    ]
  }
}

نکات امنیتی

  • وابسته به توکن JWT معتبر برای شناسایی اپراتور.
  • هیچ فیلد رمز یا داده حساس رمزنگاری نشده نباید در پاسخ وجود داشته باشد.
  • در ورژن فعلی endpoint سطح دسترسی اپراتور را بدون فیلتر نقش بازمی‌گرداند.

عملکرد و کارایی

  • تابع سبک است و فقط از چند جدول کاربر و تنظیمات خوانش دارد.
  • وابستگی به latency اتصال به DB اصلی شعبه در درخواست‌های همزمان زیاد است.
  • پیشنهاد: caching ۵ دقیقه‌ای پروفایل هر اپراتور بر اساس JWT.

وابستگی‌ها

  • use Illuminate\Http\Request;
  • use Illuminate\Support\Facades\DB;
  • use Carbon\Carbon;
  • use App\Helpers\Functions;
  • use Exception;

کدهای خطا

کد شرح خطا منبع
1006 توکن JWT غیر معتبر یا منقضی شده authWithJwt
400 داده ناقص یا branch نامعتبر Input Validation
500 خطا در واکشی داده‌ها از DB operatorDetails()

پیشنهادهای امنیتی

  • فیلتر نقش برای جلوگیری از مشاهده تنظیمات سایر اپراتورها.
  • رمزنگاری سمت سرور برای فیلدهای حساس (email, username).
  • ثبت audit برای هر مشاهده پروفایل.

پیشنهادهای بهبود

  • افزودن فیلد last_login و activity_status برای مانیتورینگ.
  • اضافه‌کردن بخش Roles و Permissions به خروجی JSON.
  • ادغام با سرویس مرکزی احراز هویت (corporateAuth).

ممیزی و لاگ‌ها

  • در نسخه فعلی هیچ لاگی برای مشاهده پروفایل ثبت نمی‌شود.
  • پیشنهاد: ثبت رویداد ProfileViewed در جدول system_logs.

جمع‌بندی

مسیر /operator/details برای مدیریت داخلی طراحی شده و اطلاعات کلیدی اپراتور را بدون واسطه برمی‌گرداند. در محیط production نیاز به کنترل دقیق نقش‌ها و محدودسازی پاسخ دارد تا از افشای جزئیات مدیریتی جلوگیری شود.