#P1390
POST /api/auth/connect/submit
Route Info
| Method | Endpoint | Controller | Middleware | Purpose | تگ Swagger |
| POST | /api/auth/connect/submit | UserController@connectSubmit | domainAccess, ipTrust | تأیید نهایی اتصال اپراتور به سرویس جانبی پس از دریافت رمز OTP | tags={"Auth"} |
توضیح عملکرد (Function Logic)
این Endpoint برای فاز نهایی فرآیند اتصال کاربر به سرویس جانبی (نظیر ربات تلگرام) استفاده میشود. پس از ارسال رمز موقت (OTP) از طریق مسیر POST /api/auth/connect/otp، اپراتور باید طی ۱۵ دقیقه آن را در این مسیر ثبت کند. در صورت صحت OTP و اعتبار زمانی آن، ارتباط کاربر ثبت و موفق اعلام میشود.
- دریافت پارامترهای
personnel_id،otpوtelegramاز درخواست. - جستوجوی اپراتور فعال در جدول
operatorsبراساس کد پرسنلی و رمز فعلی OTP. - بررسی انقضای OTP با درنظر گرفتن بازه زمانی ۱۵ دقیقهای.
- در صورت اعتبار، بهروزرسانی ستونهای
telegramوotp(پاک کردن OTP). - ثبت رویداد در
SystemLogبا نوعSubmitTelegramو تاخیر ۱۰ دقیقهای در صفsnailJob. - ارسال پیامک اطلاعرسانی موفقیت اتصال با جزئیات IP و زمان شمسی.
ورودیها (Inputs)
| پارامتر | نوع داده | الزامی | توضیح |
| personnel_id | string | بله | کد پرسنلی اپراتور فعال (status=1). |
| otp | integer | بله | رمز یکبار مصرف صادرشده از مرحلهی قبلی. |
| telegram | string | بله | شناسه یا شماره کاربری تلگرام کاربر برای اتصال. |
| branch | integer | خیر | شناسهی شعبه برای ارسال اطلاعرسانی از طریق سرویس پیامک. |
نمونه درخواست:
POST /api/auth/connect/submit
Content-Type: application/json
{
"personnel_id": "P00157",
"otp": "12345678",
"telegram": "@aliiranpour",
"branch": 1
}
خروجیها (Outputs)
تصال موفق
{
"status": true,
"time": 1731963561,
"message": "اتصال با موفقیت انجام شد."
}
رمز منقضی شده
{
"status": false,
"code": 1204,
"message": "رمز یکبار مصرف منقضی شده است."
}
رمز اشتباه یا نامعتبر
{
"status": false,
"code": 1205,
"message": "رمز یکبار مصرف وارد شده معتبر نمی باشد."
}
فرآیند بررسی زمان OTP
Carbon::now()->addMinutes(-15) <= $operator->otp_issuing
این شرط بررسی میکند که OTP مورد استفاده حداکثر ۱۵ دقیقه قبل صادر شده باشد. در صورت گذشتن بیش از ۱۵ دقیقه، سیستم خطای Expired Code با کد 1204 برمیگرداند.
بهروزرسانی جدول Operators
UPDATE operators
SET
telegram = {request.telegram},
otp = NULL
WHERE id = {operator.id};
ثبت رویداد در SystemLog
SystemLog::dispatch([
"type" => "SubmitTelegram",
"data" => null,
"goal" => $request->personnel_id,
"by" => $operator->id,
"agent" => $_SERVER['HTTP_USER_AGENT'],
"ip" => getIP(),
"datetime" => Carbon::now()
])->delay(now()->addMinutes(10))->onQueue('snailJob');
پیامک موفقیت اتصال
پیامک: اتصال شما به سرویس مورد نظر موفقیت آمیز بود. زمان: شنبه، ۲۷ آبان ۱۴۰۳ | ۱۲:۴۵:۱۰ 📍 IP: 192.168.1.24 🌐 example.domain
ارسال از طریق:
StaticController::sendNotification($operator->mobile, $tempBody, $request->get('branch'));
وابستگیها (Dependencies)
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\DB;
- use Carbon\Carbon;
- use Morilog\Jalali\Jalalian;
- use App\Jobs\SystemLog;
- use App\Http\Controllers\StaticController;
نمونه تست Postman
POST https://console.service01.ir/api/auth/connect/submit
Content-Type: application/json
{
"personnel_id": "P00442",
"otp": "55667788",
"telegram": "@operator_test"
}
تحلیل امنیتی
- OTP فقط ۱۵ دقیقه اعتبار دارد.
- پس از تأیید موفق، مقدار آن از پایگاهداده حذف میشود (null).
- اطلاعات IP و User Agent در
SystemLogذخیره میگردند. - ارسال پیامک از طریق سرویس داخلی شرکت انجام میشود و حاوی اطلاعات حساس نیست.
- وجود middleware های
domainAccessوipTrustمانع ارسال از منابع غیرمجاز میگردد.
پیوست نگهداری و توسعه بعدی
- اتصال به سرویس
Webhook Telegramبرای تأیید دوطرفه. - ثبت زمان دقیق اتصال در جدول پیشرفته audit_log.
- افزودن محدودیت IP برای کاربران خاص در مرحله Submit.
- نمایش هشدار برای IPهای ناشناس محیط کاربری.
`