Security review: staff admin lockdown, unicode-safe login/phone/grade inputs, demo guest not upgradable, home cache not floodable
- accounts admin: phone/is_guest read-only for non-superusers, device_id filter lookups refused, auth.User/Group admin writable only by superusers - campaigns: delivery log needs view permission - phone/OTP/birth date: any Unicode digit normalised or rejected with 400; unknown gradeId is 400 - shared demo guest is never turned into a person's account by logging in - /api/home with unknown gradeId is no longer cached (LocMemCache flood reset throttle counters) - /api/progress/nodes: one query, huge unit is 400 - BazaarCredential token filter lookups refused Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -33,8 +33,8 @@ class MessageCampaignAdmin(admin.ModelAdmin):
|
||||
@admin.register(CampaignDelivery)
|
||||
class CampaignDeliveryAdmin(admin.ModelAdmin):
|
||||
"""
|
||||
نمایشِ read-only: لیست و صفحهی جزئیاتِ هر رکورد همیشه قابلِ
|
||||
مشاهدهست (has_view_permission صریحاً True)، ولی هیچ راهی برای
|
||||
نمایشِ read-only: لیست و صفحهی جزئیات فقط با اجازهی view_campaigndelivery
|
||||
(رفتارِ پیشفرضِ جنگو)، و هیچ راهی برای
|
||||
افزودن، ویرایش یا حذفِ رکورد از ادمین وجود نداره تا وضعیتِ تحویل
|
||||
(که فقط باید توسطِ campaigns.services.execute_campaign آپدیت بشه)
|
||||
از ادمین دستکاری نشه.
|
||||
@@ -46,13 +46,6 @@ class CampaignDeliveryAdmin(admin.ModelAdmin):
|
||||
fields = ('campaign', 'user_id', 'channel', 'status', 'error_message', 'created_at')
|
||||
readonly_fields = fields
|
||||
|
||||
def has_view_permission(self, request, obj=None):
|
||||
# صریحاً True: بدونِ override، fallbackِ پیشفرضِ Django به کاربرِ
|
||||
# staffِ بدونِ پرمیشنِ view/change حتی اجازهی دیدنِ این صفحهی
|
||||
# read-only رو هم نمیده — یعنی مدل عملاً غیرقابلِدسترس میشه، نه
|
||||
# فقط view-only.
|
||||
return True
|
||||
|
||||
def has_add_permission(self, request):
|
||||
return False
|
||||
|
||||
|
||||
Reference in New Issue
Block a user