#P1380
POST /api/auth/connect/branch
Auth - Connect Branch API Documentation
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 ایمن).
پیشنهاد: ثبت لاگ برای هر تلاش ناموفق، افزودن error-code مجزا برای موارد «شعبه یافت نشد» و «غیرفعال».