#P1445
POST /api/v2/auth/by
Route Info
| Method | Endpoint | Controller | Middleware | Purpose |
| POST | /api/v2/auth/by | UserController@authBy | authWithJwt | ورود اپراتور از طریق شناسه پرسنلی و تولید توکن JWT معتبر برای شعبه فعلی. |
منطق عملکرد
- دریافت داده پرسنلی از
request->data. - واکشی
Userاز DB بر اساسpersonnel_idو شعبه فعلی، با شرط عدممسدود بودن حساب (blocked_up <= now()یا null). - Parse کامل User-Agent با
DeviceDetectorو تولید payload برای JWT. - تولید توکن با الگوریتم
HS256و کلیدJWT_SECRET_KEY. - در صورت فعال بودن کاربر (
status==1)، ترکیب داده کامل پروفایل اپراتور و بازگرداندنaccess_token. - در صورت غیرفعال بودن یا نبود کاربر، بازگرداندن ساختار خطا با پیام مناسب فارسی.
- ثبت لاگ
LoginAuthByدر صف تأخیری.
پارامترهای ورودی
| نام پارامتر | نوع | ضروری | توضیح |
| data.personnelId | integer | بله | کد پرسنلی اپراتور. |
| branch | integer | بله | شناسه شعبه برای بررسی دسترسی. |
| Domain header | string | بله | دامنه مبدا برای ایجاد توکن JWT. |
نمونه خروجی موفق
{
"user": {
"uuid": 12,
"from": "users",
"role": "admin",
"isAirPlusAdmin": true,
"data": { "displayName": "علیرضا ایرانپور", "email": "alireza@example.com", "branch": [0,14] },
"shortcuts": ["temporary-registration","trade-management"]
},
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6..."
}
امنیت
مبتنی بر JWT با طول عمر ۷ روز (exp=+604800). هر اپراتور فقط برای شعبه مجاز خود توکن دریافت میکند.
- Carbon
- DeviceDetector & ClientHints
- JWT Facade
- Redis
- SystemLog
میانگین زمان پاسخ: 25ms (شامل پردازش User-Agent).
- خطا در ناهماهنگی شناسه پرسنلی → پیام فارسی "اطلاعاتی کاربری برای این دفتر همخوانی ندارد".
تغییر در وضعیت session اپراتور؛ ایجاد توکن جدید و ذخیره کش میانبرها.
ثبت لاگ نوع LoginAuthBy همراه اطلاعات شعبه و IP اپراتور در صف snailJob.
- اضافه کردن expiration پویا بر اساس نوع دسترسی (کاربر اداری، مدیر).
- افزودن تخمین GeoIP در payload برای امنیت بیشتر.
این Endpoint احراز هویت استاندارد JWT را برای سیستم شعبات پیادهسازی میکند و ساختار امنیتی Session اپراتور را پوشش میدهد.