#P1387
POST /api/auth/blocking
Route Info
| Method | Endpoint | Controller | Middleware | Purpose | تگ Swagger |
| POST | /api/auth/blocking | UserController@blocking | domainAccess, ipTrust | مسدودسازی موقت نشستهای کاربر و خروج اجباری از تمامی نشستها | tags={“Auth”} |
توضیح عملکرد (Function Logic)
این مسیر مسئول بستن تمامی نشستهای فعال کاربر است و با دریافت توکن مربوط به تعامل (مثلاً از بات تلگرام)، دسترسی کاربر را به مدت مشخص (پیشفرض ۱۵ دقیقه) مسدود میکند. عملیات در سه مرحله انجام میشود:
- دریافت توکن از پارامتر
tokenدر بدنه درخواست یا آدرس مسیر. - یافتن رکورد اپراتور با مقدار توکن «telegram:{token}» در ستون
operators.token. - بهروزرسانی ستونها:
blocked_up: تاریخ فعلی بهعلاوه مدت زمان مسدودسازی.token: مقدار null برای قطع دسترسی فعلی.
ورودیها (Inputs)
| پارامتر | نوع داده | الزامی | توضیح |
| token | string | بله | شناسه توکن یکتای ارتباط (نظیر توکن تلگرام) برای یافتن حساب اپراتور. |
| duration | integer | خیر | مدت زمان مسدودسازی به دقیقه. مقدار پیشفرض ۱۵ دقیقه است. |
نمونه درخواست:
POST /api/auth/blocking
Content-Type: application/json
{
“token”: “abc123”,
“duration”: 30
}
خروجیها (Outputs)
پاسخ موفق (HTTP 200)
{
“status”: true,
“time”: 1731956440,
“message”: “تمامی نشست ها با موفقیت خاتمه یافتند و کاربری شما بمدت 15 دقیقه مسدود گردید”
}
پاسخ خطا (Exception)
{
“status”: false,
“time”: 1731956440,
“message”: “23000 : SQLSTATE[23000]: Integrity constraint violation”,
“trace”: […]
}
منطق مسدودسازی نشست کاربر
با اجرای درخواست، تمامی نشستهای فعال متصل به همان توکن تلگرام منقضی میشوند. کاربر تا پایان بازه زمانی blocked_up قادر به ورود مجدد نخواهد بود. پس از انقضا، سیستم به صورت خودکار دسترسی را بازمیگرداند.
تغییرات دیتابیس (Database Update)
UPDATE operators
SET
blocked_up = NOW() + INTERVAL {duration or 15} MINUTE,
token = NULL
WHERE token = CONCAT(‘telegram:’, {token});
ستون
blocked_up زمان اتمام مسدودسازی را ذخیره میکند. توکن کاربر حذف میشود تا از سوی سایر نشستها غیرقابل استفاده شود.ریدایرکت سمت کلاینت
پس از بهروزرسانی موفقیتآمیز پایگاهداده، کاربر به دامنهی
https://airplus.app هدایت میشود. این هدایت فقط از سمت سرور انجام میشود (بدون پاسخ HTTP Redirect واقعی).مدیریت استثناها (Exceptions)
- حذف یا عدم وجود رکورد اپراتور با توکن دادهشده.
- خطاهای پایگاه داده یا اتصال.
- Exception ناشی از Carbon یا زمان اشتباه در duration.
وابستگیها (Dependencies)
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\DB;
- use Carbon\Carbon;
- use Exception;
تست Endpoint (Postman Example)
POST https://console.service01.ir/api/auth/blocking
Content-Type: application/json
{
“token”: “tg-ops-9902”,
“duration”: 20
}
تحلیل امنیتی
- برای جلوگیری از سوءاستفاده، مسیر فقط در دسترس دامنههای مجاز (domainAccess) و IPهای مجاز (ipTrust) است.
- داده حساس (token) نباید در URL یا logهای عمومی نمایش داده شود.
- پیشنهاد میشود بعد از اجرای موفق، session کاربران در Redis یا cache نیز پاک شود.
پیوست نگهداری و توسعه آینده
- افزودن پارامتر اختیاری
reasonبرای ثبت علت مسدودسازی مفید است. - قابلارتقا برای مدیریت انواع توکن (email, telegram, panel).
- ثبت گزارش رویداد در لاگ امنیتی مرکزی پیشنهاد میشود.
- در نسخه بعدی، بازگشت Redirect واقعی (HTTP 302) میتواند در هماهنگی کلاینت بهبود ایجاد کند.