Skip to main content
#P1380

POST /api/auth/connect/branch

Route Info

مورد توضیحات
Method POST
Endpoint /api/auth/connect/branch
Controller UserController
Middleware فعال ندارد
Purpose (هدف کلی) اتصال و معتبرسازی شعبه بر اساس کد ورودی برای بازیابی دامنه مرتبط
دسته‌بندی عملکردی Authentication / Branch Connection

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

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

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

سیستم از فرمول زیر برای استخراج شناسه واقعی شعبه از کد ارسالی استفاده می‌کند:

Actual Office ID = Input Branch Code - 1000

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

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

  • استخراج شناسه واقعی با کسر 1000 از ورودی
  • جستجو در جدول offices بر اساس id = Result و status = 1
  • برگرداندن فیلد domain به عنوان نتیجه در صورت معتبر بودن رکورد
  • بازگرداندن پیام خطای فارسی در صورت نبود رکورد معتبر

ورودی‌ها (Inputs)

فیلد نوع داده توضیح الزامی
branch Integer کد شعبه (شناسه واقعی + 1000) بله

Example Request Body:

{
  "branch": 1050
}

خروجی‌ها (Outputs)

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

خروجی موفق:

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

خروجی ناموفق:

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

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

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

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

مورد مقدار
Method POST
URL /api/auth/connect/branch
Headers Content-Type: application/json

Example cURL:

curl -X POST https://yourdomain.com/api/auth/connect/branch \
  -H "Content-Type: application/json" \
  -d '{"branch":1050}'

موارد خطا (Typical Error Cases)

خطا کد HTTP علت
Invalid Branch Code 200 کد شعبه پس از کسر 1000 در جدول offices یافت نشود یا وضعیت آن 1 نباشد.

جزئیات پیاده‌سازی (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)

این Endpoint بدون نیاز به توکن احراز هویت، دامنه شعبه را تعیین می‌کند. طراحی آن ساده و سریع بوده و پایهٔ احراز در سایر سرویس‌های connectOtp و connectSubmit می‌باشد.

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

  • اعمال Rate Limiting برای جلوگیری از سوءاستفاده.
  • اعتبارسنجی ورودی جهت جلوگیری از تزریق SQL (توسط Query Builder ایمن).