Skip to main content
#P1380

POST /api/auth/connect/branch

Auth - Connect Branch API Documentation

Route Info

مورد توضیحتوضیحات
Method POST
Endpoint /api/auth/connect/branch
Controller App\Http\Controllers\Api\Panel\V2\UserController@connectBranchUserController
Middleware فعال Noneندارد
Purpose (هدف)هدف کلی) دریافتاتصال و معتبرسازی شعبه بر اساس کد شعبه از کاربرورودی برای اتصال بهبازیابی دامنه اختصاصی مربوطه و بازگرداندن اطلاعات دامنهٔ فعال.مرتبط
Categoryدسته‌بندی عملکردی Auth / ConnectionAuthentication / Branch Connection

تحلیل عملکرد (Analysis)

    این

  1. دریافتEndpoint فیلدیک branchنقطه ورود بدون احراز هویت (Unauthenticated) برای شناسایی و اعتبارسنجی شعبه است. هدف آن، بازگرداندن دامنه محیطی شعبه معتبر می‌باشد.

    مکانیزم کدگذاری شعبه

    سیستم از درخواستفرمول (Bodyزیر JSON).

  2. برای
  3. محاسبهٔاستخراج مقدارشناسه واقعی شعبه از کد داخلی:ارسالی استفاده 𝑐می‌کند:

    𝑜
    Actual 𝑑Office 𝑒ID = code=Input request->get(‘branch’)Branch Code - 1000;1000

    برای مثال اگر کد ورودی 1050 باشد، شناسه واقعی شعبه 50 خواهد بود.

    منطق اعتبارسنجی

    • استخراج شناسه واقعی با کسر 1000 از ورودی
    • جستجو در جدول offices برایبر یافتن رکوردی بااساس codeid = $codeResult و status = 1.
    • در صورت وجود، نخستین مقدار JSON دیکد شده ازبرگرداندن فیلد domain بازگرداندهبه می‌شود.
    • عنوان
    • نتیجه در صورت عدممعتبر وجودبودن رکورد
    • بازگرداندن پیام خطای فارسی در صورت نبود رکورد معتبر، خروجی خطا با کد اختصاصی 1201 برمی‌گردد.معتبر

ورودی‌ها (Inputs)

داده خواهد بود.
فیلد نوع داده اجباریتوضیح توضیحالزامی
branch integer (JSON body)Integer کد شعبهٔ ورودیشعبه (مثلاً 1050) که پس از کسر عدد 1000 شناسه واقعی در+ پایگاه1000) بله

نمونه:Example Request Body:

json
{
  “branch”"branch": 1050
}


خروجی‌ها (Outputs)

پاسخ همیشه HTTP 200 بازمی‌گردد.

خروجی موفق:

json
فیلدنوع دادهتوضیح
statusBooleanهمیشه true
timeIntegerزمان یونیکس پاسخ سرور
data.domainStringدامنهٔ مرتبط با شعبه
{
  “status”"status": true,
  “data”"time": 1731324000,
  "data": {
    “domain”"domain": "example.com”com"
  }
}

در

خروجی صورت خطا:

json
ناموفق:

{
  “status”"status": false,
  “code”"code": 1201,
  “message”"message": "کد دسترسی نا معتبر می باشد."
}


وابستگی‌ها (Dependencies)

کاربر
وابستگی کاربردنوعتوضیح
DB (offices)DB::table('offices') جستجویDatabase دادهTableواکشی دامنهٔ شعبه واز دامنهپایگاه داده
Illuminate\Http\RequestFramework Class دریافت داده JSON ورودی
response()->json()Laravel Helperساخت خروجی JSON استاندارد

نمونهٔ تست و استفاده (Testing & Usage)

موردمقدار
MethodPOST
URL/api/auth/connect/branch
HeadersContent-Type: application/json

ریکوئستExample زیر برای تست در Postman قابل استفاده است:cURL:

bash
curl -X POST \

https://your-domain.yourdomain.com/api/auth/connect/branch \
  -H "Content-Type: application/json”json" \
  -d '{“branch”"branch":1050}'

در

موارد پاسخخطا باید دامنهٔ معتبر شعبه بازگردد.


(Typical Error CasesCases)

عددیآن1
خطا علتکد HTTP کد HTTPعلت
invalid_branch_codeInvalid Branch Code ورود200 کد خارجشعبه پس از محدودهکسر 1000 در جدول offices یافت نشود یا عدم وجود رکورد با وضعیت فعال 400
access_deniedدرخواست به دامنهٔ غیرمجاز یا شناسهٔ IP غیرقابل‌اعتماد (درصورت افزودن middleware در نسخه‌های بعد)403نباشد.

جزئیات پیاده‌سازی (Conceptual Implementation)

$branch = $request->get('branch');
$code = $branch - 1000;

$office = DB::table('offices')
    ->where('id', $code)
    ->where('status', 1)
    ->select('domain')
    ->first();

if ($office) {
    return response()->json([
        'status' => true,
        'time' => now()->timestamp,
        'data' => [ 'domain' => json_decode($office->domain)[0] ],
    ]);
}
return response()->json([
    'status' => false,
    'code'   => 1201,
    'message'=> 'کد دسترسی نا معتبر می باشد.'
]);

نتیجه نتیجه نهایی (Conclusion)

این endpointEndpoint برایبدون اتصال اولیهٔ اپراتور یا سیستم خارجینیاز به دامنهٔتوکن صحیحاحراز سازمانیهویت، استفادهدامنه شعبه را تعیین می‌شودکند. طراحی آن ساده و سریع بوده و پایهٔ احراز هویت در مراحلسایر بعدیسرویس‌های (connectOtp، و connectSubmit) است.می‌باشد.

عدم

پیوست: وجودنگهداری وابستگیو امنیتیامنیت

  • اعمال Rate Limiting برای جلوگیری از سوءاستفاده.
  • اعتبارسنجی ورودی جهت جلوگیری از تزریق SQL (Middleware)توسط نشانگرQuery آنBuilder استایمن).
  • که
  • پیشنهاد: بایدثبت درلاگ لایهٔبرای شبکههر یاتلاش Gatewayناموفق، کنترلافزودن شود.

    error-code مجزا برای موارد «شعبه یافت نشد» و «غیرفعال».

Changelog

VersionDateDescriptionAuthor
1.0.02024‑01‑15Initial releaseAPI Team
1.0.12024‑03‑01Error Handling updateDevOps