UNLOCK_ALL_PHONES: tester accounts see every island unlocked (map and server rule)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-12 11:12:13 +03:30
parent 33478179e2
commit 3187f69714
3 changed files with 52 additions and 0 deletions

View File

@@ -806,6 +806,28 @@ def _parse_test_login_phones(raw: str) -> dict[str, str]:
TEST_LOGIN_PHONES = _parse_test_login_phones(os.environ.get('TEST_LOGIN_PHONES', ''))
# شماره‌های آزمونگر: برای این کاربرها هیچ جزیره‌ای روی نقشه قفل نیست (قفلِ «جزیره‌ی قبلی را تمام کن»).
# فقط قفلِ ترتیب را برمی‌دارد؛ اشتراکِ فصل‌ها، قلب و سقفِ دستیار همان قواعدِ عادی‌اند و برای آزمونگر
# با یک ردیفِ Subscription در ادمین داده می‌شود. چرا env و نه فیلدِ کاربر: تیمِ تست عوض می‌شود و
# نباید برای هر نفر migration یا دسترسیِ ادمین لازم باشد؛ چرا نه DEBUG: روی سرورِ واقعی لازم است.
# شماره‌ی نامعتبر راهاندازی را می‌شکند (بی‌صدا نادیده گرفته نمی‌شود).
def _parse_unlock_all_phones(raw: str) -> frozenset:
from accounts.phone import normalize_phone
phones = set()
for item in raw.split(','):
item = item.strip()
if not item:
continue
normalized = normalize_phone(item)
if normalized is None:
raise ImproperlyConfigured(f'UNLOCK_ALL_PHONES شماره‌ی موبایلِ ایران نیست: «{item}».')
phones.add(normalized)
return frozenset(phones)
UNLOCK_ALL_PHONES = _parse_unlock_all_phones(os.environ.get('UNLOCK_ALL_PHONES', ''))
# -----------------------------------------------------------------------
# OTP SMS delivery (accounts/services.py: send_otp_sms)
# -----------------------------------------------------------------------