diff --git a/conf/configs/common.py b/conf/configs/common.py index 103af53..62237ce 100644 --- a/conf/configs/common.py +++ b/conf/configs/common.py @@ -142,6 +142,7 @@ CSRF_COOKIE_SECURE = os.environ.get('MYPROJECT_CSRF_COOKIE_SECURE', 'True') == 'True' SESSION_COOKIE_SECURE = os.environ.get('MYPROJECT_SESSION_COOKIE_SECURE', 'True') == 'True' ALLOWED_HOSTS = os.environ.get('MYPROJECT_ALLOWED_HOSTS', '').split(' ') +CSRF_TRUSTED_ORIGINS = [PROJECT_HOST] # Logging diff --git a/conf/configs/dev.py b/conf/configs/dev.py index f9218fd..8b0632e 100644 --- a/conf/configs/dev.py +++ b/conf/configs/dev.py @@ -40,6 +40,16 @@ '127.0.0.1', ) +ALLOWED_HOSTS = common.ALLOWED_HOSTS + [ + '.ngrok.io', + '.ngrok.app' +] + +CSRF_TRUSTED_ORIGINS = common.CSRF_TRUSTED_ORIGINS + [ + 'https://*.ngrok.io', + 'https://*.ngrok.app' +] + # Logging LOGGING = { diff --git a/myproject/auth/services/authservice.py b/myproject/auth/services/authservice.py index 697b8ea..390de4d 100644 --- a/myproject/auth/services/authservice.py +++ b/myproject/auth/services/authservice.py @@ -7,6 +7,7 @@ import logging +from django.apps import apps from django.conf import settings from django.contrib.auth import authenticate, login, logout, get_user_model from django.urls import reverse @@ -30,7 +31,7 @@ def process_register(request, user): emailutils.send_multipart_email('email/register', { 'PROJECT_NAME': settings.PROJECT_NAME, - 'site_url': settings.PROJECT_HOST, + 'site_url': apps.get_app_config('common').PROJECT_HOST, 'login_url': reverse('login'), }, f'Welcome to {settings.PROJECT_NAME}', [user.email], @@ -109,7 +110,7 @@ def process_forgot_password(request): emailutils.send_multipart_email('email/forgot', { 'password': password, - 'site_url': settings.PROJECT_HOST, + 'site_url': apps.get_app_config('common').PROJECT_HOST, 'settings_url': reverse('settings') }, 'Your Password Has Been Reset', [email]) diff --git a/myproject/common/apps.py b/myproject/common/apps.py index e97a779..ff5cff9 100644 --- a/myproject/common/apps.py +++ b/myproject/common/apps.py @@ -13,6 +13,8 @@ class CommonConfig(AppConfig): name = 'myproject.common' verbose_name = 'Common' + PROJECT_HOST = settings.PROJECT_HOST + def ready(self): if settings.USE_NGROK and os.environ.get("NGROK_AUTHTOKEN"): # pyngrok will only be installed, and should only ever be initialized, in a dev environment @@ -28,7 +30,7 @@ def ready(self): print(f"ngrok tunnel \"{public_url}\" -> \"http://127.0.0.1:{port}\"") # Update any base URLs or webhooks to use the public ngrok URL - settings.PROJECT_HOST = public_url + self.PROJECT_HOST = public_url CommonConfig.init_webhooks(public_url) @staticmethod