# مسدودی ورود مشتریان و مخاطبان در Django Admin، پروفایل مشتری / مخاطب را با شماره موبایل جست‌وجو کنید. گزینهٔ «مسدود کردن ورود مشتری / مخاطب» را فعال کنید، «دلیل مسدودی ورود» را بنویسید و ذخیره کنید. ثبت مسدودی بدون دلیل در ادمین پذیرفته نمی‌شود. برای رفع مسدودی، همان گزینه را غیرفعال کنید و ذخیره کنید. این تنظیم ورود با موبایل و OTP در `/login/` و ورود با رمز عبور در `/login/password/` را کنترل می‌کند. دلیل با متن قرمز، فونت برنامه و کادر دارای `role="alert"` نمایش داده می‌شود. متن دلیل HTML اجرا نمی‌کند. تنظیمات مسدودی در فرم مشتری و فرم مدیریت مخاطبان کارشناسان قابل تغییر نیست. هر بار مسدود کردن، نسخهٔ دسترسی پروفایل را افزایش می‌دهد. نشست‌های ورود قدیمی در نخستین درخواست بعدی خارج می‌شوند و حتی پس از رفع مسدودی قابل استفاده نیستند؛ ورود مجدد لازم است. نشست‌های قبل از استقرار این قابلیت نسخهٔ صفر دارند و تا زمانی که حساب مسدود نشود معتبر می‌مانند. صفحات مشتری هر ۱۰ ثانیه وضعیت نشست را از `/login/access/` بررسی می‌کنند. در مرورگر باز و متصل، مسدودی بدون کلیک کاربر نیز باعث انتقال به صفحهٔ ورود و نمایش دلیل می‌شود. هنگام بازگشت به تب، باز شدن مجدد صفحه یا اتصال دوبارهٔ شبکه هم بررسی انجام می‌شود. کنترل سمت سرور به جاوااسکریپت وابسته نیست. حساب‌های `STAFF`، کاربران دارای `is_staff` و ابرکاربران از این محدودیت مستثنا هستند. لینک‌های امن با دسترسی محدود به تیکت یا پرداخت، نشست ورود کامل مشتری ایجاد نمی‌کنند و قواعد مستقل قبلی خود را حفظ می‌کنند. این قابلیت مقدار `is_active` حساب را تغییر نمی‌دهد. Migration مورد نیاز: `customers.0007_customerprofile_login_access_version_and_more`. برای استقرار با پایتون محیط پروژه، `manage.py migrate` را اجرا کنید و سرویس Django را دوباره راه‌اندازی کنید. تست‌ها در `tests/test_customer_login_access.py` و `tests/e2e/test_customer_login_access_e2e.py` قرار دارند. تست مرورگر از `live_server` و Chromium مدیریت‌شدهٔ پروژه استفاده می‌کند. ## نتیجهٔ بررسی - مجموعهٔ گستردهٔ ورود، نقش‌ها، مخاطبان، پرداخت‌ها، لینک‌های امن و انتقال داده: ۲۶۰ تست موفق. - آخرین اجرای پس از اصلاح ترتیب middlewareها: ۸۵ تست موفق، شامل `test_customer_login_access.py`، `test_views.py`، `test_role_workflow_regression.py`، تست‌های مرورگر مسدودی و `test_pwa_versioning.py`. - کنترل‌های Django، نبود migration جاافتاده، بررسی نحو Python و JavaScript و `git diff --check` برای فایل‌های این قابلیت موفق بودند. - صفحهٔ ورود، CSS قرمز نسخه‌دار و endpoint بدون کش نشست از سرور توسعه روی `0.0.0.0:8000` با پاسخ HTTP 200 بررسی شدند. Graphify برای ارتباط مفهومی پروفایل و دسترسی‌ها و Ripwire برای بررسی نمادها، اثر تغییر، محل استفاده و گیت‌های پس از تغییر اجرا شدند. `test-gate` فهرست تست‌های لازم را ارائه می‌کند و خود تست‌ها را اجرا نمی‌کند؛ تست‌های معرفی‌شده جداگانه اجرا و موفق شدند. `quality-delta` سبز نشد: هشدارهایی دربارهٔ callbackهای Django، تست‌های کشف‌شده توسط pytest و شباهت ساختاری توابع بازیابی رکورد باقی مانده است. برای نمونه، بازیابی `CustomerProfile` با بازیابی `DispatchResponseControl` شبیه تشخیص داده شد؛ این دو به مدل‌ها و قواعد مستقل مربوط‌اند و ادغام آن‌ها مناسب نیست. این هشدارهای تحلیل ایستا به معنی شکست تست‌های اجرایی نیستند و به‌عنوان نتیجهٔ سبز گیت کیفیت گزارش نشده‌اند.