From c82a69c3cece8ddcdcb2645a4dd8a0c1e9a75b5a Mon Sep 17 00:00:00 2001 From: cursor-agent Date: Wed, 25 Feb 2026 15:10:42 +0000 Subject: [PATCH] =?UTF-8?q?Fix:=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20CSRF=5FTRUSTED=5FORIGINS=20=D0=B4=D0=BB=D1=8F=20?= =?UTF-8?q?=D0=B2=D1=85=D0=BE=D0=B4=D0=B0=20=D0=B7=D0=B0=20Nginx=20(403)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- .env.example | 3 +++ HISTORY.md | 10 ++++++++++ app/config/settings.py | 9 +++++++++ 3 files changed, 22 insertions(+) diff --git a/.env.example b/.env.example index e581ca6..3667262 100644 --- a/.env.example +++ b/.env.example @@ -14,3 +14,6 @@ DB_PORT=5432 DB_NAME=watersurf_erp DB_USER=watersurf_erp DB_PASSWORD=CHANGE_ME_POSTGRES_PASSWORD + +# Опционально: дополнительные доверенные источники для CSRF (через запятую) +# CSRF_TRUSTED_ORIGINS=https://erp.gen7x.ru,https://other.example.com diff --git a/HISTORY.md b/HISTORY.md index 319b09d..9bf55b6 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,5 +1,15 @@ # История изменений ERP WaterSurf +## 2025-02-25 15:25 UTC – Исправление 403 CSRF при входе + +**Проблема**: При первой авторизации под администратором по https://erp.gen7x.ru возникала ошибка 403 (ошибка проверки CSRF, запрос отклонён). + +**Решение**: Добавлена настройка `CSRF_TRUSTED_ORIGINS` в `config/settings.py`: указаны `https://erp.gen7x.ru`, а также localhost/127.0.0.1 для локальной отладки. При работе за Nginx Django проверяет заголовок Origin/Referer; без доверенного источника запросы с формы логина отклонялись. + +**Изменения**: `app/config/settings.py` — список CSRF_TRUSTED_ORIGINS; опциональная переменная `CSRF_TRUSTED_ORIGINS` в `.env.example`. + +--- + ## 2025-02-25 15:10 UTC – Администратор и SSH для Git **Проблема**: Требовалось создать первого администратора системы и настроить SSH для самостоятельного push в Gitea. diff --git a/app/config/settings.py b/app/config/settings.py index 29f3514..ec08f33 100644 --- a/app/config/settings.py +++ b/app/config/settings.py @@ -10,6 +10,15 @@ SECRET_KEY = os.environ.get("SECRET_KEY", "django-insecure-change-me") DEBUG = os.environ.get("DEBUG", "false").lower() in ("1", "true", "yes") ALLOWED_HOSTS = os.environ.get("ALLOWED_HOSTS", "localhost,127.0.0.1").split(",") +# За прокси (Nginx): иначе при отправке формы логина — 403 CSRF +CSRF_TRUSTED_ORIGINS = [ + "https://erp.gen7x.ru", + "http://localhost:8010", + "http://127.0.0.1:8010", +] +if os.environ.get("CSRF_TRUSTED_ORIGINS"): + CSRF_TRUSTED_ORIGINS = os.environ.get("CSRF_TRUSTED_ORIGINS").split(",") + INSTALLED_APPS = [ "django.contrib.admin", "django.contrib.auth",