# POST /api/v2/operator/details

<div id="bkmrk-operator-details" style="font-family: Vazir, Tahoma; direction: rtl; text-align: justify; line-height: 1.9;"></div>### Route Info

<table border="1" cellpadding="6" id="bkmrk-method-endpoint-cont" style="margin: 15px auto; width: 95%; border-collapse: collapse; text-align: center;"><tbody><tr style="background: #f9f9f9; font-weight: bold;"><td>Method</td><td>Endpoint</td><td>Controller</td><td>Middleware</td><td>Purpose</td></tr><tr><td style="direction: ltr; text-align: left;">POST</td><td style="direction: ltr; text-align: left;">/api/v2/operator/details</td><td style="direction: ltr; text-align: left;">V2BaseController@operatorDetails</td><td style="direction: ltr; text-align: left;">authWithJwt</td><td style="direction: rtl; text-align: right;">دریافت جزئیات اپراتور شامل اطلاعات شعبه، نقش‌ها، تنظیمات و وضعیت فعال‌سازی</td></tr></tbody></table>

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

<div id="bkmrk-%D8%AA%D8%A7%D8%A8%D8%B9-operatordetails" style="direction: rtl; text-align: justify;">تابع **operatorDetails** با استفاده از شناسه اپراتور از توکن JWT، اطلاعات دقیق اپراتور فعلی را از جداول اصلی استخراج می‌کند: - واکشی اطلاعات از جدول `operators` شامل نام، نام‌کاربری، ایمیل، سطح دسترسی و نقش.
- تطبیق شناسه شعبه مربوطه از جدول `offices` جهت دریافت نام و موقعیت مکانی.
- بررسی تنظیمات مرتبط با پنل از جدول `settings` شامل تم، رنگ پایه، لوگو و favicon.
- درصورت تعریف APIهای خارجی برای شعبه (SMS یا API مرکزی)، افزودن اطلاعات از `application_interface`.
- جمع‌بندی داده‌ها و بازگرداندن ساختار JSON نهایی.

</div>### ورودی‌ها (Request Fields)

<table border="1" cellpadding="6" id="bkmrk-%D9%86%D8%A7%D9%85-%D9%81%DB%8C%D9%84%D8%AF-%D9%86%D9%88%D8%B9-%D8%AF%D8%A7%D8%AF%D9%87-%D8%A7%D9%84" style="margin: 15px auto; width: 97%; border-collapse: collapse; text-align: center;"><tbody><tr style="background: #f9f9f9; font-weight: bold;"><td>نام فیلد</td><td>نوع داده</td><td>الزامی</td><td>توضیح</td></tr><tr><td>branch</td><td>integer</td><td>بله</td><td>شناسه شعبه‌ای که اپراتور در آن فعالیت می‌کند</td></tr><tr><td>operator\_id</td><td>integer</td><td>خیر</td><td>شناسه اپراتور (در JWT موجود است)</td></tr></tbody></table>

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

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

{
  "branch": 9
}
```

### خروجی (Response)

<table border="1" cellpadding="6" id="bkmrk-%D9%81%DB%8C%D9%84%D8%AF-%D9%86%D9%88%D8%B9-%D8%AF%D8%A7%D8%AF%D9%87-%D8%AA%D9%88%D8%B6%DB%8C%D8%AD-" style="margin: 15px auto; width: 97%; border-collapse: collapse; text-align: center;"><tbody><tr style="background: #f9f9f9; font-weight: bold;"><td>فیلد</td><td>نوع داده</td><td>توضیح</td></tr><tr><td>status</td><td>boolean</td><td>وضعیت موفقیت درخواست</td></tr><tr><td>meta.timestamp</td><td>integer</td><td>زمان پاسخ سرور</td></tr><tr><td>data.profile</td><td>object</td><td>اطلاعات شخصی و کاری اپراتور</td></tr><tr><td>data.office</td><td>object</td><td>مشخصات شعبه</td></tr><tr><td>data.settings</td><td>object</td><td>تم و تنظیمات رابط کاربری</td></tr><tr><td>data.apis</td><td>array</td><td>لیست APIهای فعال برای شعبه</td></tr></tbody></table>

#### نمونه پاسخ:

```
{
  "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;

### کدهای خطا

<table border="1" cellpadding="6" id="bkmrk-%DA%A9%D8%AF-%D8%B4%D8%B1%D8%AD-%D8%AE%D8%B7%D8%A7-%D9%85%D9%86%D8%A8%D8%B9-1006" style="margin: 15px auto; width: 90%; border-collapse: collapse; text-align: center;"><tbody><tr style="background: #f9f9f9; font-weight: bold;"><td>کد</td><td>شرح خطا</td><td>منبع</td></tr><tr><td>1006</td><td>توکن JWT غیر معتبر یا منقضی شده</td><td>authWithJwt</td></tr><tr><td>400</td><td>داده ناقص یا branch نامعتبر</td><td>Input Validation</td></tr><tr><td>500</td><td>خطا در واکشی داده‌ها از DB</td><td>operatorDetails()</td></tr></tbody></table>

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

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

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

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

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

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

### جمع‌بندی

<div id="bkmrk-%D9%85%D8%B3%DB%8C%D8%B1-%2Foperator%2Fdetai" style="direction: rtl; text-align: justify;">مسیر **/operator/details** برای مدیریت داخلی طراحی شده و اطلاعات کلیدی اپراتور را بدون واسطه برمی‌گرداند. در محیط production نیاز به کنترل دقیق نقش‌ها و محدودسازی پاسخ دارد تا از افشای جزئیات مدیریتی جلوگیری شود.</div>