Remove guest login: every user registers with a phone number
POST /api/auth/session is gone (404). Existing is_guest rows keep refresh and upgrade-by-phone until the demo/guest rows are purged; the code that serves them is listed in docs/security-before-production.md §10. Tests that used the endpoint as a fixture now use accounts/testing.guest_session. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -481,7 +481,6 @@ REST_FRAMEWORK = {
|
||||
# در دیتابیس)؛ اینها فقط جلوی یک ماشینِ تنها را میگیرند.
|
||||
'otp_request': os.environ.get('OTP_REQUEST_IP_RATE', '20/hour'),
|
||||
'otp_login': os.environ.get('OTP_LOGIN_IP_RATE', '30/hour'),
|
||||
'guest_session': os.environ.get('GUEST_SESSION_IP_RATE', '60/hour'),
|
||||
'bazaar_verify': '10/hour',
|
||||
'bazaar_oauth': '20/hour',
|
||||
'ai_ask': '20/hour',
|
||||
@@ -537,21 +536,10 @@ SPECTACULAR_SETTINGS = {
|
||||
'Authorization: Bearer <token>\n'
|
||||
'```\n'
|
||||
'\n'
|
||||
'دو راه برای گرفتنِ توکن هست:\n'
|
||||
'\n'
|
||||
'| مسیر | کاربرد |\n'
|
||||
'|---|---|\n'
|
||||
'| `POST /api/auth/session` | ورودِ مهمان با `deviceId` — بدونِ شماره، بلافاصله |\n'
|
||||
'| `POST /api/auth/otp/request` + `POST /api/auth/login` | ورودِ کامل با شمارهی موبایل |\n'
|
||||
'\n'
|
||||
'کاربرِ مهمان میتواند بعداً شمارهاش را وصل کند و همان حساب را نگه '
|
||||
'دارد. توکنِ دسترسی یک ساعت اعتبار دارد؛ با `POST /api/auth/refresh` '
|
||||
'تازهاش کنید.\n'
|
||||
'\n'
|
||||
'`deviceId` هر رشتهای میتواند باشد و هر مقدارِ تازه یک حسابِ جدا '
|
||||
'میسازد، پس برای تست لازم نیست منتظرِ چیزی بمانید. چند `deviceId` '
|
||||
'از پیشآماده هم برای دیدنِ صفحههای دادهدار وجود دارد — از تیمِ '
|
||||
'بکاند بخواهید.\n'
|
||||
'توکن را فقط با شمارهی موبایل میگیرید: `POST /api/auth/otp/request` '
|
||||
'و بعد `POST /api/auth/login`. ورودِ مهمان نداریم؛ هر کاربر حداقل ثبتنامِ '
|
||||
'اولیه با شماره دارد. توکنِ دسترسی یک ساعت اعتبار دارد؛ با '
|
||||
'`POST /api/auth/refresh` تازهاش کنید.\n'
|
||||
'\n'
|
||||
'**در همین صفحه:** روی **Authorize** بزنید و *فقط خودِ توکن* را وارد '
|
||||
'کنید — کلمهی `Bearer` را Swagger خودش اضافه میکند.\n'
|
||||
|
||||
@@ -202,18 +202,18 @@ class APIRequestLoggingMiddlewareTests(TestCase):
|
||||
def test_anonymous_api_request_is_logged_with_null_user_id(self):
|
||||
with self.assertLogs('config.middleware', level='INFO') as captured:
|
||||
response = self.client.post(
|
||||
'/api/auth/session',
|
||||
{'type': 'guest', 'deviceId': 'device-mw-log-anon-1'},
|
||||
'/api/auth/refresh',
|
||||
{'refreshToken': 'not-a-real-token'},
|
||||
format='json',
|
||||
)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(response.status_code, 401)
|
||||
self.assertEqual(len(captured.records), 1)
|
||||
message = captured.records[0].getMessage()
|
||||
|
||||
self.assertIn('method=POST', message)
|
||||
self.assertIn('path=/api/auth/session', message)
|
||||
self.assertIn('status=200', message)
|
||||
self.assertIn('path=/api/auth/refresh', message)
|
||||
self.assertIn('status=401', message)
|
||||
self.assertIn('user_id=None', message)
|
||||
|
||||
def test_non_api_request_is_not_logged(self):
|
||||
|
||||
Reference in New Issue
Block a user