Skip to main content
#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)

این مسیر مسئول بستن تمامی نشست‌های فعال کاربر است و با دریافت توکن مربوط به تعامل (مثلاً از بات تلگرام)، دسترسی کاربر را به مدت مشخص (پیش‌فرض ۱۵ دقیقه) مسدود می‌کند. عملیات در سه مرحله انجام می‌شود:
  1. دریافت توکن از پارامتر token در بدنه درخواست یا آدرس مسیر.
  2. یافتن رکورد اپراتور با مقدار توکن «telegram:{token}» در ستون operators.token.
  3. به‌روزرسانی ستون‌ها:
    • blocked_up: تاریخ فعلی به‌علاوه مدت زمان مسدودسازی.
    • token: مقدار null برای قطع دسترسی فعلی.
در نهایت پاسخ خروجی شامل پیام موفقیت و زمان فعلی (epoch) است. در صورت بروز استثنا، جزئیات خطا همراه با trace بازگردانده می‌شود.

ورودی‌ها (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) می‌تواند در هماهنگی کلاینت بهبود ایجاد کند.