Files
customerTicket/docs/CUSTOMER_LOGIN_ACCESS.md
T
2026-10-14 12:27:55 +03:30

58 lines
4.9 KiB
Markdown

# مسدودی ورود مشتریان و مخاطبان
در 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` شبیه تشخیص داده شد؛
این دو به مدل‌ها و قواعد مستقل مربوط‌اند و ادغام آن‌ها مناسب نیست.
این هشدارهای تحلیل ایستا به معنی شکست تست‌های اجرایی نیستند و به‌عنوان
نتیجهٔ سبز گیت کیفیت گزارش نشده‌اند.